나는 .so
라이브러리를 생성하기 위해 Android studio 1.0.2를 사용하고 있습니다. 에뮬레이터에서 앱을로드하면 모듈을로드하는 중 오류가 발생합니다. 오류 메시지는 다음과 같습니다에뮬레이터의 NDK 모듈에 액세스 할 수 없습니다.
dlopen failed: library "HelloJNI" not found
내 MainActivity.java:
public native String HelloJNI();
static
{
System.load("HelloJNI");
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv = new TextView(this);
tv.setText(HelloJNI());
setContentView(tv);
}
HelloJNI.c
JNIEXPORT jstring JNICALL Java_com_example_linda_myapplication_MainActivity_HelloJNI(JNIEnv *env, jobject obj){
(*env)->NewStringUTF(env, "Hello from JNI");
}
build.gradle
apply plugin: 'com.android.application'android {
compileSdkVersion 19
buildToolsVersion '19.1.0'
defaultConfig {
applicationId "com.example.linda.myapplication"
minSdkVersion 17
targetSdkVersion 19
versionCode 1
versionName "1.0"
ndk{
moduleName "HelloJNI"
//cFlags "-DANDROID_NDK -D_DEBUG DNULL=0" // Define some macros
//ldLibs "EGL", "GLESv3", "dl", "log" // Link with these libraries!
//stl "stlport_shared" // Use shared stlport library
}
}
sourceSets.main
{
jniLibs.srcDir 'src/main/libs'
jni.srcDirs = []
}
productFlavors{
x86{
ndk{
abiFilter "x86"
}
}
armv7a{
ndk{
abiFilter "armeabi-v7a"
}
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
}
,369입니다
apk 파일을 확인합니다. .so가 "lib/armeabi-v7a"라는 폴더에 압축되어있는 것 같습니다. 그러나 왜 프로그램이 모듈을 목표로하지 못했습니까? – Jensz