Notre projet Android inclut des bibliothèques natives et nous ne prenons en charge que arbeabi-v7
. Ainsi, l'API generate ne comprend que des bibliothèques natives pour cette architecture.RenderScript inclut des binaires natifs pour toutes les plates-formes
Ces derniers temps nous avons ajouté RenderScript
qui provoque l'apk généré pour inclure librsjni.so
et libRSSuport.so
natif pour toute la plate-forme supportée-à-dire x86
, arbeabi-v7
etc.
Les fichiers build.gradle
modifications pour ajouter RenderScript
sont:
defaultConfig {
// Other configs
renderscriptTargetApi 18
renderscriptSupportModeEnabled true
}
Le dossier apk libs généré ressemble à:
libs
- armeabi-v7
- librsjni.so
- libRSSuport.so
- Other native libs
- x86
- librsjni.so
- libRSSuport.so
- Other archs
- librsjni.so
- libRSSuport.so
Cela provoque des problèmes dans les téléphones où abi primaire est non armeabi-v7
car l'exécution peut penser que l'architecture non armeabi-v7
sont pris en charge et tente de l'exécuter et se bloque sur l'application.
A partir de maintenant nous avons ajouté ce qui suit à build.gradle
:
ndk {
abiFilters "armeabi-v7a"
}
et gradle.properties
:
android.useDeprecatedNdk=true
Bien que cela résout le problème, mais il ne semble être un hack ou d'une solution non standard .
Existe-t-il un moyen standard ou recommandé pour résoudre ce problème?
à mon humble avis ** abiFilters ** est une solution parfaitement standard pour votre problème. –
@AlexCohn Merci pour la réponse. Ce qui me préoccupe, c'est l'utilisation de 'android.useDeprecatedNdk'. Existe-t-il un moyen d'exclure les bibliothèques avec le "ndk non déprécié"? – Abdullah