メソッド数を削減する対応について(Android)

Androidの動画リワード等で多くのライブラリファイルを実装する場合、以下のエラーが発生してBuildができない場合があります。

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':transformClassesWithDexForRelease'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
1
2
3
4
5

この場合、以下のどちらかの方法をご検討ください。

不要ライブラリの削除

呼び出しをしていないアドネットワークを呼び出す設定を削除してください。 動画リワード広告(Androidパッケージビルド手順)で記載している全アドネットワークを一括で導入する場合を使用している場合、使用するアドネットワークのみの各導入手順を実施してください。

Multidexの実装

Multidex サポートを有効にして、6万5千を超えるメソッド数を扱えるようにする方法があります。

  1. Assets/PlayServicesResolver/Editor/GNDependencies.xml を開き、以下のどちらかの設定を追加してください。

a. androidxの場合

<androidPackage spec="androidx.multidex:multidex:2.0.1">
<androidSdkPackageIds>
    <androidSdkPackageId>extra-google-m2repository</androidSdkPackageId>
  </androidSdkPackageIds>
  <repositories>
    <repository>https://maven.google.com</repository>
  </repositories>
</androidPackage>
1
2
3
4
5
6
7
8
9

b. android.supportの場合

<androidPackage spec="com.android.support:multidex:1.0.3">
<androidSdkPackageIds>
    <androidSdkPackageId>extra-google-m2repository</androidSdkPackageId>
  </androidSdkPackageIds>
  <repositories>
    <repository>https://maven.google.com</repository>
  </repositories>
</androidPackage>
1
2
3
4
5
6
7
8
9
  1. Plugins/Android/mainTemplate.gradle を開き、以下のようにdefaultConfigmultiDexEnabled trueを追加してください。
buildscript {
    maven {
        url 'https://maven.google.com'
    }
}
dependencies {
    implementation 'androidx.multidex:multidex:2.0.1'
}
android {
    defaultConfig {
        multiDexEnabled true
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  1. Plugins/Android/mainTemplate を開き、以下のように設定からuseProguard **PROGUARD_DEBUG**を削除してください。
buildTypes {
      debug {
         minifyEnabled **MINIFY_DEBUG**
         useProguard **PROGUARD_DEBUG**
         proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-unity.txt'**USER_PROGUARD**
          jniDebuggable true
      }
      release {
         minifyEnabled **MINIFY_RELEASE**
         useProguard **PROGUARD_RELEASE**
          proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-unity.txt'**USER_PROGUARD**
          **SIGNCONFIG**
      }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

以下のようになります。

buildTypes {
      debug {
         minifyEnabled **MINIFY_DEBUG**
         proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-unity.txt'**USER_PROGUARD**
          jniDebuggable true
      }
      release {
         minifyEnabled **MINIFY_RELEASE**
         proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-unity.txt'**USER_PROGUARD**
          **SIGNCONFIG**
      }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
Last Updated: 2020/7/21 16:39:55