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

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

この機能を有効にするには、アプリのマニフェスト ファイルで <application> 要素の android:useEmbeddedDex 属性の値を true に設定します。また、ART が直接アクセスできる非圧縮 DEX コードを含むように APK をビルドする必要があります。Gradle または Bazel の設定ファイルに次の設定を追加して、非圧縮 DEX コードを含む APK をビルドしてください。Gradle の場合、この設定は Android Gradle プラグイン 4.2 以降でのみ必要です。

KTS / Gradle

Groovy

packagingOptions {
    dex {
        useLegacyPackaging = false
    }
}

Kotlin

aaptOptions {
   noCompress("dex")
}

Bazel

android_binary(
   ...
   nocompress_extensions = [“.dex”],
)