package com.test.nativeapp;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
public class MainActivity extends ActionBarActivity {
static {
try {
System.load("native/libkdu_jni.so");
} catch (UnsatisfiedLinkError e) {
System.err.println("Native code library failed to load.\n" + e);
System.exit(1);
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
LogCat错误:
2018 - 06-18 11:13:55.235:D/dalvikvm(17658):尝试加载lib native/libkdu_jni.so 0x 421 eeb 38 06-18 11:13:55.235:E/dalvikvm(17658):dlopen(“native/libkdu_jni.so”)失败:dlopen失败:未找到库“native/libkdu_jni.so”
2018 - 06-18 11:13:55.235:W/System.err(17658):本机代码库加载失败。
2018 - 06-18 11:13:55.235:W/System.err(17658):java.lang.UnsatisfiedLinkError:dlopen失败:未找到库“native/libkdu_jni.so”
我应该把这个文件夹放在哪里?
3条答案
按热度按时间slsn1g291#
试试这个:
loadLibrary()实际上是从ape的lib/加载的。另外,你不需要指定'lib'和扩展名'so'。
希望这能帮上忙。
k3bvogb12#
我有同样的问题与其他.所以文件.我将jniLibs库添加到
...src/main
中的相关文件中,它工作了。也许你可以试试。6jygbczu3#
使用
System.load("…");
,您正在以一种无法被构建系统的Android APK打包代码检测的方式加载库。因此,该库不包含在APK中,并且在运行时,当您在Android设备上启动应用程序时无法找到。要解决这个问题,请使用构建系统的机制,让APK打包器知道要包含的额外库。这将在构建系统之间有所不同。例如,在CMake构建系统中,您只需将库添加到
target_link_libraries(…)
中的库列表中: