使用 C++ 语言从 ndk 调用方法 String java

Call method String java from ndk with languge c++

我想在 java 中调用方法并将字符串返回到 ndk,但是当我调用 java 方法时我的应用程序会崩溃。 我检查了更多的 Whosebug 站点,但是当我使用其他代码时,它不起作用。 帮我谢谢

在 ndk 代码中:

extern "C"
 JNIEXPORT jstring JNICALL
 Java_com_hppni_battleword_view_SplashScreen_tkk(JNIEnv *env, jclass type) {
 jclass jClass = env->FindClass("com/hppni/battleword/view/SplashScreen");
 if (jClass != nullptr) {
    jmethodID mid2 = env->GetStaticMethodID(jClass, "encryptThisString",
                                            "(Ljava/lang/String;)Ljava/lang/String;"); // app will crash here
    if (mid2 != nullptr) {
        env->CallStaticVoidMethod(jClass, mid2, (jstring) "ali"); // app will crash here
    }
}
 return env->NewStringUTF(getSignature(env));
}

里面 java class/Activity :

 public static String encryptThisString(String input) {
    Log.d("NDK", input);
  return input;
 }

您不能只将 char * 字符串转换为 jstring。例如,您需要使用 NewStringUTF 等 JNI 函数创建 jstring 对象。