使用IDEA開發jni

使用IDEA或者Android Studio可以進行ndk開發。
由於Android Studio是基於IDEA的,所以方法都是通用的。(eclipes請參考網上其他網友的博文)

1、搭建JNI環境
2、開始Hello,JNI!
  • local.properties中添加NDK路徑。如下:
sdk.dir=C\:\\Android\\android-sdk-windows
ndk.dir=C\:\\Android\\android-ndk
  • 新建一個普通的Android Project。Activity的類名爲MainActivity。
  • 在類中添加一個native方法:public native String getStringFromJni()
  • make projct或者build project。
  • 使用javah來生成*.h頭文件。
1、建立jni文件夾:在module(通常名爲app)上右鍵->New->Folder->JNI Folder。如果已經存在則不需要添加。
2、 打開IDEA的Terminal窗口,默認是project根目錄,通過``cd app\src\main``進入main目錄。
3、 生成頭文件:``java h -d jni -classpath sdkdir\platforms\android-21\android.jar;..\..\build\intermediates\classes\debug com.example.testandroid.app.MainActivity``。
我的是``java h -d jni -classpath c:\Android\android-sdk-windows\platforms\android-21\android.jar;..\..\build\intermediates\classes\debug com.example.testandroid.app.MainActivity
``,後面解釋這個命令的含義。
4、 如果沒有保存,jni目錄下會生成頭文件``com_example_testandroid_app_MainActivity.h``。
  • jni目錄下添加.c文件,名稱沒有限制,這裏我們使用main.c。添加引用#include "com_example_testandroid_app_MainActivity.h"
    你可以在上面生成的頭文件裏面最後找到native函數的聲明。複製到main.c文件中,添加實現。
// 頭文件中的生成函數聲明
/*
 * Class:     com_example_testandroid_app_MainActivity    類名
 * Method:    getIntFromJni                               函數名
 * Signature: ()I                                         函數簽名
 */
JNIEXPORT jint JNICALL Java_com_example_testandroid_app_MainActivity_getIntFromJni
  (JNIEnv *, jobject);
// 我們的實現,一定不要忘了添加參數名
JNIEXPORT jstring JNICALL Java_com_example_testandroid_app_MainActivity_getStringFromJni
  (JNIEnv *env, jobject obj)
  {
    return (*env)->NewStringUTF(env, "hello, jni!");
  }
  • app/build.gradle添加ndk配置
defaultConfig {
    applicationId "com.example.testandroid.app"
    minSdkVersion 9
    targetSdkVersion 22
    versionCode 1
    versionName "1.0"
    ndk {
        moduleName "Myso";//生成的so文件名稱,可以不跟c文件同名
    }
}
  • 在MainActivity.java裏面添加引用
static {
    System.loadLibrary("Myso");
}
// oncreate()中添加,顯示得到的字符串
Toast.makeText(this, getStringFromJni(), Toast.LENGTH_SHORT).show();
  • 到此完成整個hello,jni。你可以運行看看效果了。
3、一些解釋
發佈了29 篇原創文章 · 獲贊 2 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章