当前位置: 首页 > 科技观察

Android开发者需要NDK入门项目实践

时间:2023-03-12 08:11:18 科技观察

本篇文章,我们将讲述如何使用NDK生成SO库,使用SO库进行JNI调用,在Androidsdcard中创建文件和写入数据。工具:NDK1.5R1、androidSDK1.5R1、SDCARD、Eclipse、ADT0.9、EclipseGalileoforC/C++、Cygwin1.5。工具有很多,我是在WindowsXP上运行,如果在Ubuntu或其他Linux系统上运行,直接进入第2步。请看步骤:1.安装Cygwin关于Cygwin的安装,请自行百度或谷歌。由于网速原因,建议大家使用本地安装包下载:http://www.gougou.com/search?search=cygwin&id=2下载一个38.2M就够了,我用的是这个版本。2.安装NDK进入NDK安装正题,先打开cygwin,然后用cd命令进入你的NDK根目录,(不要用linux命令??谷歌一下),然后运行:build/host-setup.sh如果出现以上信息,说明安装正确。如果没有找到GCC,请输入gcc命令查看。如果找不到工具链,请尝试修改build/host-setup.sh文件中的第一行代码,将:#!/bin/sh改为#!/bin/bash,这个需要修改在Ubuntu安装完成后,我们使用make命令尝试编译内置程序,输入makeAPP=hello-jni,hello-jni是hello-jniforappsjni文件夹的名字,这个命令会先找到Applicationapps\hello-jni下的.mk文件,然后找到source\samples\hello-jni目录,然后找到Android.mk文件中的配置信息进行编译。看图:因为我的已经编译好了,使用makeAPP=hello-jni-B重新编译出现以上信息,说明编译成功,so文件在apps/hello-jni/project/libs/armeabi文件夹。3、编写java原生接口下面进入实战阶段,编写代码。创建一个android1.5的工程,NDK不支持1.5以下的版本JNI.java代码:JniTest.java代码:4.生成JNI头文件下面生成JNI头文件,使用javah命令将JNI..java这个文件生成,不犯错误!使用cmd进入android项目的bin目录,然后执行命令javah-classpath。-jnicc.androidos.jni.JNI。不要忘记包名!(^_^)生成了一个cc_androidos_jni_JNI.h,打开一看:里面有c语言#p#5的头文件声明。写C代码,写c语言代码阶段下面的数据,不会C的可以去学。我这里使用eclipseforc/c++进行开发,简单的代码大家可以使用记事本。工程如下:cc_androidos_jni_JNI.h内容不变。cc_androidos_jni_JNI.c的内容:这里的代码运行时会把androidos.cc.txt文件写入sdcard。然后写入aaaa数据。6、编译SO文件编译so文件:在NDK的apps目录下创建myjni文件夹,在myjni文件夹下创建Application.mk文件,文件内容为:在NDKsources下创建myjni文件夹目录,并在该文件中创建一个Android.mk文件,然后将cc_androidos_jni_JNI.h和cc_androidos_jni_JNI.c文件复制到:Android.mk中内容如下:含义请查看docs\OVERVIEW.TXT文件编译:7.添加Go到Android项目运行,将apps\myjni\libs整个文件夹复制到android项目:运行android项目,使用adbshell查看:进入sdcard查看数据。注意:sdcard有系统权限。如果你的目录是root权限,那么是写不成功的,除非真机越权,模拟器不成功,Eclipselogcat中会出现DEBUG信息。