2012-12-14 43 views
3

我在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 /目錄中。

+0

你是怎樣的應用。 mk?可能是因爲您的手機配置沒有生成庫文件? – aProgrammer

+0

沒有Application.mk文件。 @Amit –

+0

你可以用jsting改變Java_com_example_FristJni_getStringFromJni JNIEXPORT jsting JNICALL Java_com_example_FristJni_getStringFromJni在頭文件和源文件中,看看它是否有任何區別 – Blackbelt

回答

0

我修改一些值

JNI/Android.mk

LOCAL_MODULE := libtestjni 

Android.mk

LOCAL_JNI_SHARD_LIBRARIES := libtestjni 
LOCAL_REQUIRED_MODULES := libtestjni 

,並使用命令「ADB安裝*。 apk「。

然後它運作良好。

0

UnsatisfiedLinkerror被再次this.Build你的.so文件解決了ndk_build每ú改變.c文件時間 監守,你必須建立的.so文件

相關問題