我在没有 Eclipse 的 android 源路径/packages/apps/中创建了一个 android 项目(TestJni)。我已经编译了android源代码。
我已经添加了jni文件夹。在 jni 文件夹下,有一些文件,包括 Android.mk 和 basic.c 。
安卓.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := basic.c
LOCAL_MODULE := testjni
include $(BUILD_SHARED_LIBRARY)
基本的.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文件夹中,有一个activity(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。但是将它推入手机后,强制关闭。
错误是:java.lang.unsatisfiedlinkerror:couldn't load testjni: findLibrary returned null
我用谷歌搜索。但我找不到解决方案。
我检查了apk文件,testjni.so文件已经存在于/lib/armeabi-v7a/目录中。