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错误:
06-18 11:13:55.235:D / dalvikvm(17658):试图加载lib native / libkdu_jni.so 0x421eeb38 06-18 11:13:55.235:E / dalvikvm(17658): dlopen(“native / libkdu_jni.so”)失败:dlopen失败:库 “native / libkdu_jni.so”未找到
06-18 11:13:55.235:W / System.err(17658):本机代码库失败 负荷。
06-18 11:13:55.235:W / System.err(17658): java.lang.UnsatisfiedLinkError:dlopen failed:library “native / libkdu_jni.so”未找到
我应该把这个文件夹放在哪里?
答案 0 :(得分:0)
试试这个:
$stmt = $conn -> prepare("
INSERT INTO
formestonline
(ebelp, cre, cep, aa )
VALUES
(?, ?, ?, ?)");
$stmt -> bind_param("ssss", $ebelp, $cre, $cep, $aa);
$a_pos = $_POST['pos'];
$a_cre = $_POST['cre'];
$a_cep = $_POST['cep'];
$a_aa = $_POST['aa'];
for ($a = 0; $a < count($a_pos); $a++):
$ebelp = $a_pos["EBELP"][$a];
$cre = $a_cre[$a];
$cep = $a_cep[$a];
$aa = $a_aa[$a];
$stmt->execute();
endfor;
loadLibrary()实际上从ape的lib /加载。你也不需要指定'lib'和amp;扩展名'so'。
希望这会有所帮助。
答案 1 :(得分:0)
我和其他.so文件有同样的问题。
我使用相关文件将jniLibs库添加到...src/main
并且它有效。
也许你可以尝试一下。
答案 2 :(得分:0)
使用System.load("…");
,您正在以一种构建系统的Android APK打包代码无法检测到的方式加载库。因此,该库未包含在APK中,并且在运行Android设备上的应用程序时无法在运行时找到该库。
要解决此问题,请使用构建系统的机制使APK打包程序知道要包含的其他库。这在构建系统之间会有所不同。例如,在CMake构建系统中,您只需将库添加到target_link_libraries(…)
中的库列表中即可:
add_executable(my_executable_name ${SRCS} ${RESOURCES})
# Link all required libraries with the executable,
# and include them into the Android APK.
target_link_libraries(my_executable_name
# Name libraries here as you would when calling "g++ -l…".
# Alternatively, use absolute paths.
Qt5::Core
Qt5::Quick
/my/path/to/native/libkdu_jni.so
)