gpt4 book ai didi

android - 多个R.java中的冗余资源引用导致Dax Index OverflowException

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:09:38 28 4
gpt4 key购买 nike

我有多个库项目,它们都依赖于支持库。我的应用程序依赖于这些多个库项目。每个库项目都在其 R.java 文件中包含支持库资源的引用。由于冗余,这会增加字段 ID 计数。

我的应用获得了

DexIndexOverflowException: field ID not in [0, 0xffff]: 65536

因为这个冗余的 R.java 引用。

因此,我的应用程序有 47k 个方法和 65k 个字段 ID。

编辑:

我不会使用 multi-dex,它不能解决我的问题。我想去除多余的字段 ID。

问题不在于如何解决该问题,而在于如何摆脱冗余字段 ID。使用 multi-dex 不会删除多余的字段 ID。

最佳答案

就像@intellij-amiya 的回答一样,使用multidexproguard 将解决您的问题,我个人推荐这样做。

如果您不想遵循该方法,您可以手动排除重复的依赖项。

在您的终端中执行以下命令以查找重复的依赖项。

./gradlew :app:dependencies --configuration compile

或者如果你在 Windows 上,

gradlew.bat :app:dependencies --configuration compile

:app 更改为您的项目名称。

让我们假设你的 gradle 依赖是这样的:

compile 'com.android.support:support-compat:26.+'
compile 'com.android.support:support-fragment:26.+'

你会得到如下输出:

+--- com.android.support:support-compat:26.+ -> 26.0.0-alpha1
| \--- com.android.support:support-annotations:26.0.0-alpha1
\--- com.android.support:support-fragment:26.+ -> 26.0.0-alpha1
+--- com.android.support:support-compat:26.0.0-alpha1 (*)
+--- com.android.support:support-core-ui:26.0.0-alpha1
| +--- com.android.support:support-annotations:26.0.0-alpha1
| \--- com.android.support:support-compat:26.0.0-alpha1 (*)
\--- com.android.support:support-core-utils:26.0.0-alpha1
+--- com.android.support:support-annotations:26.0.0-alpha1
\--- com.android.support:support-compat:26.0.0-alpha1 (*)

并且可以看到用(*)标记的依赖,可以排除这些依赖。你可以看到 support-compat 是重复的,并且通过这样的编辑来排除它:

compile ('com.android.support:support-fragment:26.+') {
exclude module: 'support-compat'
}

重复此操作直到计数低于 64k

现在最难的部分还在。

根据我的经验,排除某些依赖项可能会导致构建失败、运行时异常等。因此您需要检查您的应用程序是否正常运行。

希望这对您有所帮助。

关于android - 多个R.java中的冗余资源引用导致Dax Index OverflowException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46805025/

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