Android プロジェクトを Eclipse にインポートしようとしています。このプロジェクトを実行すると、「ライブラリが null です」というエラーが発生しました。このプロジェクトは別のものであることがわかりました。「jni」という名前のファイルが含まれています。私のライブラリはそのファイルにあります。このファイルのライブラリはコンパイルされていないと思います (理由はわかりません) NDK を使用する必要があるトピックを見たことがありますか? これについて明確な答えを持っている人はいますか?
3857 次
1 に答える
1
以下のリンクを参照してください。ndk サンプル 1 サンプル 2をダウンロードするためのリンク
ステップ 1 :最初にプロジェクトを作成し、プロジェクト ディレクトリに jni という名前のフォルダーを作成します。
Step2: jni フォルダーに add.c ファイルを作成し、以下の行を追加します。
#include "com_ndkadd_Addition.h"
JNIEXPORT jint JNICALL Java_com_ndkadd_Addition_messageFromNativeCode
(JNIEnv * env, jobject jObj,jint value1, jint value2)
{
return (value1 + value2);
}
ステップ 3 : jni フォルダーに Android.mk ファイルを作成し、以下のコードを実行します。
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := Addition
LOCAL_SRC_FILES := addition.c
include $(BUILD_SHARED_LIBRARY)
ステップ 4:コマンド プロンプトからプロジェクトの bin フォルダーに移動します。以下の行を入力し、Enter キーを押します。
javah -jni com.ndkadd.Addition
Step5:作成したcom_ndkadd_Addition.hファイルを jni フォルダーに移動します。
Step6:コマンド プロンプトから以下のようにネイティブ コードをコンパイルします。
location_of_ndk\project_name> location_of_ndk\ndk-build
ステップ 7: libs フォルダーに作成された .so ファイルのアクティビティと使用状況のコード コードの下。
public class Addition extends Activity {
TextView txtHello;
static
{
System.loadLibrary("Addition");
}
public native int messageFromNativeCode(int v1,int v2);
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView txtHello = new TextView(this);
txtHello.setText(""+messageFromNativeCode(5,5));
setContentView(txtHello);
}
}
注:: SDK がある場所に NDK を配置し、android-ndk-r8 フォルダーに JNI を含むプロジェクトを配置することをお勧めします。
于 2012-05-31T05:30:52.187 に答える