Android OS では、スタンドアロン コードからユーザー定義の 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 は何を指す必要がありますか?
どんな入力でも大歓迎です!