注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

回首望星辰

See you in the next world

 
 
 

日志

 
 

NDK入门项目实战  

2009-08-30 11:28:25|  分类: 软件开发 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

『转载』史上最强NDK入门项目实战

发表时间:2009-07-29 17:06:52  浏览次数:57

目标:利用NDK生成SO库,使用SO库进行JNI调用,在Android sdcard创建文件并写入数据。工具:NDK1.5 R1, android SDK1.5 R1, SDCARD, Eclipse , ADT 0.9, Eclipse Galileo for C/C++, Cygwin 1.5。工具比较多,我是在Windows XP进行操作的,如果在Ubuntu或者其他的Linux系统下进行操作直接进入步骤2即可。请看步骤: 1. 安装Cygwin

关于Cygwin的安装请自行百度或者google,因为网速原因,建议大家使用本地安装包进行下载:http://www.gougou.com/search?search=cygwin&id=2 下载一个38.2M 即可,我用的就是这个版本。

2. 安装NDK进入正题安装NDK,首先打开cygwin,然后使用cd命令进入你的NDK根目录,(不会用linux命令??Google去),然后运行:build/host-setup.sh NDK入门项目实战 - 辉 - 回首望星辰

如果出现以上的信息,说明安装正确,如果出现GCC为找到,请输入gcc命令查看,如果出现toolchain未找到的信息,请试着修改build/host-setup.sh文件第一行代码,将:#!/bin/sh 改成#!/bin/bash, 在Ubuntu上这个是需要修改的   

安装成后,我们使用make命令试试编译自带的程序,输入make APP=hello-jni,hello-jni为apps下hello-jni文件夹的名称,这个命令会先找到apps\hello-jni下地Application.mk文件,然后找到source\samples\hello-jni这个目录,然后找到Android.mk这个文件中的配置信息进行编译。看图:

因为我的已经编译过了,使用使用 make APP=hello-jni -B进行重新编译 NDK入门项目实战 - 辉 - 回首望星辰出现上面的信息,说明编译成功,so文件在apps/hello-jni/project/libs/armeabi文件夹下。

3. 书写java native接口

下面我们进入实战的阶段,写代码。

建立一个android1.5的项目,NDK不支持1.5以下的版本

NDK入门项目实战 - 辉 - 回首望星辰

JNI.java的代码:

NDK入门项目实战 - 辉 - 回首望星辰

JniTest.java的代码:  

NDK入门项目实战 - 辉 - 回首望星辰

4. 生成JNI 头文件

下面生成JNI头文件啦,使用javah命令,对JNI..java这个文件生成,别搞错啦!

使用cmd进入android项目的bin目录中,然后执行 javah -classpath .  -jni cc.androidos.jni.JNI这个命令。别忘记包名!(^_^) NDK入门项目实战 - 辉 - 回首望星辰

生成了一个cc_androidos_jni_JNI.h

打开看看:

NDK入门项目实战 - 辉 - 回首望星辰

里面都是c语言的头文件声明

5. 书写C代码,写入数据   

下面进行c语言代码的阶段,不会C的,可以去学习一下。 

我这里使用eclipse for c/c++的进行开发,简单的代码大家可以使用记事本。  

工程如下:   

NDK入门项目实战 - 辉 - 回首望星辰

cc_androidos_jni_JNI.h内容不变   

cc_androidos_jni_JNI.c的内容:

NDK入门项目实战 - 辉 - 回首望星辰

在这里的代码会在运行的时候向sdcard写入androidos.cc.txt文件。然后写入aaaa数据。  

6. 编译SO文件

进行编译so文件:

在NDK的apps目录下面创建一个myjni文件夹,在myjni文件夹中创建一个Application.mk文件,文件的内容为:

NDK入门项目实战 - 辉 - 回首望星辰

在NDKsources目录下创建myjni文件夹,在myjni文件中创建一个Android.mk文件,然后将cc_androidos_jni_JNI.h和cc_androidos_jni_JNI.c文件copy进来:NDK入门项目实战 - 辉 - 回首望星辰

Android.mk中的内容如下:  

NDK入门项目实战 - 辉 - 回首望星辰里面内容的关键字含义请自行查看docs\OVERVIEW.TXT文件  

编译: NDK入门项目实战 - 辉 - 回首望星辰

7. 加入到Android项目中进行运行

将apps\myjni\libs整个文件夹copy到android项目下:

NDK入门项目实战 - 辉 - 回首望星辰

运行android项目使用adb shell进行查看: NDK入门项目实战 - 辉 - 回首望星辰

进入sdcard查看数据。  

注意:sdcard具有system的权限,如果你的目录是root权限的,那么是不能写成功的,除非是真机越权,模拟器是不成功的,并且在Eclipse logcat下会有DEBUG信息出现。

  评论这张
 
阅读(711)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017