Unity原生开发:Unity编译Android超过65536的解决方法

发布于 2021-07-28  320 次阅读


Unity原生开发:Unity编译Android超过65536的解决方法

Android开发中有对APK的方法数量做限制,不能超过65536.如果超过了该数目,会遇到如下异常:
Conversion to Dalvikformat failed:Unable toexecute dex: method ID not in [0, 0xffff]: 65536,而网上能查到的解决方法都是针对Android的,经过各种资料结合终于把问题解决了。

解决方案如下:

1、在Android工程的build.gradle中启用MultiDex并包含MultiDex支持

defaultConfig 
{
    multiDexEnabled true
}

dependencies 
{ 
    compile 'com.android.support:multidex:1.0.1' 
}

然后执行一下 Sync Now,目的是让配置生效 。

2、在Android工程的application中重写一下attachBaseContext

@Overrideprotected   
void attachBaseContext(Context base) 
{                  
    super.attachBaseContext(base);                  
    MultiDex.install(this); 
}

3、在Unity的Android打包设置(File->Build Settings->Player Settings)中勾选Custom Gradle Template这时候会在Plugins/Android文件夹下出现mainTemplate.gradle在下面这些地方添加代码

defaultConfig 
{
    multiDexEnabled true
    target SdkVersion 
    **TARGETSDKVERSION**
}

dependencies
{ 
    compile 'com.android.support:multidex:1.0.1'
}

在构建流程中出现这种问题,根据提示我们大概明白这是方法数过大导致的,而这些方法是存在于编译后的.class文件中的,而.class最后要存在于dex文件中,单个dex的方法或者字段数量不能超过65536所以会报错。完成以上配置重新打包生成的jar包就不会放在一个.class文件里面了,而是分成很多个.class文件根据生成的清单进行引用。


"You got to put the past behind you before you can move on. "