2014-04-13 6 views
35

Ich sehe diese Bibliothek (Armeabi) oft, wenn ich offene Quellen erkunde, und ich "googelte" für Definition es, und alle Ergebnisse, die ich darüber reden und nicht definieren, ich möchte wissen, was ist diese armeabi und warum sie es in Android-Anwendung verwenden.was ist armeabi und warum sie es verwenden

Antwort

65

Android-Geräte haben CPUs. Viele dieser CPUs basieren auf der ARM-Architektur, während andere auf x86 basieren, und einige andere basieren auf anderen Dingen wie MIPS.

Einige Android-Apps verwenden das Native Development Kit (NDK), um C/C++ - Code zum Verknüpfen mit ihrer App zu erstellen. C/C++ - Code muss für eine bestimmte CPU-Architektur kompiliert werden. Das NDK platziert die Version des C/C++ - Codes, der für jede Architektur kompiliert wird, in ein architekturspezifisches Verzeichnis. Eines dieser Verzeichnisse ist armeabi/, das für eine generische ARM-CPU steht. Es gibt auch armeabi-v7/ (für einen ARM-v7-kompatiblen CPU), x86/ (für x86-CPUs) usw.

9

ABI - Application Binary Interface

EABI - Embedded Application Binary Interface

So ARMEABI sind kompilierte Binärdateien passend zu der CPU-Architektur Ihres Android-Geräts.

z.B.

arm64-V8A (Nexus 5x) - 64 Bit - ARM Cortex-A35, ARM Cortex-A53, ARM Cortex-A57, ARM Cortex-A72, ARM Cortex-A73

armeabi-V7A - 32bit - ARM Cortex-A5, ARM Cortex-A7, ARM Cortex-A8, ARM Cortex-A9, ARM Cortex-A12, ARM Cortex-A15, ARM Cortex-A17

enter image description here

Um * enthalten. so binär jniLibs mit Android Studio 2.3 legen Sie sie in src/main/jniLibs Ordner und fügen Sie die folgende Konfiguration zu Ihrer * .gradle-Datei:

android { 
    sourceSets { 
     main { 
      jniLibs.srcDirs = ['src/main/jniLibs'] 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'jniLibs', include: ['*.so']) 
} 
android { 
    sourceSets { 
     main { 
      jniLibs.srcDirs = ['src/main/jniLibs'] 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'jniLibs', include: ['*.so']) 
}