AndroidJNI入門第一篇——HelloWord

技術小胖子發表於2017-11-15

 


  1. public class Printf_Jni {  
  2.  
  3.      static {  
  4.             System.loadLibrary(“com_nedu_jni_helloword_printf-jni”);  
  5.         }  
  6.     public native void printHello();  

 

 

第二步:使用javah命令生成.h標頭檔案,如圖:

 

這個要回到src目錄下,不知道什麼原因,如果在上面的javac路徑下會報錯,如圖:

使用javah命令生成的標頭檔案如下:


  1. /* DO NOT EDIT THIS FILE – it is machine generated */ 
  2. #include <jni.h>  
  3. /* Header for class com_nedu_jni_helloword_Printf_Jni */ 
  4.  
  5. #ifndef _Included_com_nedu_jni_helloword_Printf_Jni  
  6. #define _Included_com_nedu_jni_helloword_Printf_Jni  
  7. #ifdef __cplusplus  
  8. extern “C” {  
  9. #endif  
  10. /*  
  11.  * Class:     com_nedu_jni_helloword_Printf_Jni  
  12.  * Method:    printHello  
  13.  * Signature: ()V  
  14.  */ 
  15. JNIEXPORT void JNICALL Java_com_nedu_jni_helloword_Printf_1Jni_printHello  
  16.   (JNIEnv *, jobject);  
  17.  
  18. #ifdef __cplusplus  
  19. }  
  20. #endif  
  21. #endif  

第三步:編寫c檔案,程式碼如下:


  1. #include<stdio.h>    
  2. #include <stdlib.h>    
  3. #include “com_nedu_jni_helloword_Printf_Jni.h”    
  4. JNIEXPORT void JNICALL Java_com_nedu_jni_helloword_Printf_1Jni_printHello  
  5.   (JNIEnv *e, jobject j)    
  6. {    
  7.     printf(“Hello world!”);   
  8. }    

第四步,書寫Android.mk檔案,編譯c檔案

        Android.mk檔案如下:


  1. LOCAL_PATH := $(call my-dir)  
  2.  
  3. include $(CLEAR_VARS)  
  4.  
  5. LOCAL_MODULE    := com_nedu_jni_helloword_printf-jni  
  6. LOCAL_SRC_FILES :=Printf_Jni.c  
  7.  
  8. include $(BUILD_SHARED_LIBRARY) 

 


  1. System.loadLibrary(“com_nedu_jni_helloword_printf-jni”);   

 

 


  1. Printf_Jni print=new Printf_Jni();    

  1. print.printHello();

/**。

* @author 張興業

* 郵箱:xy-zhang@163.com

* qq:363302850

*/

通過下面的程式碼載入so檔案通過下面的程式碼載入so檔案

呼叫如下:

LOCAL_MODULE    := com_nedu_jni_helloword_printf-jniLOCAL_MODULE    := com_nedu_jni_helloword_printf-jniLOCAL_MODULE  表示so檔名

LOCAL_SRC_FILES 需要編譯的檔案

按照這篇文章(Get Your Eclipse-Integrated NDK On!)的介紹就可以在Eclipse編譯了。

第五步:使用so檔案:

    通過下面的程式碼載入so檔案

 2、javac編譯

            進入java檔案所在路徑,呼叫javac命令,如圖:

android支援使用NDK開發C程式,關於配置NDK環境問題應該不用再贅述了,這個網上有很多,這裡通過一篇例項來講述簡單的JNI開發,大家可以參考這篇文章(Get Your Eclipse-Integrated NDK On!)搭建Eclipse編譯C語言為so檔案的開發環境。

        native方法實現步驟如下:

        1、在Java中宣告native()方法,然後編譯(javac); 

      2、用javah產生一個.h檔案; 

      3、編寫包含.h檔案的c檔案

      4、編譯c檔案

      5、使用編譯成功的so檔案。

 

       第一步:

              1、宣告native方法




     本文轉自xyz_lmn51CTO部落格,原文連結:http://blog.51cto.com/xyzlmn/817227,如需轉載請自行聯絡原作者



相關文章