二、Android NDKプログラミング予備のJava jni入門Hello World

4892 ワード

回転元:http://www.eoeandroid.com/forum.php?mod=viewthread&tid=264543&fromuid=588695
 
昨日はJNIを简単に绍介しました.今日はコードでJNIの実现プロセスを実现し、それぞれの心得を交流します.不适切な点があれば、の実现プロセスは主に昨日绍介したJavaからC/C++を呼び出す6つのステップです.Javaコード(Hello World)を作成EclipseでプロジェクトHello Worldを新規作成するには、まず独自のjavaコードを作成する必要があります.javaコードではnativeメソッドを宣言します.コードは非常に簡単です.以下に示す
コードクリップ、ダブルクリックコピー
01
02
03
04
05
06
07
08
09
10
11
12
13 package com.jackie.jni;
  public class HelloWorld {          public native void displayHelloWorld();
           static {                 System.loadLibrary( "HelloWorld" );          }
           public static void main(String[] args) {                 new HelloWorld().displayHelloWorld();          } }
注意:displayHelloWorld()メソッドの宣言には、java以外の言語で実装されていることを示すキーワードnativeがあります.方法には、c/c++言語で実装するため、実装は含まれません.システムに注意loadLibrary(「HelloWorld」)というコードは、静的初期化ブロックで定義され、hello共有ライブラリをマウントするためにシステムが使用する、これが後に生成されるHelloWorldである.dll(LinuxではHelloWorld.soなど、他のオペレーティングシステムが他の形式である場合)2.Javaコードのコンパイル:Eclipseまたは他のIDEが作成してくれました.自分でコンパイルする形式はjavacパッケージ名です.HelloWorld.JAva、だから私のプロジェクトは手動でコンパイルします:javac com.jackie.jni.HelloWorld.JAvaは対応するパッケージの下にあるHelloWorldを生成する.classファイル3.C/C++を作成する.hファイルヘッダのステップではjavahコマンドを使用して生成する.hファイルは、javah本プロジェクトの方法はdosウィンドウからプロジェクトホームに切り替える入力:javah-classpath bin com.jackie.jni.HelloWorld.プロジェクトホームでcom_が生成されましたjackie_jni_HelloWorld.hファイルの内容は以下の通りである.
コードクリップ、ダブルクリックコピー
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21 /* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class com_jackie_jni_HelloWorld */
  #ifndef _Included_com_jackie_jni_HelloWorld #define _Included_com_jackie_jni_HelloWorld #ifdef __cplusplus extern "C" { #endif /*   * Class:     com_jackie_jni_HelloWorld   * Method:    displayHelloWorld   * Signature: ()V   */ JNIEXPORT void JNICALL Java_com_jackie_jni_HelloWorld_displayHelloWorld    (JNIEnv *, jobject);
  #ifdef __cplusplus } #endif #endif
ここでこれに対して.hファイルは簡単に説明します:native宣言の方法ごとにJava_があります.クラス名_パッケージ名(.)「」で置換)メソッド名はこれに対応する.C/C++コードを記述するこの部分でjavaで定義された方法をC/C++言語で実現するには、VC++にProjectを新規作成し、HelloWorldを作成します.cppファイル、内容は以下の通りです
コードクリップ、ダブルクリックコピー
01
02
03
04
05
06
07
08
09
10 #include <jni.h> #include "com_jackie_jni_HelloWorld.h" #include <stdio.h>
  JNIEXPORT void JNICALL Java_com_jackie_jni_HelloWorld_displayHelloWorld(JNIEnv *env, jobject obj) {     printf( "Hello world!
"
);     return ; }
          5.共有ライブラリファイルを作成するこのVC++も手伝ってくれました.ここではincludeがjniになっていることに注意してください.hとさっき手に入れた「com_jackie_jni_HelloWorld.hファイル.VC++に設定してください.jni.hはJAVA_HOME/includeにあります.コンパイルが完了したらHelloWorld.dllファイルを生成します.6.Javaプログラムを実行して、上で生成したhello.dllファイルを私たちの作業ディレクトリにコピーします.このとき、私たちのディレクトリにはHelloWorld.java、HelloWorld.class、HelloWorld.dが含まれています.llファイル.Java HelloWorldコマンドを実行すると、コンソールにHello worldが表示されます.の出力です.(HelloWorld.classとHelloWorld.dllファイルは同じパッケージディレクトリの下にある必要があります)一、Android NDKプログラミング予備のJava jni概要:http://www.eoeandroid.com/thread-264384-1-1.html三、Android NDKプログラミング予備のJava jni入門作成C/C++共有ライブラリ:http://www.eoeandroid.com/thread-264971-1-1.html