2

Android プロジェクトを Eclipse にインポートしようとしています。このプロジェクトを実行すると、「ライブラリが null です」というエラーが発生しました。このプロジェクトは別のものであることがわかりました。「jni」という名前のファイルが含まれています。私のライブラリはそのファイルにあります。このファイルのライブラリはコンパイルされていないと思います (理由はわかりません) NDK を使用する必要があるトピックを見たことがありますか? これについて明確な答えを持っている人はいますか?

4

1 に答える 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 に答える