有人可以解释下面引用的这个简短段落中Android工具团队的含义吗?
具体做法是: 什么是“somelib.jar”?
他们是否建议我创建一个只有依赖项的新子项目,将其命名为“projectA”,然后让项目发布“projectA.jar”? (使用artifacts.add(“default”,file('projectA.jar'))
我想要的行为是发布“projectA.jar”及其依赖项,而不会导致任何“多个dex文件定义”错误。
引用:
如果您有更多想要使用的本地jar或aar库 比一个项目,你不能只是直接引用它作为本地 依赖。这是因为android插件会抱怨它 dexing项目及其所有内容时,两次查找相同的jar文件 依赖。 (注意,现在你实际上不能使用本地aar 文件,即使你只引用一次)。
解决此问题的一种方法是将工件部署在存储库中。而 这是可能的,由于开销可能不方便 管理这样的存储库。
另一种选择是创建一个新的Gradle子项目,并进行此项 project的已发布工件是您想要的jar或aar文件 重用。然后你可以简单地让其他Gradle子项目依赖 这个新的子项目。
在这个新的子项目中,只需创建一个build.gradle即可 以下内容:
configurations.create(“default”)
artifacts.add(“default”,file('somelib.jar'))
答案 0 :(得分:0)
在我看来,这主要用于库模块。
如果一个库模块依赖于somelib.jar
,则依赖于库模块的另一个应用程序模块也依赖于somelib.jar
,然后"多个dex文件定义"可能会出现错误。
作为"提示"比如,问题可以通过创建一个简单的模块来解决,该模块无法发布*.jar
或*.aar
和仅用于依赖其他模块,只有依赖*.jar
。这样,库模块的*.aar
输出将不包含somelib.jar
。