APK から埋め込み DEX コードを直接実行する

Android 10(API レベル 29)以降を搭載するデバイスでは、埋め込み DEX コードをアプリの APK ファイルから直接実行するよう、プラットフォームに指示できます。この機能は、攻撃者がデバイス上のローカル コンパイル コードを改ざんしていた場合に、攻撃を防ぐのに役立ちます。

Gradle ビルドシステムを使用している場合、この機能を有効にするには、次の操作を行います。

  • アプリのマニフェスト ファイルの <application> 要素で、android::useEmbeddedDex 属性を true に設定します。

  • モジュール レベルの build.gradle.kts ファイル(Groovy を使用している場合は build.gradle ファイル)で、useLegacyPackagingfalse に設定します。

    Kotlin

      packagingOptions {
        dex {
          useLegacyPackaging = false
        }
      }
      

    Groovy

      packagingOptions {
        dex {
          useLegacyPackaging false
        }
      }
      

Bazel ビルドシステムを使用している場合、この機能を有効にするには、アプリのマニフェスト ファイルの <application> 要素で android:useEmbeddedDex 属性を true に設定し、DEX ファイルは非圧縮のままにしておきます。

android_binary(
   ...
   nocompress_extensions = [".dex"],
)