在运行 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”], )