在 android 操作系统中,我想从独立代码中调用用户定义的 java 类 API。
即,如果有一个具有“getint”API 的类“HelloWorldActivity”。我想从本机应用程序“nativecaller”中调用它
我发现了与此相关的帖子,但是我不清楚实现是如何完成的。 https://groups.google.com/forum/#!topic/android-ndk/_JidHzVWHM8
所以这里是代码片段:
#include <jni.h>
#include <cutils/log.h>
#include <stdlib.h>
int main(){
JavaVM *jvm;
JNIEnv *env;
JavaVMInitArgs vm_args;
JavaVMOption options[1];
options[0].optionString = "-Djava.class.path=/data/";
vm_args.version = JNI_VERSION_1_6;
vm_args.options = options;
vm_args.nOptions = 1;
vm_args.ignoreUnrecognized = JNI_FALSE;
/* Create the Java VM */
int res = JNI_CreateJavaVM(&jvm, &env, &vm_args);
if(!res){
/* invoke the Main.test method using the JNI */
jclass cls = env->FindClass("com/abc/mypackage/HelloWorld"); //it is not able to find the class
if(!cls)LOGE("\n\n\nclass not found!!!");
else{
jmethodID mid = env->GetMethodID(cls, "getint", "(V)I");
env->CallStaticVoidMethod(cls, mid,10);
}
/* We are done. */
jvm->DestroyJavaVM();
}
else
LOGE("\n\n\n\n CreateJAVAVM failed!!");
}
FindClass
正在回归null
。
1.是否可以访问活动中的类(apk)
2.-Djava.class.path 应该指向什么?
任何输入表示赞赏!