FFMPEG 컴파일 하다가 ABI가 헷갈려서 정리해놓으려고 한다.
제조사마다 사용할 수 있는 CPU가 다르기 때문에 응용어플리케이션이나 OS를 어디서나 실행시키기 위해선 각 아키텍처에 맞는 기계 언어가 필요하다. 이것이 ABI이다. 쉽게 말해서 그냥 CPU 전용 API라고 생각하면 될 것 같다.
ABI는 크게 X86, ARM, MIPS가 있다.
X86 : 인텔 CPU를 사용하는 윈도우 폰이다. 예전 윈도우 cpu들을 486, 586 이런식으로 부를 때가 있었는데 앞 자리만 바뀐다고 X86으로 불리게 되었다고 한다. 현재 윈도우 폰이 많이 없지만 무시하기엔 아쉬운 부분이 많으므로 개발할 때 고려해야 할 것으로 보인다.
MIPS : 안드로이드 4.0부터는 안드로이드에서 MIPS 아키텍처를 지원하지 않기 때문에 요즘은 거의 없다고 봐도 될 것 같다. 아직 MIPS를 사용하는 기기는 중국에서 값 싼 태블릿 몇 종류라고 하니 개발할 때 무시해도 될 것 같다.
ARM : 대표적인 모바일 CPU 아키텍처이다. 저전력 고효율의 특징 때문에 대부분의 시장을 장악하고 있으며 임베디드에서도 많이 사용된다고 한다. ARM에는 neon이라는 기술이 있는데 기존 성능보다 30% 이상의 효율을 낼 수 있다고 한다. 또한 ARMv7 이전 버전의 아키텍처에 대해서는 NEON이 지원되지 않는다.
ARM에서도 armeabi, armeabi-v7a, arm64-v8a로 나누어진다.
현재 안드로이드 NDK r17부터 armeabi, mips 지원 중단이 되었다.
최종 결론 :
안드로이드 개발할 때
armeabi-v7a
arm64-v8a
x86
x86_64
이렇게 4가지만 지원하면 된다.
참고로 2019년 8월 이후부턴 NDK를 사용할 때 64비트 so 파일을 포함하여야 앱 스토어에 앱을 등록할 수 있다.
'OS > Android' 카테고리의 다른 글
Android Context (0) | 2021.03.24 |
---|---|
Android decompile (0) | 2021.03.10 |
안드로이드 인앱 결제 테스트 (0) | 2021.02.24 |
안드로이드 realtimedatabase, google login 사용하여 배포 (0) | 2021.01.05 |
안드로이드 MVVM 저장용 (0) | 2020.12.30 |