天天看點

Android NDK 配置和實作NDK環境配置NDK生成SO檔案

從ndk7以後,無需在配置cygwin等模拟unix/linux操作環境。ndk内部內建了這些功能。

2014年以後,google被封,Android官網無法通路,這裡推薦一個國内的映像http://wear.techbrood.com/

NDK環境配置

第一步:NDK下載下傳

http://wear.techbrood.com/tools/sdk/ndk/index.html

下載下傳完成後,直接解包就可以。

第二部:配置eclipse

Android NDK 配置和實作NDK環境配置NDK生成SO檔案

1、環境變量

         Window環境下cmd指令設定

        set PATH=%PATH%;F:/java/android-ndk-r10

         F:/java/android-ndk-r10是ndk解壓後的路徑

        注意:英文字母,不要出現漢字,切不要有“空格“

     2、配置Eclpise

        Window-》Preference-》android-》NDK

Android NDK 配置和實作NDK環境配置NDK生成SO檔案

       執行這些之前需要配置好Android開發的基本環境

NDK生成SO檔案

         第一步:建立Android工程

         第二步:在src檔案下建立包com.test.classes

         第三步:在第二步建立的包下建立class類 JNIClass.java

        
               package com.test.classes;      
public class JNIClass {
 
  				static{  
          				System.loadLibrary("demo");//一定要注意名稱沒有“lib"  
     				}  
 
			public native int plus(int a,int b);        
}      

      第四步:右鍵工程選擇Android tools-》Android native support……

Android NDK 配置和實作NDK環境配置NDK生成SO檔案

    填入LIB的name,即将來生成so的名字。會自動生成jni檔案夾,在檔案夾内自動生成demo.cpp和Android.mk檔案。

      第五步:打開demo.cpp增加

JNIEXPORT jint JNICALL Java_com_test_classes_JNIClass_plus(JNIEnv* env, jobject obj, jint a, jint b)
{
 //傳回計算結果
 return a+b;
}      
extern "C"{
 JNIEXPORT jint JNICALL Java_com_test_classes_JNIClass_plus(JNIEnv* env, jobject obj, jint a, jint b);
}      

      Java_com_test_classes_JNIClass_getString是包名+檔案名+函數名

若是建立的cpp檔案,則必須要帶extern  ”C“,否則會提示找不到本地實作

      第六步:在Activity中調用本地檔案

public class MainActivity extends Activity {      
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
     TextView  tv = new TextView(this);
        tv.setText(new hello().helloFromJni() );
        tv.append("\n\r");
        tv.append(new JNIClass().plus(9, -10)+"");
        setContentView(tv);
 }
}      

     第七步:直接運作工程就會生成so檔案。

可以将libs檔案下的so檔案拷貝到别的工程直接使用。