일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 공인인증서 만료일
- android log dump
- V8 Engine
- Push
- appbarlayout
- Status Bar
- Magnify Anim
- ios
- v8 engine xcode build
- SO 파일
- JavaScript Engine
- 인증서 정보 뽑아내기
- embedd
- Android
- apache
- IOS10
- 안드로이드
- java
- Google V8 Engine
- 공인인증서 정보
- sha1 convert hashkey
- so file
- Android NDK시스템
- FlexiblePageView
- apk 다운사이징
- Objective C
- IMAGE
- ios framework
- apns
- PageControl
- Today
- Total
caTea 블로그
Android 와 NDK SO File시스템 본문
먼저 이번에 문제 된 상황을 설명하자면
여러 업체의 라이브러리를 붙이다 보면 SO 파일을 붙이는경우가 있다.
만약 디렉토리 구조가
jniLibs
armeabi
A.so
B.so
armeabi-v7a
B.so
x86
위와 같이 외부 업체 SO 파일들이 위치해 있다고 가정해보자
안드로이드 디바이스의 아키텍쳐가 armeabi를 지원한다면
armeabi의 디렉토리의 so파일을 로드 할 것이다.
하지만 안드로이드 디바이스의 아키텍쳐가 armeabi-v7a 라면?
시스템은 armeabi-v7a 를 찾아가 로드할 것이다
하지만 위와 같은 상황이라면 A.so파일이 없지않는가?
그러면 에러가 발생하여 앱이 죽을것이다.
왜냐하면 안드로이드 시스템은 디바이스의 아키텍쳐의 최적화 된 아키텍쳐 파일을 찾아가게 되어있다.
만약
jniLibs
armeabi
A.so
B.so
x86
armeabi-v7a 디렉토리를 삭제하고 빌드하여 실행하면 아무 문제가 없을 것이다.
SO 파일 로드 시 최적화 된 아키텍쳐가 없을 시 하위 아키텍쳐를 찾아서 로드하기 때문이다.
물론 속도 차이는 있을 수 있지만 동작은 될 것이다.
결론
1. 안드로이드 개발 시 SO파일을 붙여 개발 할 경우 원칙 상 모든 아키텍쳐를 받는게 맞다.
jniLibs
arm64-v8a
A.so
B.so
armeabi
A.so
B.so
armeabi-v7a
A.so
B.so
x86
2. 만약 타 업체에서 armeabi 타겟만 주었을 시 armeabi를 제외한 디렉토리를 지우면 동작은 할 것이다.
(타업체들도 armeabi 타겟 아키텍쳐 so파일을 주었다는 가정하에)
'android' 카테고리의 다른 글
Android NDK SO File 과 관련 파일 다운사이징 방법 (0) | 2018.08.21 |
---|---|
adb 특정 텍스트만 필터걸어서 파일쓰기 안드로이드 (0) | 2018.01.30 |
android crash dump (0) | 2017.12.20 |
android google map 좌표들을 이용해 스크린에 꽉차게 (0) | 2017.05.25 |
AppBarLayout 부드럽게 스크롤 (0) | 2017.04.14 |