Android 多次包含依赖项,导致应用达到 dex 限制
Android dependency included multiple times, causes app to reach dex limit
我有一个 android 应用程序结构如下:
主应用/
dependencies {
compile project(':lib-A')
compile project(':lib-B')
}
lib-A/
dependencies {
compile 'Large3PLib'
compile 'Other-libs'
}
lib-B/
dependencies {
compile 'Large3PLib'
}
当我编译时,我达到了多 dex 限制,我看到主应用程序、lib-A 和 lib-B 都有非常大的 dex 计数,因为它们都包括 'Large3PLib'。有什么方法可以告诉 gradle 只包含 'Large3PLib' 一次以减少我的 dex 计数?
备注:
- 我启用了混淆器
- 我试过将 main-app、lib-A 和 lib-B 中的代码合并到一个大模块中。这让我回到了 multidex 限制之下,但我不喜欢这个解决方案,因为现在我的代码不再有组织。
您可以编辑 lib-A
和 lib-B
以将依赖项标记为 'provided':
provided 'Large3PLib'
这意味着它不会包含在生成的 jar 或 aar 中。但是你必须将它添加到根项目中:
dependencies {
compile 'Large3PLib'
compile project(':lib-A')
compile project(':lib-B')
}
我有一个 android 应用程序结构如下:
主应用/
dependencies {
compile project(':lib-A')
compile project(':lib-B')
}
lib-A/
dependencies {
compile 'Large3PLib'
compile 'Other-libs'
}
lib-B/
dependencies {
compile 'Large3PLib'
}
当我编译时,我达到了多 dex 限制,我看到主应用程序、lib-A 和 lib-B 都有非常大的 dex 计数,因为它们都包括 'Large3PLib'。有什么方法可以告诉 gradle 只包含 'Large3PLib' 一次以减少我的 dex 计数?
备注:
- 我启用了混淆器
- 我试过将 main-app、lib-A 和 lib-B 中的代码合并到一个大模块中。这让我回到了 multidex 限制之下,但我不喜欢这个解决方案,因为现在我的代码不再有组织。
您可以编辑 lib-A
和 lib-B
以将依赖项标记为 'provided':
provided 'Large3PLib'
这意味着它不会包含在生成的 jar 或 aar 中。但是你必须将它添加到根项目中:
dependencies {
compile 'Large3PLib'
compile project(':lib-A')
compile project(':lib-B')
}