我在android源代碼路徑/packages/apps/中創建了一個android項目(TestJni),沒有Eclipse。我編譯了android源代碼。java.lang.unsatisfiedlinkerror:無法加載testjni:findLibrary返回null
我已經添加了jni文件夾。 在jni文件夾下有一些文件,包括Android.mk和basic.c。
Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := basic.c
LOCAL_MODULE := testjni
include $(BUILD_SHARED_LIBRARY)
basic.c
#include<string.h>
#include<jni.h>
jstring Java_com_example_FristJniActivity_getStringFromJni(JNIEnv *env, jobject thiz) {
return (*env)->NewStringUTF(env, "hello ndk and jni");
}
當前Android項目的根,有一個Android.mk Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_PACKAGE_NAME := TestJni
LOCAL_JNI_SHARD_LIBRARIES := testjni
LOCAL_REQUIRED_MODULES := testjni
include $(BUILD_PACKAGE)
在src文件夾,有一個活動(FristJniActivity) FristJniActivity.java
static {
System.loadLirary("testjni");
}
public native String getStringFromJni();
public void onCreate(Bundle b) {
super.onCreate(b);
TextView tv = new TextView(this);
tv.setText(getStringFromJNi());
setContentView(tv);
}
然後我編譯TestJni應用程序,之後我推入手機,部隊密切的APK可以found.But。
的錯誤是: java.lang.UnsatisfiedLinkError中:無法加載testjni:findLibrary返回null
我GOOGLE了。但我找不到解決方案。
我已經檢查了apk文件,testjni.so文件已經存在於/ lib/armeabi-v7a /目錄中。
你是怎樣的應用。 mk?可能是因爲您的手機配置沒有生成庫文件? – aProgrammer
沒有Application.mk文件。 @Amit –
你可以用jsting改變Java_com_example_FristJni_getStringFromJni JNIEXPORT jsting JNICALL Java_com_example_FristJni_getStringFromJni在頭文件和源文件中,看看它是否有任何區別 – Blackbelt