Unity导出 Android Apk 非常方便,但当游戏使用大量的第三方 SDK 时,导出 APK 就很容易达到 Android 方法数 65536 的限制
开发环境
- Unity 2018.4.9,使用
Gradle
构建 Android Project/Apk
注:Unity 5.x 开始支持使用 aar 文件,Unity 5.4 开始支持 Gradle - Android
minSdkVersion
16
MultiDex 使用
MultiDex
的使用需要修改 Gradle 配置文件,Unity 开启 Gradle build 后 Gradle 配置文件路径 *Assets/Plugins/Android/mainTemplate.gradle*
开启
MultiDex
支持1 2 3 4 5 6 7 8 9
android { defaultConfig { ... minSdkVersion 21 targetSdkVersion 28 multiDexEnabled true } ... }
特殊处理
Android 5.0(21) 之前平台版本使用
Dalvik
运行时来执行应用代码,Dalvik
将应用限制每个Apk只能使用一个classes.dex
字节码文件。Android 5.0(21) 以及更高的版本使用ART的运行时,它本身支持从Apk文件加载多个dex文件。
当 Android
minSdkVersion
版本低于 Android 5(21),需要做如下处理:添加依赖
1 2 3
dependencies { implementation 'androidx.multidex:multidex:2.0.1' }
如果项目未使用
AndroidX
, 需要改为添加1 2 3
dependencies { implementation 'com.android.support:multidex:1.0.3' }
修改
Application
需要修改 Assets/Plugins/Android/AndroidManifest.xml,在
<application>
标记中的android:name
改为如下所示:1 2 3 4 5 6
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="xxxx.xxxx.com"> <application android:name="android.support.multidex.MultiDexApplication" > ... </application> </manifest>
参见
更多文档说明,请参见Google MultiDex 使用说明