我正在尝试使用apv native library for android运行应用程序。
我已经更改了库中的包名,并使用库中包含的脚本编译它,并在终端中单独使用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)并抛出上述错误。< / p>
我不知道这里有什么不妥。有人可以帮忙吗?
答案 0 :(得分:2)
请检查我的回答UnsatisfiedLinkError in native method
此错误是
你需要创建
.so文件中每个处理器类型的.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;
}
答案 1 :(得分:0)
我猜您正在使用最新版本的NDK(NDKr10c)吗?我遇到了与cocos2d-x&amp; amp相同的问题。 NDKr10c - &GT;还原为NDKr9d - &gt;它对我有用
答案 2 :(得分:0)
我也遇到过这个问题。 我的应用程序在手机和pad上都可以运行armeabi。所以我添加armeabi-v7a并运行两个设备,没关系。但是当我删除armeabi-v7a,然后在手机和手机上运行时,手机上的应用程序会出现以下异常&#34;:UnsatisfiedLinkError:无法加载库:reloc_library [1306]:72无法找到&#39; __ isnanf&#39; &#34;,但垫没有。所以,我再次添加armeabi-v7a项目,手机上的应用程序成功运行。