Android Studio NDK 返回 jint

use*_*988 1 java-native-interface android android-ndk

我已成功按照本教程https://www.youtube.com/watch?v=kFtxo7rr2HQ学习如何使用 Android Studio 构建 NDK 应用程序。

该教程使用了public native String HelloJNI();

HelloJNI.c该字符串在文件中设置

#include "com_example_myapplication_MainActivity.h"
/* Header for class com_example_myapplication_MainActivity */

/*
 * Class:     com_example_myapplication_MainActivity
 * Method:    HelloJNI
 * Signature: ()Ljava/lang/String;
 */
JNIEXPORT jstring JNICALL Java_com_example_myapplication_MainActivity_HelloJNI
  (JNIEnv *env, jobject obj)
  {
(*env)->NewStringUTF(env, "Hello from jni");
}
Run Code Online (Sandbox Code Playgroud)

并在运行时加载

static{
    System.loadLibrary("HelloJNI");
    }
Run Code Online (Sandbox Code Playgroud)

现在我试图做同样的事情,但检索而int不是string public native int getintONE();

我按照教程中的相同步骤操作,一切正常,现在我的getintONE.c阅读

#include "com_example_myapplication_MainActivity.h"
/*
 * Class:     com_example_myapplication_MainActivity
 * Method:    getintONE
 * Signature: ()I
 */
JNIEXPORT jint JNICALL com_example_myapplication_MainActivity_getintONE
   (JNIEnv *env, jobject obj)
Run Code Online (Sandbox Code Playgroud)

相当于什么

JNIEXPORT jstring JNICALL Java_com_example_myapplication_MainActivity_HelloJNI
  (JNIEnv *env, jobject obj)
  {
(*env)->NewStringUTF(env, "Hello from jni");
}
Run Code Online (Sandbox Code Playgroud)

返回一个 int,而不是一个字符串。

我在这里阅读了很多问题,阅读了教程和文档,我在研究中看到并尝试过的大部分内容都是返回示例、jint 数组、将 jint 转换为字符串,以及在我看来更涉及高级的内容主题。

提前致谢

Chr*_*ton 5

jint 是一种原始类型,因此如果您已包含,jni.h则可以简单地从函数中返回一个 - 无需像使用 NewStringUTF() 为字符串所做的那样分配对象。

JNIEXPORT jint JNICALL com_example_myapplication_MainActivity_getintONE(JNIEnv *env, jobject obj) {
      return 1;  //or anything that can be cast to a jint
}
Run Code Online (Sandbox Code Playgroud)