2016年4月5日 星期二

玩玩 NDK

NDK 是用 c 或 c++ 來寫 android  app.
很容易用來開發手機上使用的執行檔, 像是簡單的 hello world 等.
下載程式:  http://developer.android.com/ndk/downloads/index.html
我目前試用的是 r11c linux x86 64 bit 版 android-ndk-r11c-linux-x86_64.zip
但該網站建議大家還是用 SDK 開發 android app 較適合.

目錄 helloworld 內容共含 3 個檔案
main.cpp          --- 主程式
Android.mk      ---  給 ndk compliler 用的 makefile
Application.mk --- 給 ndk 產生一些平台要用的指示檔


main.cpp 主程式內容:
// begin of main.cpp
#include "iostream"
#include "stdio.h"
using namespace std;
int main(int argc, char **argv)
{
int i;
   cout << "Hello world" <<  endl;
   printf("Hi printf\n");
   for(i=0;i
<argc;i++)   {
       printf("argv[%d]:%s\n",i,argv[i]);
    }
    return 0;
}
// end of main.cpp 

Android.mk 檔案內容:
# begin of Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := main.out
LOCAL_C_INCLUDES +=
LOCAL_SRC_FILES := main.cpp
include $(BUILD_EXECUTABLE)
# end of  Android.mk

Application.mk 檔案內容:
#  begin of Application.mk
APP_STL := stlport_static
APP_PLATFORM := android-19
APP_BUILD_SCRIPT := Android.mk
#  end of Application.mk


使用 bash 執行以下 2 行 shell script 來設定好環境變數, 假設 ndk 掛在 /mnt/rw/ndk 上
export PATH=/mnt/rw/ndk/android-ndk-r11c:$PATH
export NDK_PROJECT_PATH=.

cd 到 helloworld 目錄內, 使用 bash 執行以下 shell script 來編譯程式:
ndk-build NDK_APPLICATION_MK=./Application.mk
NDK 會把輸出檔  main.out 放在 libs\armeabi 目錄下, 將他上傳到手機上或模擬器上設成可執行檔, 並開啟 terminal 執行即可.
 
假設手機的 ip address 為 192.168.0.5,且手機要開啟 adbd, listen port 預設為 5555.  底下使用 adb 來連接手機並上傳檔案到手機上讓 shell 去執行:
adb connect 192.168.0.5:5555
adb push libs/armeabi/main.out /data/local
adb shell  chmod 755 /data/local/main.out
adb shell /data/local/main.out 1 2 3

輸出:
Hello World
Hi printf
argv[0]:/data/local/main.out
argv[1]:1
argv[2]:2
argv[3]:3




沒有留言: