windows安卓NDK编程
来源:互联网 发布:怎么做淘宝店铺模板 编辑:程序博客网 时间:2024/05/29 19:07
去年搞过一次NDK,当时觉得挺麻烦,以后就一直没再搞过,现在公司的项目需要使用NDK编程,今天又搞了一边,遇到了些问题,和大家分享一下
.
一. 安装Cygwin
1.下载Cygwin http://cygwin.com/setup-x86.exe 双击运行出现如下界面,点击下一步
选择install from internet ,点击下一步
选择默认位置 c:\cygwin ,点击下一步
依旧默认位置,继续点击下一步
默认选项Direct Connection 就可以,继续点击下一步
可以选择网易163服务器,继续下一步
出现下面界面
选择需要安装Cygwin组件 : 这里我们只需要以下组件 : binutils , gcc , gcc-mingw , gdb , make , 不用下全部的组件;
例如输入gcc 后下面会自动列出各组件,点击All右边的单词,直到下面都变成install为止,然后点击下一步就可以等待安装了,安装完后点击上一步就又回到该界面,
另外几个组件安装方式同上。
安装完后目录是这样的
双击上面目录中的Cygwin.bat ,在启动的窗口中输入make -version ,若出现类似下面界面,表示安装成功
二.下载ndk
1.- windows版本NDK:android-ndk-r9c-windows-x86.zip (32位),android-ndk-r9c-windows-x86_64.zip (64位) 该版本是用在windows上的Cygwin下, 不能直接在windows上直接运行;
2.下载完后解压并放到C:\\cygwin\中,目录结构如下
三.创建安卓工程
1.创建安卓工程,并在工程根目录下新建jni文件夹,
2.运行一下工程,让工程中的bin文件夹中生成class文件,(class文件在工程中的bin中看不到,可以从资源管理器中打开该bin文件夹)
3.生成对应的头文件
例 可以通过这种方式生成头文件 javah -classpath F:/ndkTest/bin/classes -d c:/ -jni com.example.ndktest.TestJNI
(F:\ndkTest\bin\classes 是包所在目录 , c:/表示生成的头文件存放位置,com.example.ndktest.TestJNI 是包.类名)
(备注 下面的控制台不是windows的命令窗口,而是 C:\cygwin中的Cygwin.bat )
把c盘中生成的com_example_ndktest_TestJNI.h复制到安卓工程中的jni文件夹
在jni文件夹中新建.cpp文件,如 main.cpp ,然后使用include命令包含.h文件,并把.h文件中的函数复制到main.cpp中,记得要给复制过来的函数加上参数,同时把末尾的;改成 { } ,该例子中使用NewStringUTF创建了一个utf8编码的字符串并返回
在jni文件夹中编写Android.mk文件 mk文件一定要当心,写错后不会报错,但调用时却会抛异常
为了防止手动输入错误,直接把代码放在这,大家可以直接复制后修改一下
LOCAL_PATH :=$(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE :=TestJNI
LOCAL_SRC_FILES := main.cpp
include $(BUILD_SHARED_LIBRARY)
在安卓工程根目录下新建Application.mk文件,并输入如下内容 ,注意 APP_MODULES 值要和Android.mk中 LOCAL_MODULE 值一样
同样把代码放在这,方便大家复制
APP_PROJECT_PATH:=$(call my-dir)
APP_MODULES:=TestJNI
四.编译
启动c:\\cygwin中Cygwin.bat,输入 cd 你的工程所在绝对位置 我的工程在f盘中,工程名叫ndkTest,所以输入cd f:/ndkTest,注意下线方向
输入/android-ndk-r9c/ndk-build ,我的android-ndk-r9c在C:\cygwin中,所以可以直接这样输 参见 二.下载 2.中目录结构
输入完后回车,会出现如下提示,表示生成so库成功
刷新一下安卓工程,在libs中armeabi中看到生成的lib开头,.so结尾的库 (右击安卓工程名,选择refresh即可刷新工程)
在调用声明的native函数前要先调用System.loadLibrary() ,调用一次即可,参数是类库的名字,注意,不包括开头的lib和结尾的.so
安卓ndk编程到此就完结了。
五.注意事项
有的安卓工程中还有armeabi-v7a文件夹,记得把生成的so库也要拷贝到该文件夹中一份。
mk文件输入错误后不会报错,直到调用时才会抛出异常,一定要小心
备注:以上在windows7 旗舰版 32位 sp1 ,i3处理器上编译通过,在 安卓arm模拟器上测试通过,小米note 上测试通过
如有转载请注明出处 谢谢
- windows安卓NDK编程
- 开始安卓编程使用NDK
- cocos2d-x安卓开发环境搭建(windows+eclipse+ndk)
- cocos2d-x安卓开发环境搭建(windows+eclipse+ndk)
- 安卓NDK编程使用STL库及注意事项
- iTOP4412内核源码编译与安卓ndk应用编程
- 安卓NDK开发
- 安卓NDK开发
- 安卓 NDK与JNI
- 安卓使用JNI-NDK
- 安卓ndk调试笔记
- 安卓NDK的HelloWorld
- 安卓NDK环境变量配置
- 安卓NDK编译jsoncpp
- cocos2d-x安卓开发环境搭建(windows+eclipse+ndk 不用cygwin) cocos2dx2.0
- 让人死去活来的cocos2d-x安卓开发环境搭建(windows+eclipse+ndk)
- 让人死去活来的cocos2d-x安卓开发环境搭建(windows+eclipse+ndk)
- cocos2d-x安卓开发环境搭建(windows+eclipse+ndk 不用cygwin)
- Java中的计数器CountDownLatch
- 【LIS】【输出一条路径】
- 希尔排序算法的训练和思考
- android几个知识点笔记
- iOS学习笔记7- iOS 添加定制字体到应用程序中
- windows安卓NDK编程
- 素数打表法
- flume kafka-sink high cpu
- yii打印sql语句
- IOS开发-指纹识别
- Java类型转换实例
- Attribute Unavailable: First baseline layout attribute on iOS versions prior to 8.0
- 文章标题
- C++的静态成员函数指针