IT박스

armeabi는 무엇이며 왜 사용합니까?

itboxs 2020. 12. 29. 06:50
반응형

armeabi는 무엇이며 왜 사용합니까?


오픈 소스를 탐색 할 때이 라이브러리 (armeabi)를 여러 번 봅니다.

나는 그것에 대한 설명을 그물로 검색했지만 내가 찾은 모든 결과는 그것에 대해 이야기하고 정의하지 않았습니다.

이 armeabi는 무엇이며 Android 애플리케이션에서 사용하는 이유는 무엇입니까?


Android 기기에는 CPU가 있습니다. 이러한 CPU 중 상당수는 ARM 아키텍처를 기반으로하는 반면 일부는 x86을 기반으로하고 다른 일부는 MIPS와 같은 다른 항목을 기반으로합니다.

일부 Android 앱은 NDK (Native Development Kit)를 사용하여 앱에 연결할 C / C ++ 코드를 만듭니다. 특정 CPU 아키텍처를 위해 C / C ++ 코드를 컴파일해야합니다. NDK는 각 아키텍처 용으로 컴파일 된 C / C ++ 코드 버전을 아키텍처 별 디렉토리에 배치합니다. 이러한 디렉토리 중 하나는 armeabi/일반 ARM CPU 용입니다. 도 있습니다 armeabi-v7/(AN ARM v7의 호환 CPU에 대한), x86/(86 CPU에 대한) 등


ABI- 애플리케이션 바이너리 인터페이스

EABI- 임베디드 애플리케이션 바이너리 인터페이스

따라서 ARMEABI는 Android 기기의 CPU 아키텍처와 일치하는 컴파일 된 바이너리 입니다.

예 :

arm64-v8a (Nexus 5x) -64 비트 -ARM Cortex-A35, ARM Cortex-A53, ARM Cortex-A57, ARM Cortex-A72, ARM Cortex-A73

armeabi-v7a -32 비트 -ARM Cortex-A5, ARM Cortex-A7, ARM Cortex-A8, ARM Cortex-A9, ARM Cortex-A12, ARM Cortex-A15, ARM Cortex-A17

여기에 이미지 설명 입력

Android Studio 2.3을 사용하여 * .so 바이너리 jniLib 를 포함하려면 src/main/jniLibs폴더에 배치하고 * .gradle 파일에 다음 구성을 추가합니다.

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

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

나는 최근 에 다른 CPU와 관련된 꽤 좋은 기사 와 그들을 지원하면서 APK 크기를 유지하는 방법에 대한 제안을 보았습니다 . 이 기사는 다음에 대한 정보를 제공합니다.

  • mips64
  • X86
  • X86 ~ 64
  • arm64-v8a
  • Armeabi
  • armeabi-v7a

참조 URL : https://stackoverflow.com/questions/23042175/what-is-armeabi-and-why-they-use-it

반응형