Android Ndk调用本机c ++代码总是jni?

时间:2016-08-20 09:57:21

标签: android c++ function android-ndk java-native-interface

我正在使用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()函数。

0 个答案:

没有答案