当我在模拟器中运行应用程序时,它可以工作,但是当我想生成签名的APK时,我收到以下错误消息:
[错误:任务执行失败 ':应用程序:transformClassesWithDexForRelease'。 > com.android.build.api.transform.TransformException:com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexIndexOverflowException:方法ID不在[0, 0xffff]:65536]
此错误消息的含义是什么,有没有办法解决此问题?
答案 0 :(得分:1)
DexIndexOverflowException:
溢出意味着已达到限制。
您的dex
文件大小已达到限制,即64K,因此您需要在项目follow the official link of docs
Multidex
支持
或
在build.gradle下面添加以启用multidex支持
defaultConfig {
...
// Enabling multidex support.
multiDexEnabled true
}
在清单应用程序代码中设置应用程序名称multidex支持
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.android.multidex.myapplication">
<application
...
android:name="android.support.multidex.MultiDexApplication">
...
</application>
</manifest>
如果你有一个应用程序类,那么在super.onCreate
MultiDex.install(getTargetContext());
super.onCreate(arguments);
一些技巧可能很方便:删除不需要的依赖项,文件并使用特定的Google Play依赖项(如gms等),而不是将其作为一个整体添加,另外您可以使用proguard规则的最佳做法follow the link for an example