2015년 9월 2일 수요일

[Android] apk에 so를 포함시키기. JNI 사용하기.

1. JNI 컴파일 관련.

JNI를 컴파일 하면, so가 생성될텐데, 이 so 를 apk에 포함하려면 어떻게 해야 할까?

Android Studio에서는 gradle의 설정을 이용하면 되는데

app/build.gradle에서 다음과 같이 설정해주자.
buildTypes {
    debug{
        signingConfig   signingConfigs.debug
    }
    release {
        minifyEnabled false        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'    }
}
sourceSets.main {
    jniLibs.srcDir 'src/main/libs'    jni.srcDirs = []
}
 
 


>> 포인트는 sourceSets.main부분이다.
생성된 so를 src/main/libs 에 집어넣는다.,, --> ndk-build 하면 자동으로 들어가도록 만든다.
일반적으로 /src/main/jni 디렉토리에서 컴파일을 하면 그렇게 된다.

>> android studio에서 실행을 하면 자동적으로 알맞은 so가 /data/data/패키지명/lib 에 들어가게 된다.

2. 기타 알면 좋은 팁

앱을 실행하면 자동적으로 libapp.so가 생성되는 경우가 있다.
1번의 과정을 거쳤다면 사용자의 so가 복사 되었을 테지만, libapp.so 도 중복생성되는 경우
jni.srcDirs = [] 를 해주면 생기지 않는다.

댓글 없음:

댓글 쓰기