JNI를 통해 Java에 원시 라이브러리를로드한다는 개념이 없다고 생각합니다.
처음에 자바에서 네이티브 메소드를 정의하고 네이티브에서 해당 구현을 수행하고 이름 지정 규칙에 따라 네이티브 메소드를 등록해야합니다. 2) jni_onload에서 네이티브 메소드를 등록합니다. 난 당신이 체크를하지 않았 으면해야한다고 생각합니다 http://www.ntu.edu.sg/home/ehchua/programming/android/android_ndk.html)
다음, 네이티브로 전화를하기 전에 라이브러리를로드해야합니다. 이것은 한 번해야합니다. 당신은 정의하여 활동을 수행 할 수 있습니다
정적 {
System.loadLibrary를 ("mylib.so");
} 당신이 libXYZ.so로 라이브러리 이름을 가지고있다 할 라이브러리를 컴파일하는 동안,하지만 자바 라이브러리를로드 할 때
참고 "LIB"생략한다, 단지 System.loadLibrary를 (XYZ.so) NDK를 사용하는 경우 라이브러리가 이미 Java 프로젝트> libs> armeabi 폴더에 복사되었으므로 lib.so를 복사하지 않아도됩니다.
이제 공유 라이브러리가 여러 개인 경우 종속 lib.so 먼저, 다음에 두 번째 등 예 :
정적 {
System.loadLibrary (independent_lib.so); // 안드로이드 라이브러리에만 의존해야합니다 System.loadLibrary (next_dependent_lib1.so); // 안드로이드 라이브러리 및 independent_lib.so에 의존 할 수 있습니다. System.loadLibrary (next_dependent_lib2.so); //이 ..... .... .. 당신이 뒤범벅 경우
}
것은 VM이 할 수 없습니다를 independent_lib.so, 안드로이드 libs가에 따라, next_dependent_lib1.so 수 있습니다 라이브러리를 링크하고 충족되지 않은 링크 오류가 발생합니다.
마지막으로, 모든이 .so는 apk의 일부가되며 런타임에만 시스템 라이브러리에 푸시됩니다. 뿌리깊은 전화기가 아니라면 .so를 추출 할 수 없습니다. 위의 방법을 따르면 시스템에 .so를 넣을 필요가 없습니다.만 일식/Cygwin에서 구축하고이 도움이
희망,
감사합니다, Shrish
을 실행