APK에서 직접 삽입된 DEX 코드 실행

Android 10(API 수준 29) 이상을 실행하는 기기에서는 삽입된 DEX 코드를 앱의 APK 파일에서 직접 실행하도록 플랫폼에 지시할 수 있습니다. 이 옵션을 사용하면 공격자가 기기에서 로컬로 컴파일된 코드를 변조한 경우에 공격을 차단할 수 있습니다.

이 기능을 사용하려면 앱 매니페스트 파일의 <application> 요소에서 android:useEmbeddedDex 속성값을 true로 설정합니다. 또한 ART에서 직접 액세스할 수 있는 압축되지 않은 DEX 코드가 포함된 APK를 빌드해야 합니다. 압축되지 않은 DEX 코드로 APK를 빌드하려면 Gradle 또는 Bazel 구성 파일에 다음 옵션을 추가합니다. Gradle 사용자의 경우 이 설정은 Android Gradle 플러그인 4.2 이상을 사용하는 경우에만 필요합니다.

KTS/Gradle

Groovy

packagingOptions {
    dex {
        useLegacyPackaging = false
    }
}

Kotlin

aaptOptions {
   noCompress("dex")
}

Bazel

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