Android 依赖多次包含,导致应用达到 dex 限制

标签 android gradle android-multidex

我有一个结构如下的 android 应用程序:

主应用程序/

dependencies {
    compile project(':lib-A')
    compile project(':lib-B')
}

库-A/
dependencies {
    compile 'Large3PLib'
    compile 'Other-libs'
}

库-B/
dependencies {
    compile 'Large3PLib'
}

当我编译时,我达到了多 dex 限制,我看到 main-app、lib-A 和 lib-B 都有非常大的 dex 计数,因为它们都包括“Large3PLib”。有没有办法告诉 gradle 只包含一次“Large3PLib”以减少我的 dex 计数?

笔记:
  • 我启用了 proguard
  • 我尝试将 main-app、lib-A 和 lib-B 中的代码组合成一个大模块。这让我回到了 multidex 限制之下,但我不喜欢这个解决方案,因为现在我的代码不再有组织。
  • 最佳答案

    您可以编辑lib-Alib-B将依赖项标记为“已提供”:

    provided 'Large3PLib'
    

    这意味着它不会包含在生成的 jar 或 aar 中。但是你必须将它添加到根项目中:
    dependencies {
        compile 'Large3PLib'
        compile project(':lib-A')
        compile project(':lib-B')
    }
    

    关于Android 依赖多次包含,导致应用达到 dex 限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36435239/

    相关文章:

    android - 错误 :Unexpected lock protocol found in lock file. 预期 3,找到 0

    android - 错误 :Cannot fit requested classes in a single dex file. 尝试提供 main-dex 列表。 # 方法:72477 > 65536

    android - 获取 MultiDex 错误,即使在设置 Min SDK 21 之后

    android - 在 Android Studio 中使用 MultiDex 功能时,有没有办法限制主 dex 文件中的方法数量

    java - 不使用 TextView 将 HTML 转换为字符串

    android - 如何在 React Native 中创建自定义底部标签栏?

    android - createBitmap(int width, int height, Bitmap.Config config) 如何填充Bitmap?

    java - 在 Windows 10 上构建 SonarQube 时出现问题

    android - 日历给我错误的小时和分钟

    gradle - Gradle:根据环境或其他属性,将插件子任务标记为不可运行