1

他のアプリケーションが使用できるように、ネイティブ ライブラリを Android ソースに追加する必要があります (コード内でこのライブラリから関数を呼び出します)。使用したいすべてのプロジェクトに追加せずに、埋め込みのようなライブラリを使用する必要があります。しかし、私はこれに関する情報を見つけることができません。

これを行う方法を教えてください。ごめん

4

1 に答える 1

3

私が理解している限り、あなたがやろうとしていることは、Android で c/c++ コードを実行することです。私は正しいですか?

これを可能にするには、Android NDKを使用してネイティブ ライブラリをビルドし、それを Java コードにロードする必要があります。

ndk をインストールした後、Android でネイティブ コードを実行するには、次の 4 つの簡単な手順に従う必要があります。

1) ネイティブ コード用の Java「ラッパー」を作成します。例えば。キーワードMyNativesで宣言されたメソッドを保持するという名前のクラスを作成します。nativeこれは、このメソッドの実装がネイティブ ライブラリで行われることをコンパイラに伝えます。ライブラリをロードする静的イニシャライザを作成します。例えば:

    public class MyNatives { 
        static {
            System.loadLibrary("hello-jni"); 
        }
        public void native nativeMethod(int x); 
    }

2) コードをコンパイルしjavah、ネイティブ クラスに対して呼び出されたツールを実行します (これを実行する eclipsee 用のプラグインがいくつかあります。たとえば、sequoyah ) 。

    cd <your project path>
    mkdir jni
    javah -d jni -classpath bin/classes com.example.MyNatives

これにより、jni ディレクトリにヘッダーが生成されます (Android プロジェクトのすべてのネイティブ コードは、このディレクトリ内にある必要があります)。

3) 生成されたヘッダーからメソッドの実装を追加します

4) android ビルド システムとビルド ライブラリの makefile を作成します。Makefile の名前はAndroid.mk. いくつかの特定の変数とマクロを使用します。詳細については、NDK のドキュメントを参照してください。

    LOCAL_PATH := $(call my-dir)

    include $(CLEAR_VARS)
    # your library name
    LOCAL_MODULE    := hello-jni

    # all source files
    LOCAL_SRC_FILES := hello-jni.c

    include $(BUILD_SHARED_LIBRARY)

ライブラリを構築するにはndk-build、プロジェクトのルートディレクトリから呼び出すだけです

詳細については、Android NDK のドキュメントを参照してください。少し役に立てば幸いです。

于 2013-08-07T06:21:05.497 に答える