我在android源路径/packages/apps/中创建了一个android项目(testjni)。我已经编译了android源代码。
我已经添加了jni文件夹。在jni文件夹下,有一些文件,包括android.mk和basic.c。
安卓

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
安卓
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,但是当我把它推入手机后,强制关闭。
错误是:
Java.Lang.unSimuldIdLink错误:无法加载TestJNI:FunDrand返回空值
我搜索谷歌。但我找不到解决办法。
我已经检查了apk文件,testjni.so文件已经存在于/lib/armeabi-v7a/目录中。

最佳答案

我修改了一些值
jni/android.mk版本

LOCAL_MODULE := libtestjni

安卓
LOCAL_JNI_SHARD_LIBRARIES := libtestjni
LOCAL_REQUIRED_MODULES := libtestjni

,并使用命令“adb install*.apk”。
那么它工作得很好。

07-24 09:44
查看更多