NDK編寫Android終端hello world
在windows下面編譯使用ndk,不是一個(gè)容易的事情,但是在ndk-r8后,似乎方便了很多。具體方法如下:
1. 下載安裝android ndk,解壓到一個(gè)目錄,***是比較簡單的英文路徑,防止各種坑。然后將ndk加入到路徑中。比如
set path=%paht%;H:\gp\Android\android-ndk-r9
set path=%path%;H:\gp\Android\android-studio\sdk\platform-tools
這兩句話就是把ndk-build和adb命令加入到cmd的命令環(huán)境中,方便后面的使用。如果常用,建議加入到環(huán)境變量path中
2. 編寫相關(guān)代碼
注意,需要在項(xiàng)目目錄下面建立一個(gè)jni目錄,在jni目錄下建立文件。
target.c
- #include <stdio.h>
- int flag = 1;
- int count = 0;
- int main()
- {
- char* str = "abcdef";
- while(flag)
- {
- printf("Target is running:%d\n", count);
- count++;
- sleep(3);
- }
- return 0;
- }
Android.mk
- LOCAL_PATH := $(call my-dir)
- include $(CLEAR_VARS)
- LOCAL_MODULE := target
- LOCAL_SRC_FILES := target.c
- include $(BUILD_EXECUTABLE)
代碼很簡單,就是一個(gè)循環(huán)打印語句。值得注意的是Android.mk,根據(jù)需要修改LOCAL_XXX的名字就可以了,如果有多個(gè)文件,添加到SRC_FILES后面就可以了
在jni目錄運(yùn)行命令
ndk-build
- "Compile thumb : target <= target.c
- Executable : target
- Install : target => libs/armeabi/target
會(huì)在項(xiàng)目目錄的libs/armeabi目錄下面生產(chǎn)目標(biāo)代碼
下面的操作方法是將target上傳到調(diào)試機(jī)器上,我一般使用機(jī)器,因?yàn)槟M器太慢了,折磨人。你的機(jī)器需要設(shè)置為usb development,并且需要有root權(quán)限,否則,只能在模擬器中測試。
adb remount
adb push target /data/local/tmp
adb shell
su
cd /data/local/tmp
chmod 751 target
./target
- root@android:/data/local/tmp # ./target
- ./target
- Target is running:0
- Target is running:1
- Target is running:2
- Target is running:3
- Target is running:4
- Target is running:5
需要注意的地方是android下面busybox的chmod u+x target不能工作,只能用751這種數(shù)字方式來設(shè)置程序的可運(yùn)行。
希望你好運(yùn),能夠運(yùn)行一個(gè)helloword的ndk程序