直接从 APK 运行嵌入式 DEX 代码

在运行 Android 10(API 级别 29)和更高版本的设备上,您现在可以告知平台直接从应用的 APK 文件运行嵌入式 DEX 代码。如果攻击者曾设法篡改了设备上本地编译的代码,此选项有助于防止此类攻击。

如需启用此功能,请在应用清单文件的 <application> 元素中将 android:useEmbeddedDex 属性的值设为 true。您还必须构建一个 APK,其中要包含 ART 可以直接访问的未压缩 DEX 代码。将以下选项添加到 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”],
)