NDK编写Android终端hello world

移动开发 Android
在windows下面编译使用ndk,不是一个容易的事情,但是在ndk-r8后,似乎方便了很多。本文我们就一起看看如何用NDK编写Android终端hello world

在windows下面编译使用ndk,不是一个容易的事情,但是在ndk-r8后,似乎方便了很多。具体方法如下:

1. 下载安装android ndk,解压到一个目录,***是比较简单的英文路径,防止各种坑。然后将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的命令环境中,方便后面的使用。如果常用,建议加入到环境变量path中

2. 编写相关代码

注意,需要在项目目录下面建立一个jni目录,在jni目录下建立文件。

target.c

  1. #include <stdio.h> 
  2. int flag = 1
  3. int count = 0
  4. int main() 
  5. char* str = "abcdef"
  6. while(flag) 
  7. printf("Target is running:%d\n", count); 
  8. count++; 
  9. sleep(3); 
  10. return 0

Android.mk

  1. LOCAL_PATH := $(call my-dir) 
  2.  
  3. include $(CLEAR_VARS) 
  4. LOCAL_MODULE := target 
  5. LOCAL_SRC_FILES := target.c 
  6. include $(BUILD_EXECUTABLE) 

代码很简单,就是一个循环打印语句。值得注意的是Android.mk,根据需要修改LOCAL_XXX的名字就可以了,如果有多个文件,添加到SRC_FILES后面就可以了

 

在jni目录运行命令

ndk-build

  1. "Compile thumb : target <= target.c 
  2. Executable : target 
  3. Install : target => libs/armeabi/target 

 

会在项目目录的libs/armeabi目录下面生产目标代码

下面的操作方法是将target上传到调试机器上,我一般使用机器,因为模拟器太慢了,折磨人。你的机器需要设置为usb development,并且需要有root权限,否则,只能在模拟器中测试。

adb remount

adb push target /data/local/tmp

adb shell

su

cd /data/local/tmp

chmod 751 target

./target

  1. root@android:/data/local/tmp # ./target 
  2. ./target 
  3. Target is running:0 
  4. Target is running:1 
  5. Target is running:2 
  6. Target is running:3 
  7. Target is running:4 
  8. Target is running:5 

需要注意的地方是android下面busybox的chmod u+x target不能工作,只能用751这种数字方式来设置程序的可运行。

 

希望你好运,能够运行一个helloword的ndk程序

责任编辑:闫佳明 来源: blog.163
相关推荐

2011-06-08 17:59:43

Qt Creator

2011-07-01 11:02:30

EnyowebOShello world

2014-12-19 10:07:10

C

2017-11-23 17:45:46

Yii框架IntelYii框架深度剖析

2022-08-30 12:05:19

C语言代码

2009-09-16 17:15:19

OSGi Bundle

2023-01-06 08:18:44

2009-07-30 13:21:17

Scala入门Hello World

2009-08-11 10:32:23

什么是Groovy

2011-06-08 14:39:06

Qt 教程

2023-09-04 07:30:03

Wasm汇编语言

2012-02-20 14:26:48

JavaPlay Framew

2013-12-19 14:34:52

Android ApiAndroid开发Android SDK

2011-05-11 16:15:52

视频教程Xcode 4Objective-C

2023-05-23 08:01:10

Netty网络通信

2021-11-26 08:22:01

Java动态开发

2024-04-11 13:13:27

2011-08-05 09:48:46

iPhone Interface

2009-08-14 16:54:19

C# Hello Wo

2017-06-26 08:55:52

点赞
收藏

51CTO技术栈公众号