我创建了一个android库模块,并将其托管在我的Github上。但是,该库与Android Studio项目的图标和版本冲突。当附加到我的Android项目gradle时,会显示以下错误:
清单合并失败:属性元数据#android.support.VERSION@value值=(25.3.1)来自[com.android.support: cardview v7:25.3.1]Androidanifest.xml:24: 9-31也存在于[com.android.support: appcompat-v7:26.0.0-alpha1]Android/>:9-38值=(26.0.0-alpha1)。建议:在Androidanifest.xml:22: 5-24:34添加“工具:替换=”Android:值“到元素中覆盖。
和
清单合并失败:属性application@icon值=(@drawable/ic_launcher)来自AndroidManifest。xml:26:9-45也出现在[com.github.dinukapj:ATM EditText:1.2]AndroidManifest上。xml:13:9-43 value=(@mipmap/ic_launcher)。建议:在AndroidManifest的元素中添加'tools:replace=“android:icon”'。xml:23:5-305:19来覆盖。
我知道,通过在清单的应用程序标记中添加tools:replace=“android:value”和
tools:replace=“android:icon”
可以解决这个问题,但由于它是一个库,我不想强迫开发人员对每个项目都这样做。
我的图书馆:https://github.com/dinukapj/ATM-EditText/
有没有办法从我的库项目中解决此冲突?
您可以添加一个wiki,该wiki表示它应该排除库的AppCompat版本,类似这样的内容。
compile (project(":ATM-EditText")){
exclude module: 'appcompat-v7'
exclude group: 'com.android.support'
}
这不会要求用户在清单中添加工具属性。
您使用的是libprojectsdkversion25,而主项目版本是26,因此相互冲突。尝试使用25更改主项目的版本,这将解决您的问题。
我处理库模块中框架兼容性问题的首选方法是根据给定版本编译库(在您的例子中是Support Lib v25),但不在编译输出中包含库。
通常依赖关系
将包括:
compile 'com.android.support:appcompat-v7:25.3.1'
这一行有3个功能:
第二点是冲突可能发生的地方。
我的首选方法是使用提供的关键字将外部
依赖项
包含到库模块中,如下所示:
provided 'com.android.support:appcompat-v7:25.3.1'
这与上述略有不同:
它允许你的代码使用类和方法(如上)
- 它不编译类到库输出AAR文件
- 它告诉库的用户/开发人员必须在应用程序的构建gradle文件中提供类
- 这意味着任何使用你的库的人都不能访问类,除非在应用程序的build.gradle中添加依赖项
很好的一点是,使用您的库的开发人员可以依赖于他们想要的外部框架的任何(兼容)版本,例如,在您的情况下,他们将在其应用程序的构建中包含以下内容。格拉德尔:
compile 'com.android.support:appcompat-v7:26.0.0'
一些额外的链接:
Android开发者记录构建依赖关系
这种技术最适合于在任何情况下都很可能包含在应用程序中的库,例如Android Support libs、GSON等
总结如下:
我们根据1个版本构建库
- 用户必须在其项目中提供依赖项
您的用户可以自由使用他们想要的任何库版本。
我正在开发一个应用程序和一个库(Android模块)。它们在不交互时没有问题:在导入库后,Android Studio搞乱了设置,我无法恢复。 和其他98个类似的:都与主题问题有关。 还有其他消息引用值、,例如:
我的maven构建很好,能够从CLI运行groovy。但是,如果我试图在IntelliJ Idea(version15 community edition)中运行我的groovy类,它会给我以下错误。 这是我在系统中安装的groovy版本。 如果有人知道这件事,请告诉我。
创建和配置你的版本库 在“版本库开发策略”一节,我们我们看了一些在创建和配置Subversion版本库之前需要做的重要决定,现在我们最终要干活了!在本小节,我们要看看如何真实的创建一个Subversion版本库,并配置它在特定版本库事件执行自定义动作。 创建版本库 创建一个 Subversion 版本库出乎寻常的简单。 Subversion 提供的svnadmin 工具,有一个执行这个功能的子命令
这是我的设置:我有一个Android库,在导出时创建一个ar,我有一个Android应用程序,使用库作为模块(这是导入本地arr文件的唯一方法)。 要将aar文件作为模块导入我的Android应用程序中,我单击- 我经常更新我的库,因为我目前正在开发它,我想经常测试它。问题是我不知道如何更新我的Android应用程序项目中的模块... 我现在所做的是,我在我的Android库项目中发出一个来创建新
问题内容: 我正在尝试制作一个从串行端口读取数据的电子应用程序(https://electron.atom.io/)。我是Web技术的新手,我知道一些javascript,但是我是c ++专家。 所以我从github上拉了他们的快速入门, 有了这个容易的工作,我试图用 安装了该文件并通过测试文件正常运行后,我尝试将两者结合起来并放入index.html文件中。有了这个我得到这个错误: 任何想法如何
我目前正在通过提供的迁移指南将我们的项目迁移到新的gradle插件(3.0.0): https://developer.android.com/studio/preview/features/new-android-plugin-migration.html 在我们的Android项目中,我们有一个库模块和两个应用程序模块。目前的库模块没有味道,只有调试功能 我发现库模块的构建类型必须与应用程序模