2016年3月31日 星期四

Android NDK 環境安裝 for mac



1. 至官方網站下載 ndk,並解壓縮至自訂資料夾

官方網址:http://developer.android.com/intl/zh-tw/ndk/downloads/index.html
舉例路徑:Users/Peter/DevelopKit/NDK/



2.  打開 Terminal 命令终端,建立 bash_profile 


  • 一. 输入 pico .bash_profile 
  • 二. export NDK_ROOT=/Applications/Android-NDK/android-ndk-r10e 
  • 三. export PATH=$PATH:$NDK_ROOT 
  • 四. 最後儲存( control+X) 選 Y 



3. 設定 Android Studio 外部工具:Android Studio → Preferences... → External Tools


-------------------------
新增 NDK Build
-------------------------
Name: NDK Build
Group: NDK
Description: NDK Build
Options: 全打勾
Show in: 全打勾
Tools Settings:
Program: NDK目錄/ndk-build
Parameters: NDK_PROJECT_PATH=$ModuleFileDir$/build/intermediates/ndk NDK_LIBS_OUT=$ModuleFileDir$/src/main/jniLibs NDK_APPLICATION_MK=$ModuleFileDir$/src/main/jni/Application.mk APP_BUILD_SCRIPT=$ModuleFileDir$/src/main/jni/Android.mk V=1
Working directory: $SourcepathEntry$

-------------------------新增 Javah-------------------------
Name: Javah
Group: NDK
Description: Javah
Options: 全打勾
Show in: 全打勾
Tools Settings:
Program: /usr/bin/javah (用 which javah 查詢目錄)
Parameters: -v -jni -d $ModuleFileDir$/src/main/jni $FileClass$
Working directory: $SourcepathEntry$


4.建立 MyHelloJni 專案

  1. Android Studio -> New Project : MyHelloJni
  2. local.properties 增加:ndk.dir = NDK安裝目錄
  3. build.gradle 增加:ndk {moduleName "JniTest"}
  4. gradle.properties 增加:android.useDeprecatedNdk = true
  5. MainActivity.java 加入 LoadLibrary 和 Library 中的 c method :
  6. 右鍵新增 jni Folder ,並在裡面新增 Android.mk、Application.mk、JniTest.c 檔案
    ----------------------
    Android.mk
    ----------------------
    LOCAL_PATH := $(call my-dir)

    include $(CLEAR_VARS)

    LOCAL_MODULE := JniTest
    LOCAL_SRC_FILES := JniTest.c

    include $(BUILD_SHARED_LIBRARY)

    ----------------------
    Application.mk
    ----------------------
    APP_ABI := all

    ----------------------
    JniTest.c
    ----------------------
    #include <jni.h>
    #include "project_peter_com_myhellojni_MainActivity.h"

    // JNICALL 呼叫自己專案的路徑方法,將 . 替換成 _ 
    JNIEXPORT jstring JNICALL Java_project_peter_com_myhellojni_MainActivity_getStringFromNative
            (JNIEnv *evn, jobject obj) {
        return (*evn)->NewStringUTF(evn,"Hello NDK demo");
    }

  7. 調用 javah 協助 JNI 相關檔案建置:對 MainActivityjava 右鍵 NDK (自定義 group) -> Javah.
    執行成功後,會在 jni 資料夾中自動產生 "路徑_ MainActivity.h"



  8. 使用 NDK Build 建置:對 JniTest.c 右鍵 NDK (自定義 group) -> NDK Build.
    執行成功後,會自動產生 jniLibs 資料以及各核心的 .so library


參考資料:

  • hAndroid筆記: Android Studio + NDK + JNI
    https://8085studio.wordpress.com/2015/04/25/android-studio-ndk-jni/
  •  Android 如何藉由JNI來使用C/C++程式?
  • https://magiclen.org/android-jni/

1 則留言:

  1. Lucky Club Casino Site - Lucky Club
    Lucky Club casino site. The site was created in 2006, luckyclub.live by the famous and respected Pragmatic Play company. Its main focus was on the quality of

    回覆刪除