Exécuter le code DEX intégré directement à partir de l'APK
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Sur les appareils équipés d'Android version 10 (niveau 29 d'API) ou ultérieure, vous pouvez demander à la plate-forme d'exécuter un code DEX intégré directement à partir du fichier APK de votre application. Cette option permet de prévenir toute attaque si un pirate informatique parvient à manipuler le code compilé localement sur l'appareil.
Si vous utilisez le système de compilation Gradle, procédez comme suit pour activer cette fonctionnalité :
Définissez l'attribut android::useEmbeddedDex sur true dans l'élément <application> du fichier manifeste de votre application.
Définissez useLegacyPackaging sur false dans le fichier build.gradle.kts au niveau du module (fichier build.gradle si vous utilisez Groovy).
Kotlin
packagingOptions{dex{useLegacyPackaging=false}}
Groovy
packagingOptions{dex{useLegacyPackagingfalse}}
Si vous utilisez le système de compilation Bazel, pour activer cette fonctionnalité, définissez android:useEmbeddedDex sur true dans l'élément <application> du fichier manifeste de votre application et laissez les fichiers DEX non compressés :
Le contenu et les exemples de code de cette page sont soumis aux licences décrites dans la Licence de contenu. Java et OpenJDK sont des marques ou des marques déposées d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2023/12/26 (UTC).
[null,null,["Dernière mise à jour le 2023/12/26 (UTC)."],[],[],null,["On devices running Android 10 (API level 29) and higher you can tell the platform to run\nembedded DEX code directly from your app's APK file. This option can help\nprevent an attack if an attacker ever managed to tamper with the locally\ncompiled code on the device.\n| **Note:** Enabling this feature could possibly affect your app's performance because ART must use the [JIT compiler](https://source.android.com/devices/tech/dalvik/jit-compiler) when the app is started (instead of reading native code that was compiled ahead of time). We recommend testing your app's performance before you decide whether or not to enable this feature in your published apps.\n\nIf you're using the Gradle build system, to enable this feature do the\nfollowing:\n\n- Set the `android::useEmbeddedDex` attribute to\n `true` in the\n [\u003capplication\u003e](/guide/topics/manifest/application-element)\n element of your app's manifest file.\n\n- Set `useLegacyPackaging` to `false` in the\n module-level `build.gradle.kts` file (`build.gradle`\n file if you're using Groovy).\n\n **Note:** Don't set the `useLegacyPackaging` option if you're using a version of AGP lower than 4.2. \n\n Kotlin \n\n ```kotlin\n packagingOptions {\n dex {\n useLegacyPackaging = false\n }\n }\n \n ```\n\n Groovy \n\n ```groovy\n packagingOptions {\n dex {\n useLegacyPackaging false\n }\n }\n \n ```\n\nIf you're using the Bazel build system, to enable this feature set the\n`android:useEmbeddedDex` attribute to `true` in the `\u003capplication\u003e` element of\nyour app's manifest file and leave DEX files uncompressed: \n\n```\nandroid_binary(\n ...\n nocompress_extensions = [\".dex\"],\n)\n```\n\nRecommended for you\n\n- Note: link text is displayed when JavaScript is off\n- [Tapjacking](/topic/security/risks/tapjacking)\n- [android:exported](/topic/security/risks/android-exported)\n- [# Key management {:#key-management}](/topic/security/data)"]]