- 浏览: 340816 次
- 性别:
- 来自: 安徽
文章分类
最新评论
-
secally:
楼主可以上传个例子吗,谢谢,我咋跑不起来,,eclipse不是 ...
Android自动打包、签名、优化、上传ANT脚本 -
secally:
请问下执行命令是啥,ant release 还是?麻烦指教谢谢 ...
Android自动打包、签名、优化、上传ANT脚本 -
trp1022:
好牛啊
程序员不能不通文史 -
sunny78117:
谢谢,写得好
Android bitmap优化 -
futurebp:
这是什么类型的脚本啊?
Android自动打包、签名、优化、上传ANT脚本
以下内容Sinfrancis版权所有,专注请注明来自 http://mdev.cc/dev
目标:
利用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
如果出现以上的信息,说明安装正确,如果出现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 进行重新编译
出现上面的信息,说明编译成功,so 文件在 apps/hello-jni/project/libs/armeabi 文件夹下。
3. 书写java native 接口
下面我们进入实战的阶段,写代码。
建立一个android1.5 的项目, NDK 不支持 1.5 以下的版本
JNI.java的代码:
JniTest.java的代码:
4. 生成JNI 头文件
下面生成JNI 头文件啦,使用 javah 命令,对 JNI..java 这个文件生成,别搞错啦!
使用cmd 进入 android 项目的 bin 目录中,然后执行 javah -classpath . -jni cc.androidos.jni.JNI 这个命令。别忘记包名!( ^_^ )
生成了一个cc_androidos_jni_JNI.h
打开看看:
里面都是c 语言的头文件声明
5. 书写C 代码,写入数据
下面进行c 语言代码的阶段,不会 C 的,可以去学习一下。
我这里使用eclipse for c/c++ 的进行开发,简单的代码大家可以使用记事本。
工程如下:
cc_androidos_jni_JNI.h内容不变
cc_androidos_jni_JNI.c的内容:
在这里的代码会在运行的时候向sdcard 写入 androidos.cc.txt 文件。然后写入 aaaa 数据。
6. 编译SO 文件
进行编译so 文件:
在NDK 的 apps 目录下面创建一个 myjni 文件夹,在 myjni 文件夹中创建一个 Application.mk 文件,文件的内容为:
在NDKsources 目录下创建 myjni 文件夹,在 myjni 文件中创建一个 Android.mk 文件,然后将 cc_androidos_jni_JNI.h 和 cc_androidos_jni_JNI.c 文件 copy 进来:
Android.mk中的内容如下:
里面内容的关键字含义请自行查看docs\OVERVIEW.TXT 文件
编译:
7. 加入到Android 项目中进行运行
将apps\myjni\libs 整个文件夹 copy 到 android 项目下:
运行android 项目使用 adb shell 进行查看:
进入sdcard 查看数据。
注意:sdcard 具有 system 的权限,如果你的目录是 root 权限的,那么是不能写成功的,除非是真机越权,模拟器是不成功的,并且在 Eclipse logcat 下会有 DEBUG 信息出现。
- 史上最强NDK入门项目实战.rar (168.8 KB)
- 下载次数: 808
评论
一般来说javah没有必要,多了一个步骤,android里普遍使用JNI_OnLoad来加载native方法。
你说的JNI_OnLoad只不过是在loadLibrary的时候调用了一下,首先没法多次调用,第二得不到输入输出。javah弄出来的根本是两码事。
一般来说javah没有必要,多了一个步骤,android里普遍使用JNI_OnLoad来加载native方法。
呵呵, 你的NES模拟器比较强...
一般来说javah没有必要,多了一个步骤,android里普遍使用JNI_OnLoad来加载native方法。
发表评论
-
抓取Android WebView截屏
2011-08-19 21:33 7662一般使用setDrawingCacheEnabled(true ... -
Android bitmap优化
2011-08-11 17:02 5985直接使用ImageView显示 ... -
Android模拟器更改分辨率后 无法取得分辨率问题
2011-05-11 21:06 2858在PC上更改模拟器分辨率为480*800 (如果你的PC界面 ... -
获取屏幕硬件分辨率方法 收藏
2011-05-11 16:28 1917TextView tv=(TextVie ... -
Bytecode for the Dalvik VM
2011-05-10 22:35 1366http://www.netmite.com/android/ ... -
Android DEX反编译后部分代码解析
2011-05-10 22:07 3944一个private 方法 private Stri ... -
反编译并且修改Android APK包
2011-05-10 16:57 3132為了某個實驗的動機,我們評估反編譯 Android ... -
Android Ant编译时候进行混淆
2010-10-18 13:49 3831版权所有,欢迎转载,转载请注明 : SinFrancis h ... -
自定义Ant Task
2010-09-13 17:58 2997版权所有,欢迎转载,转载请注明 : SinFrancis h ... -
Android自动打包、签名、优化、上传ANT脚本
2010-07-26 16:51 13988版权所有,欢迎转载,转载请注明 : SinFrancis h ... -
Android自定义含有CheckBox的Adapter遇到的问题
2010-06-23 13:48 4125版权所有,欢迎转载,转载请注明 : SinFrancis h ... -
QR code类库
2010-06-03 23:11 2332Google code发现的好东西。 QR code 类库 ... -
Android QQ,一个WEBOS APP诞生!!(两个QQ对比!)
2010-04-10 12:05 1879请看这个大哥的言论 http://linuxtoy.or ... -
Android 、BlackBerry 文本对齐方式对比
2010-02-22 13:11 1811版权所有,欢迎转载,转载请注明 : SinFrancis h ... -
教你如何开关Android的APN网络
2010-01-08 11:36 6052版权所有,转载请注明来自Mobile Developer (h ... -
使用TimerTask控制ProgressBar
2009-10-10 13:21 1115以下内容Sinfrancis版权所有,专注请注明来自 htt ... -
自定义List布局
2009-10-10 13:19 1920以下内容Sinfrancis版权所有,专注请注明来自 htt ... -
重画Progressbar的进度
2009-10-10 13:15 1942以下内容Sinfrancis版权所有,专注请注明来自 htt ... -
谈谈Android中文短信的实现
2009-10-10 13:13 2182似 乎Google在推出G1时 ... -
模拟器互发短信
2009-10-10 13:11 1293以下内容Sinfrancis版权所有,专注请注明来自 htt ...
相关推荐
1. `史上最强NDK入门项目实战.doc`:这份文档详细阐述了项目的背景、实现步骤以及关键知识点,是你学习的指导手册。 2. `apps`:这个目录包含了项目中的Android应用程序源代码,展示了如何在Java层调用JNI接口。 3. ...
【标题解析】:“史上最强NDK入门项目实战.rar”这个标题暗示了这是一个关于NDK(Native Development Kit)的初级教程项目,目标是帮助初学者掌握Android应用中的原生代码开发。NDK是Android开发中的一部分,它允许...
本项目"史上最强NDK入门项目实战"旨在为初学者提供一个全面的学习路径,通过实际操作来掌握NDK的使用。 NDK的主要用途包括: 1. **性能优化**:对于计算密集型任务,如图像处理、游戏引擎、物理模拟等,原生代码...
本项目“Android项目史上最强NDK入门项目实战”旨在帮助初学者深入理解NDK的使用,并通过实际操作来提升技能。 首先,我们来了解一下NDK的核心概念: 1. **JNI(Java Native Interface)**:是Java平台标准的一...
《应用源码史上最强NDK入门项目实战》 在Android开发领域,NDK(Native Development Kit)是一个不可或缺的工具,它允许开发者使用C和C++编写高性能、低级别的代码,以提升应用程序的运行效率和安全性。这个压缩包...
Android应用源码史上最强NDK入门项目实战.zip项目安卓应用源码下载Android应用源码史上最强NDK入门项目实战.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术...
《基于Android的史上最强NDK入门项目实战》 在当今移动开发领域,Android以其开源、灵活的特点占据着主导地位。而作为Android开发的一部分,NDK(Native Development Kit)的运用日益广泛,它允许开发者使用C/C++...
《史上最强NDK入门项目实战》是一份专为Android开发者准备的实践教程,旨在帮助他们深入理解并掌握Android NDK的使用。NDK(Native Development Kit)是Google提供的一套工具,允许开发者在Android平台上使用C/C++...
在"史上最强NDK入门项目实战"中,你可能会学习到如何: 1. 使用JNI调用C/C++代码进行数学运算或算法实现。 2. 使用NDK进行音频、视频编码解码。 3. 利用OpenGL ES进行图形渲染,提升游戏性能。 4. 实现与硬件传感器...