参考:AndroidのNDK、サンプル/ハローJNIの典型的なプロジェクト
システム環境:Ubuntuの12.04 LTS 32ビット
1、仕事する準備ができて
Eclipseを開き、新しいAndroidのプロジェクト:
アプリケーション名:HelloJNI
プロジェクト名:HelloJNI
パッケージ名:com.example.hellojni
活動:MainActivity
アクティビティレイアウト:activity_main.xml
「:テキストアンドロイド」プロパティを削除、属性:「IDアンドロイド」を追加し、<TextViewに/>タグとして、activity_main.xmlを変更します。
< RelativeLayout のxmlns:アンドロイド= "http://schemas.android.com/apk/res/android" のxmlns:ツール= "http://schemas.android.com/tools" のandroid:layout_width = "match_parent" のandroid:layout_height = "match_parent" > < TextViewには アンドロイド:ID = "@ + ID / activity_main_textview_hello" アンドロイド:layout_width = "wrap_content" のandroid:layout_height = "wrap_content" アンドロイド:layout_centerHorizontal = "true"の アンドロイド:layout_centerVertical = "true"の ツール:コンテキスト= "MainActivity" / > </ RelativeLayout >
SRC / COM /例を修正/ hellojni / MainActivity.java、レイアウトファイルのTextViewオブジェクトの参照を追加します。
パッケージcom.example.hellojni。 輸入android.os.Bundle; 輸入android.app.Activity。 輸入android.widget.TextView。 パブリック クラス MainActivityは延びアクティビティ{ 民間のTextView helloTextView。 @オーバーライド 公共 のボイドのonCreate(バンドルsavedInstanceState){ スーパー.onCreate(savedInstanceState); setContentView(R.layout.activity_main)。 helloTextView = (のTextView)findViewById(R.id.activity_main_textview_hello)。 } }
Javaファイルに記述された2、
MainActivityクラスで
声明ネイティブメソッド
公共の ネイティブ文字列のhello();
.soのライブラリをロードします
静的{ System.loadLibraryを( "MYLIB" ); }
TextViewの表示文字列関数は、ハロー返します
helloTextView.setText(ハロー())。
次のようにMainActivity.javaコードは次のとおりです。
パッケージcom.example.hellojni。 輸入android.os.Bundle; 輸入android.app.Activity。 輸入android.widget.TextView。 パブリック クラス MainActivityは延びアクティビティ{ 静的{ System.loadLibraryを( "MYLIB" ); } 民間のTextView helloTextView。 @オーバーライド 公共 のボイドのonCreate(バンドルsavedInstanceState){ スーパー.onCreate(savedInstanceState); setContentView(R.layout.activity_main)。 helloTextView = (のTextView)findViewById(R.id.activity_main_textview_hello)。 helloTextView.setText(ハロー())。 } 公共の ネイティブ文字列のhello(); }
Cのファイルに書かれた3、
。プロジェクトHelloJNIディレクトリの下に、フォルダのJNIを作成します
B。.hファイルのjavahはを生成するためのツールを使用して、
オープンターミナルは、プロジェクトディレクトリのEclipseワークスペースにカレントディレクトリを切り替えます
CD HelloJNI / binに/クラス
JVH D Actiteepi:// wwvkchnblogskcom / jtri / -jni Com.akshmplekhellojtriknaenachtivity
javahはは、 JavaクラスからCヘッダファイルとCソースファイルを生成します。これらのファイルは、JavaとCのコードが相互作用することを可能にする結合接着剤を提供しています。
使用するjavahは:http://docs.oracle.com/javase/6/docs/technotes/tools/windows/javah.html
.hファイルのディレクトリJNIを生成するためのプロジェクトを更新
C。実現方法ハロー
JNIのディレクトリでは、ドキュメントの作成と編集com_example_hellojni_MainActivity.c
javahははJava_com_example_hellojni_MainActivity_hello機能を達成する前に生成された.hファイルを含めます
#include " com_example_hellojni_MainActivity.h " JNIEXPORT JSTRING JNICALL Java_com_example_hellojni_MainActivity_hello (JNIEnvの * envを、jオブジェクトthiz){ リターン(* ENV) - > NewStringUTF(ENV、" こんにちはJNI!" ); }
4、文書の作成Android.mk
JNI /ディレクトリには、メイクファイルAndroid.mkを作成します。
LOCAL_PATH:= $(my-呼び出しDIR) $(CLEAR_VARS)が含ま LOCAL_MODULE: = MYLIB LOCAL_SRC_FILES: = com_example_hellojni_MainActivity.c 含める$(BUILD_SHARED_LIBRARY)
注意:Android.mkのために、別のブログ記事で説明します
5、コンパイルして実行
。コンパイルされた共有ライブラリ
プロジェクトのルートディレクトリにカレントディレクトリを切り替え、すなわちHelloJNI /
使用のAndroid NDKは、ツールNDKビルドが付属して、/ディレクトリにJNI .cファイルをコンパイルし、LIBS / armeabiディレクトリ内の.so共有ライブラリを生成します
B。プロジェクトを実行
ディスプレイに "Hello JNI!"、ありがとうございます!
ます。https://www.cnblogs.com/dyingbleed/archive/2012/09/30/2709320.htmlで再現