2017-08-03 5 views
2

Ich versuche eine Android-Anwendung zu erstellen, die nativen Code mit NDK enthält. Ich benutze cmake als das bevorzugte Build-System für nativen Code. Der Build schlägt während des Linkens fehl und ich erhalte die folgende Nachricht für eine vorgefertigte Bibliothek, gegen die ich verlinke: "Fehler beim Hinzufügen von Symbolen: Datei im falschen Format". Betrachtet man die verwendete Toolchain, benutzt man mips64el-linux-android-4.9. Aufruf von objdump in der Bibliothek zeigt das Format als "Dateiformat elf64-x86-64" was ich will. Wie sage ich Android Studio, um die Anwendung für x86_64 zu erstellen, so dass es die richtige Toolchain verwendet? Ich habe versucht, die folgenden auf die build.gradle Datei für meine Anwendung hinzufügen, aber das änderte nichts: Ich konnte dieseAngeben der Zielarchitektur für NDK Build

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

Mögliche Duplikat [Gradle Build-NDK nur ARM Ziel] (https://stackoverflow.com/questions/33278152/gradle-build-ndk-target-only-arm) –

Antwort

3

Nach mehr Experimentieren erhalten durch Zugabe eines NDK Block mit einem abiFilters arbeiten Attribut Meine BuildTypen. Zum Beispiel:

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

Sie können auch verwenden 'android { defaultConfig { ndk { abiFilters', um es für alle erstellten Typen auf einmal zu setzen: https://Stackoverflow.com/a/47558314/895245 –