Unity 使用 MultiDex 库

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*

  1. 开启MultiDex支持

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    android {
       defaultConfig {
          ...
          minSdkVersion 21
          targetSdkVersion 28
          multiDexEnabled true
       }
       ...
    }
    
  2. 特殊处理

    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 使用说明

12.91k 字
12篇文章