0

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 は何を指す必要がありますか?

どんな入力でも大歓迎です!

4

1 に答える 1