我正在使用android studio,并遵循android ndk的基本教程。我也让简单的项目有效。
问题:
我的本机lib返回一个简单的字符串。文件MyLibrary.cpp位于jni文件夹中,其工作方式如下:
#include "de_rownage_ndklib_MyNDK.h"
JNIEXPORT jstring JNICALL Java_de_rownage_ndklib_MyNDK_getMyString (JNIEnv *env, jobject)
{
return(*env).NewStringUTF("My Lib");
}
现在我想使用像这样的类:Scanning and Editing Android App Memory Values Programmatically,我是否必须将它放在JNIEXPORT jint包装器中?这对我来说没有意义。 JNI似乎是一个用Java调用c ++代码的接口。好像我不能创建一个新的memory.cpp文件并在没有JNIEXPORT的东西中调用它?
我也看到过这样的事情:
JNI(目录) - > NDK_MyFunc.c
在Memory.java(Activity-Class)中
public String execNDK(String params) {
String[] commands = new String[2];
commands[0] = "chmod 777 /data/data/com.android.test/NDK_MyFunc";
commands[1] = "/data/data/com.android.test/NDK_MyFunc " + params;
return shell.execute(commands, false);
}
这是如何工作的?它有效吗?该文件是否在android系统上编译并执行?我想要做的是在我的Android应用程序中执行上面的main()函数。