caTea 블로그

Android NDK SO File 과 관련 파일 다운사이징 방법 본문

android

Android NDK SO File 과 관련 파일 다운사이징 방법

ZaRas 2018. 8. 21. 11:07
반응형
안드로이드 개발 시 외부 업체의 .so 파일 관련하여 조사한 내용입니다.

안드로이드 개발 시 SO File(Navtive Source Lib) 사용이 증가함에 따라 
빌드 시 APK 용량이 커져 줄이는 방안을 모색해 보았습니다.

1. 특정 architecture 타겟을 지정하여 빌드

"armeabi", "armeabi-v7a" 두가지의 SO File 들만 가지고 빌드 시 모든 Android 플랫폼에서 동작 가능합니다.(2018-07-19기준)

위의 방법을 통해 APK 사이즈를 줄일 수 있습니다.

제약조건
- 해당 조건으로 빌드 시 반드시 해당 architecture 타겟 폴더에 SO File 이 위치해 있어야 합니다.


2. architecture 별로 APK를 빌드하여 구글 플레이스토어에 등록 
안드로이드 스튜디오의 Gradle 설정에 architecture 타입별로 APK가 생성되는 기능이 있습니다.

이 기능을 통해 하나의 APK에 하나의 architecture SO File을 빌드하여 

architecture 별로 생성한 후 구글 플레이스토어에 등록 합니다.

사용자들은 구글 플레이스토어에서 다운받게 되는데 구글에서 사용자 디바이스에 맞는 APK를 내려주어 다운받게 됩니다.

제약조건
- 해당 조건으로 빌드 시 반드시 해당 architecture 타겟 폴더에 SO File 이 위치해 있어야 합니다.

3. 소스 단에서 architecture 구별하여 SO File을 내려받아 동적 로딩

SO File은 동적 라이브러리로써 소스의 시스템함수 loadLibrary, load API를 통해 로드할수 있습니다.

SO File을 서버에서 다운받아 안드로이드 디바이스의 internal Storage에 저장 후 저장 경로를 통해 로드 후 사용 가능합니다.


제약조건
- 소스상에서 디바이스 architecture를 검사하여 해당하는 SO_File을 다운받아야 합니다. (만약 맞지 않을경우 로딩시 런타임 에러 발생)
- 해당 클래스는 저희가 제공하는 targetinterface.jar의 클래스 패키지명, 클래스명, 메서드 명이 동일해야 동작합니다.
- API 실행 전 반드시 .so 파일을 로드 해주셔야 합니다.(System.load(path))


728x90