2017-08-03 1 views
2

J'essaie de créer une application Android qui contient du code natif utilisant NDK. J'utilise cmake car cela semble être le système de construction préféré pour le code natif. La construction échoue pendant la liaison et je reçois le message suivant pour une bibliothèque prédéfinie avec laquelle je suis lié: "Erreur lors de l'ajout de symboles: Fichier dans un format incorrect". En regardant le toolchain utilisé, il utilise mips64el-linux-android-4.9. Appeler objdump sur la bibliothèque montre le format comme "format de fichier elf64-x86-64" qui est ce que je veux. Comment puis-je demander à Android Studio de créer l'application pour x86_64 afin qu'elle utilise la chaîne d'outils appropriée? J'ai essayé d'ajouter ce qui suit au fichier build.gradle pour mon application, mais cela ne change rien:Spécification de l'architecture cible pour la construction NDK

splits { 
    abi { 
     enable true 
     reset() 
     include "x86_64" 
    } 
} 
+0

double possible de [Gradle construire NDK cible uniquement ARM] (https://stackoverflow.com/questions/33278152/gradle-build-ndk-target-only-arm) –

Répondre

3

Après plus expérimenté, j'ai pu obtenir ce travail en ajoutant un bloc NDK avec un abiFilters attribut à mes buildTypes. Par exemple:

buildTypes { 
    release { 
     minifyEnabled false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     ndk { 
      abiFilters "x86_64" 
     } 
    } 
    debug { 
     ndk { 
      abiFilters "x86_64" 
     } 
    } 
} 
+0

Vous pouvez également utiliser 'android { defaultConfig { ndk { abiFilters' pour le définir pour tous les types construits à la fois: https://stackoverflow.com/a/47558314/895245 –