Android arm64-v8a, armeabi-v7a, armeabi, x86 등 CPU의 so 파일 호환성에 대한 질문

2685 단어 안드로이드
ABI에 대한 안드로이드 개발자 플랫폼 소개
먼저 몇 개의 전문어를 소개한다.
ARM: 삽입식 중의 구조로 모두 Advanced RISC Machine이라고 불리며 ARM 프로세서로 이해할 수 있습니다.
ABI(Application Binary Interface): 응용 프로그램 바이너리 인터페이스는 응용 프로그램과 운영 체제 사이, 한 응용 프로그램과 라이브러리 사이, 또는 응용 프로그램의 구성 부분 사이의 낮은 인터페이스를 설명합니다.
ABI와 CPU 관계: 대부분의 cpu는 한 가지 이상의 ABI를 지원합니다.하나의 응용 프로그램이 장치에 설치되면, 이 장치가 지원하는 CPU 구조만 대응합니다.so 파일이 설치됩니다.
ABI 디렉토리(가로) 및 cpu(세로)
armeabi
armeabi-v7a
arm64-v8a
mips
mips64
x86
x86_64
ARMv5
뒷받침
ARMv7
뒷받침
뒷받침
ARMv8
뒷받침
뒷받침
뒷받침
MIPS
뒷받침
MIPS64
뒷받침
뒷받침
x86
뒷받침
뒷받침
뒷받침
x86_64
뒷받침
뒷받침
뒷받침
x86 장치에서 ABI 우선 순위 선택
4
  • libs/x86 디렉토리에 있는 경우so 파일이면 설치됩니다

  • 4
  • 존재하지 않으면armeabi-v7a의.so 파일.

  • 4
  • 존재하지 않으면armeabi 디렉터리에 있는.so 파일.

  • arm 디바이스의 CPU는 armabi-v8a, ABI 우선 순위
    4
  • 만약에 핸드폰 CPU가armabi-v8a라면armabi-v8a중의 것을 우선선택한다.so 파일.

  • 4
  • 존재하지 않으면armeabi-v7a의.so 파일.

  • 4
  • 존재하지 않으면armeabi 디렉터리에 있는.so 파일.

  • arm 디바이스의 CPU는 armabi-v7a, ABI 우선 순위
    4
  • 만약에 핸드폰 CPU가armabi-v7a라면armabi-v7a중의 것을 우선선택한다.so 파일.

  • 4
  • 존재하지 않으면armeabi 중의.so 파일.

  • 일반적으로 Android 디바이스의 CPU 유형은 다음과 같습니다.
    1.armeabiv-v7a:  7      ARM    ,      ,   Android      。
    2.arm64-v8a:  8 、64 ARM   。
    3.armeabi:  5 、 6  ARM   ,          ,             ,             。
    4.x86 / x86_64: x86            Intel       Houdini           ,
       arm .so    。
    5.mips/mips64:         。
    

    관하여so 파일 선택
    관련되다.so 파일을 불러올 때, 서로 다른 구조의 CPU는 서로 다른 것을 불러옵니다.서류arm 구조의 cpu라면 불러옵니다. 예를 들어armabi-v7a는armabi-v7a 폴더에서 대응하는 것을 우선적으로 찾습니다.so 파일, 찾지 못하면armabi 폴더 아래에서 찾습니다.so 파일, 없으면 프로그램이 필요할 때까지 실행됩니다.so 파일의 위치가 붕괴를 일으킬 수 있습니다.
    mps 시장 점유율이 낮기 때문에 x86은armabi를 호환하기 때문에arm 구조만 지원하면 된다. 또한arm에서arm64-v8a의 cpu 구조는arm-v7a와armabi를 아래로 호환하고arm-v7a의 구조도armabi를 호환한다.따라서 아라비 하나만 선택하면 된다.현재 주류의 휴대전화 cpu 구조는arm-v7a이기 때문에arm-v7a로armabi를 대체할 수도 있다. 그들 두 가지 차이점은arm-v7a의 cpu가armabi를 사용하는 것이다.so 파일일 때 계산 효율이 좀 낮을 수 있습니다.
    결론은arm-v7a와armabi 둘 중 하나를 선택하면 된다. 현재 주류 앱인 타오바오 위챗은 하나의armabi만 어울린다.
    abiFilters 사용 정보
    ndk {
        abiFilters  "armeabi-v7a"  //    ndk       (        mips,x86,armeabi,arm-v8   so     )
    }
    

    만약build에 있다면.gradle에서abiFilters를 설정하면 설정된 디렉터리의 so 파일만 apk 설치 패키지로 포장됩니다.
    참고 사항:
    4
  • 생성된 서로 다른 cpu 구조의 so 파일은 반드시 폴더에 맞게 놓아야 한다. 예를 들어arm-v7a의 경우 함부로 놓아서는 안 된다.so 파일을armabi 폴더에 두면 실행 중 오류가 발생할 수 있습니다.그중에 전환이 관련되어 있다

  • 4
  • 그리고 A프로그램을 권장하지 않습니다.so 파일은 armabi, B 프로그램에만 적합합니다.so 파일은 armabi-v7a에 적합합니다.통일이 안 되면 여러 가지 문제가 있을 수도 있는데.

  • 배우기 좋아하는 친구들과 함께 발전하는 것을 환영합니다:230274309

    좋은 웹페이지 즐겨찾기