Я думаю, что у вас нет концепции загрузки родных библиотек на Java через JNI.
Сначала вы определяете собственные методы в java и выполняете соответствующую реализацию в native и компилируете его (вам необходимо зарегистрировать собственные методы по 1), следуя соглашению об именах. 2) зарегистрировать собственные методы в jni_onload ... я думаю, вы, должно быть, сделали это, если не проверите http://www.ntu.edu.sg/home/ehchua/programming/android/android_ndk.html)
Затем вы должны загрузить библиотеку, прежде чем любой вызов может быть выполнен на native. Это нужно сделать один раз. Вы можете сделать это в деятельности по определению:
статический {
System.loadLibrary ("mylib.so");
}
Примечание при компиляции библиотеки вы получили название библиотеки, как libXYZ.so, но при загрузке библиотеки в Java «Lib» должны быть опущены, только System.loadLibrary (XYZ.so) Если вы используете NDK, библиотека уже была бы скопирована в проект Java> libs> armeabi, если нет, вам нужно скопировать ваш lib.so
Теперь, если у вас несколько разделяемых библиотек, вы должны загрузить минимум зависимый lib.so, затем второй и т. д., т.е.
Статический {
System.loadLibrary (independent_lib.so); // должен зависеть только от файлов android libs System.loadLibrary (next_dependent_lib1.so); // может зависеть от android libs и independent_lib.so System.loadLibrary (next_dependent_lib2.so); // может зависеть от андроида LIBS, independent_lib.so, next_dependent_lib1.so ..... .... ..
}
Если перемешивать, ВМ не сможет свяжите библиотеки и выбросьте недопустимую ссылку.
Наконец, все это .so s будет частью вашего apk, и оно будет перенесено в системную библиотеку только во время выполнения. Если только его укоренившийся телефон вы не можете извлечь .so. Если вы будете следовать приведенному выше методу, вам не нужно будет нажимать какие-либо .so в систему.Только опираясь на затмение/Cygwin и запустить
Надеются, что это помогает,
С уважением, Shrish