2017-09-28 1 views
-1

エラーは:原因:java.lang.UnsatisfiedLinkError:ネイティブメソッドが見つかりません。私は私のプロジェクトでSystem.loadLibraryと呼んだので、私は彼のプロジェクトの.soのパッケージ名を知る必要があることを知っています。私はそれを解決する方法があります。私は宣言メソッドの名前を得ることができるいくつかの方法。.soファイルのメソッドを呼び出す方法はありますが、.soファイルを生成するパッケージ名はわかりません。

答えて

0

NDKには、nmユーティリティが付属しています。 ツールチェーンフォルダにあります。 toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-nm

あなたはいくつかのエクスポートされたシンボルは、うまくいけばJava_my_package_name_MyClass_functionのようになります。

…-nm -D /path/to/the/existing/sharedlib.so 

実行することができます。このような機能は、ネイティブメソッドの機能のクラスMyClassパッケージmy.package.nameの実装です。

残念ながら、これはこれらの名前を逆にするのに役立ちます。ネイティブメソッドのパラメータや戻り値を簡単に再構築することはできません。このメソッドをのstaticと宣言する必要があるかどうかもわかりません。ライブラリ輸出JNI_OnLoadを機能場合

最後に、それはネイティブメソッドを隠し、かつ動的Cの実装にネイティブメソッドをバインドするRegisterNativesを使用することができます。

+0

した後、このコマンドを実行し、私は以下を得るが、パッケージ情報と何も
0012a1f4 Dは、多分あなたは*逃した
0012a114 D v3_ocsp_nocheck
0012668cのDのv3_ocsp_nonce
0012a0dcのDのv3_ocsp_serviceloc
0012a3d8 Dのv3_pci
user7386820

+0

をv3_ocsp_crlidありません* -D ** ** nm **へのパラメータ? –

関連する問題