0

次のメイクファイルを含む jni ネイティブ コード (example.c) を含むアプリケーション プロジェクトがあります。

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := example
LOCAL_SRC_FILES := example.c
LOCAL_LDLIBS    := -L$(SYSROOT)/usr/lib -llog 

include $(BUILD_EXECUTABLE)

だから私はそれを実行可能ファイルのように構築していて、すべてがうまくいきます。実行可能ファイルはアプリケーションに「パック」されていますか? はいの場合、パスまたはメモリ内の場所を取得して、Java コードから実行できるようにするにはどうすればよいですか?

PS: 次のように、シェル コマンドを使用してメイン関数をルートとして実行したいので、ネイティブ コードを共有ライブラリとしてビルドしていません。

chmod 777 /path/exe
/path/exe
4

1 に答える 1

0

directory:/jniと別の directory を作成します/libs。あなたexample.cとあなたをディレクトリのAndroid.mk中に入れてください/jni。ディレクトリにcd移動して、コマンドを入力します。Makefile が正しく、ソース ファイルにエラーがない場合、ディレクトリの下に別の新しいディレクトリが作成されます。このディレクトリ内に、実行可能ファイルが存在します。/jnindk-build/libs/armeabi

この実行可能ファイルを実行するには、Android デバイスをルート化する必要があります。または、SDK で提供される Android エミュレーターを使用できます。

さらに、この実行可能ファイルを/data/local/Android デバイスの場所に配置する必要があります (デバイスがルート化されていても、他の場所からの実行権限がないためです。

以下のコマンドを使用してこれを行うことができます。

adb push example /data/local/

モードに入り、adb shellcd し/data/local/ます。

ファイルのアクセス許可を変更します。chmod example 777

この同じ場所に、シェル ファイルを配置できます。また、このディレクトリから sdcard やその他のフォルダーにアクセスすることもできます。

これがお役に立てば幸いです。すべてがうまくいく場合は、答えを受け入れることを忘れないでください。

于 2014-02-21T10:28:36.607 に答える