gpt4 book ai didi

android - 新创建的 Android 库模块与图标和版本冲突

转载 作者:行者123 更新时间:2023-11-29 19:11:30 25 4
gpt4 key购买 nike

我创建了一个 android 库模块并将其托管在我的 Github 上。但是,该库与 Android Studio 项目的图标和版本冲突。附加到我的Android项目的gradle时,显示以下错误:

Manifest merger failed : Attribute meta-data#android.support.VERSION@value value=(25.3.1) from [com.android.support:cardview-v7:25.3.1] AndroidManifest.xml:24:9-31 is also present at [com.android.support:appcompat-v7:26.0.0-alpha1] AndroidManifest.xml:27:9-38 value=(26.0.0-alpha1). Suggestion: add 'tools:replace="android:value"' to element at AndroidManifest.xml:22:5-24:34 to override.

Manifest merger failed : Attribute application@icon value=(@drawable/ic_launcher) from AndroidManifest.xml:26:9-45 is also present at [com.github.dinukapj:ATM-EditText:1.2] AndroidManifest.xml:13:9-43 value=(@mipmap/ic_launcher). Suggestion: add 'tools:replace="android:icon"' to element at AndroidManifest.xml:23:5-305:19 to override.

我知道通过将 tools:replace="android:value"tools:replace="android:icon" 添加到 list 的应用程序标签中可以解决这个问题,但由于它是一个库,我不想强​​迫开发人员为每个项目都这样做。

我的图书馆:https://github.com/dinukapj/ATM-EditText/

有没有办法从我的图书馆项目中解决这个冲突?

最佳答案

我处理库模块中框架兼容性问题的首选方法是针对给定版本编译您的库(在您的情况下支持 Lib v25)但不包含库 在编译输出中。


通常 dependencies 会包括:

compile 'com.android.support:appcompat-v7:25.3.1'

这一行做了三件事:

  • 它允许您的代码使用该库中的类和方法
  • 它将那些类和方法编译到库输出AAR文件中
  • 这意味着任何使用您的库的人都可以访问它们,而无需在应用的 build.gradle 文件中声明它们

第二点是冲突可能出现的地方。


我的首选方法是使用 provided 关键字将外部 dependencies 包含到库模块中,如下所示:

provided 'com.android.support:appcompat-v7:25.3.1'

这与上面的略有不同:

  • 它允许您的代码使用类和方法(如上所述)
  • 不会将类编译到库输出AAR文件中
  • 它告诉库的用户/开发人员必须在应用程序的构建 gradle 文件中提供这些类
  • 这意味着如果不在应用程序的 build.gradle 中自行添加依赖项,使用您的库的任何人都无法访问这些类

这样做的好处是,使用您的库的开发人员可以依赖他们想要的外部框架的任何(兼容)版本,例如在您的情况下,他们会在其应用程序的 build.gradle 中包含以下内容:

compile 'com.android.support:appcompat-v7:26.0.0'

一些额外的链接:


此技术最适合在任何情况下都极有可能包含在应用程序中的库,例如Android 支持库、GSON 等

总结一下:

  • 我们针对 1 个版本构建库
  • 用户必须在他们的项目中提供依赖

然后您的用户可以自由使用他们想要的任何库版本。

关于android - 新创建的 Android 库模块与图标和版本冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45135553/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com