2017-07-11 4 views
0

アンドロイドツールチェーンには "jni.h"ヘッダーがありますが、リンク先のライブラリはありません。アンドロイドツールチェインにリンクするJNIライブラリがありません

私のアプリでCコードからJava関数を呼び出すにはどうすればいいですか?

+0

ヘッダーで十分ですか、そうでないと思われるコンパイル時エラーがありますか? _ "私のアプリでCコードからJava関数を呼び出すにはどうすれば教えてくれますか?_はい:http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/functions.html – Michael

答えて

1

AndroidはJNIライブラリをエクスポートしません。つまり、システムには、ユーザ空間のCコードからJNI_CreateJavaVM()と彼女のilkを呼び出す方法はありません。独自のJVMを作成することはできますが、Javaは同じではなく、Android SDKのクラスとメソッドにアクセスすることはできません。

Androidでは、特別なJVM(DalvikまたはART)を使用してZigoteプロセスが開始され、JavaはCコード(.soファイル形式)を読み込むことができます。逆もありません。

あなたのCコードでは、CallVoidMethod()のような標準のJNIテクニックを使用して、Javaメソッドを呼び出すことができます。 Android SDKのJavaメソッドでは、多くの場合、contextのような「ハンドル」が必要であることに注意してください。通常、これらのハンドルを与えるJavaからCへの呼び出しに依存する必要があります。

関連する問題