2017-05-13 12 views
0

私は多くの投稿を読んでいますが、まだ解決できません。対応するjni関数を解決できません

私の誤りラインとプロジェクトの構造があります:error and structure

いくつかのライブラリとのconfigs、私は別のプロジェクトから取る...そして、私が間違っていたところを知りませんが。

tools

を必要に応じて、私はあなたのファイルのソースコードを与えるには、任意のヘルプをありがとうございました。

+0

プロジェクトを試す これを取得する 外部ネイティブビルドの問題FAILURE:例外が発生してビルドに失敗しました。 *何が問題になりました: プロジェクト ':app'の設定中に問題が発生しました。 > D:\ android \ AndroidStudioProjects \ DiceReader \ app \ src \ main \ jniLibs \ Android.mk –

答えて

2

[OK]、この欠落した 'JNI関数'は大したことではありません。私はそれが赤で強調表示されていることを知っていますが、機能がリンクされているだけで、IDEが判断できる方法ではありません。

まず、ここでは関連するソースコードは次のとおりです。https://github.com/koreader/crengine/blob/master/android/jni/cr3engine.cpp#L770

CrEngineは、実行時に関数をリンクされています。あなたのIDEがそれらを取り上げない理由は、CrEngine関数がJava_com_の代わりにJava_org_で始まるからです。エンジンに依存して自動的にリンクする場合、これは問題になりますが、前述のように、実行時に明示的にリンクされています(jniRegisterNativeMethods)。


cleanを行うと25.0.3(またはそれ以上)あなたのgradle.buildファイルの中にあなたのビルドツールを更新します。 SDKとNDKを更新します。その後、再構築します。私が見たエラーのいくつかは古いビルドツールによって引き起こされる可能性があります。

+0

特に、私は 'make:***を使用してターゲット 'xxxx' xxx \ cp_stats.o 'に必要です。停止する。更新する前に常に。私は修正するためにビルドをきれいにする必要があります。 –

2

Android Studio 2から3にアップグレードしてからこのエラーが発生しています。コードはコンパイルされますが、IDEはネイティブ関数を認識しません。 (これは、私がJNIの関数名を単純化するために作成したプリプロセッサマクロのためかもしれません)。

クラスの宣言の前に@SuppressWarnings("JniMissingFunction")を追加することでJavaでこのエラーを抑制しました。

+0

同じ問題がここにあります!コードを変更せずに回避策をとることはできませんか? –

+1

私が知っていることはありません。私はこの問題をAndroid Studioバージョン1に戻しました。バージョン2では問題はなくなりましたが、バージョン3では再び現れました。 –

関連する問題