【发布时间】:2022-09-26 06:47:47
【问题描述】:
这是我所做的:
- 使用android studio模板创建Native C++项目
- 创建一个类 com.jnitest.app.JNIInterface
package com.jnitest.app; public class JNIInterface { public static native String getString(); public static native String getName(); }使用 native-lib.cpp
#include <jni.h> #include <string> extern \"C\" JNIEXPORT jstring JNICALL Java_com_jnitest_app_JNIInterface_getString(JNIEnv *env, jclass thiz) { std::string name = \"return String from JNIInterface\"; return env->NewStringUTF(name.c_str()); } extern \"C\" JNIEXPORT jstring JNICALL Java_com_jnitest_app_JNIInterface_getName(JNIEnv *env, jclass clazz) { std::string name = \"return name from JNIInterface\"; return env->NewStringUTF(name.c_str()); }- 创建一个测试类com.jnitest.app.JNITest
package com.jnitest.app; public class JNITest { { System.loadLibrary(\"app\"); } public static void main(String[] args) { System.out.println(\"Hello from JNITest\"); System.out.println(\"String from JNI: \" + JNIInterface.getString()); } }- 构建推送并运行
adb push .\\build\\intermediates\\apk\\debug\\app-debug.apk /data/local/tmp/app-debug.jar adb shell CLASSPATH=/data/local/tmp/app-debug.jar app_process ./ com.jnitest.app.JNITest- 获取输出
Hello from JNITest Killed为什么我不能得到正确的结果?
-
可能相关:How to execute the dex file in android with command?。由于这是一个老问题,请阅读/关注评论线程。