我正在尝试使用适用于 Android 的 apv native 库运行应用。
我已经更改了库中的包名称,并使用库中包含的脚本编译它,并在终端中单独使用 ndk-build
命令。我将生成的 .so 文件放在 jniLibs 文件夹中,如下所示:-
jniLibs/armeabi/libapv.so
jniLibs/armeabi-v7a/libapv.so
jniLibs/x86/libapv.so
所有这一切让我在 Nexus 4、Moto G 和 Xperia T 上成功运行该应用程序,但它无法在其他设备(Galaxy Tab 10 英寸、Galaxy S3、Asus Memopad)上运行并抛出上述错误。
我不知道这里有什么问题。有人可以帮忙吗?
最佳答案
请检查我的答案 UnsatisfiedLinkError in native method
这个错误是
在尝试调用无法找到实现的 native 时抛出。
你需要创造
andorid 系统中每种处理器类型的.so 文件
我已经通过添加解决了这个问题
System.loadLibrary(".so file name");
创建它们的每个方法
像这样:
public HashMap<String, ArrayList<String>> word_quiz(String qry) {
System.loadLibrary("sqliteX");
ArrayList<String> list1 = new ArrayList<String>();
ArrayList<String> list2 = new ArrayList<String>();
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(DB_PATH+ "/sk1.db", null);
Cursor mcursor = db.rawQuery(qry, null);
try {
mcursor.moveToFirst();
do {
list1.add(mcursor.getString(0));
list2.add(mcursor.getString(1));
} while (mcursor.moveToNext());
} catch (IndexOutOfBoundsException e) {
if (MainActivity.logcat_status) {
Log.e("Error", e + "");
}
}
mcursor.close();
mcursor = null;
HashMap<String, ArrayList<String>> final_list = new HashMap<String, ArrayList<String>>();
final_list.put("list1", list1);
final_list.put("list2", list2);
db.close();
return final_list;
}
关于android - 不满意链接错误 : Cannot load library: reloc_library[1306]: 72 cannot locate '__isnanf' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25362966/