Android-NDK编译
(2013-12-19 21:48:21 其实一切还是先看看官网的好,乱百度浪费时间....
http://developer.android.com/tools/sdk/ndk/index.html#Installing )
(开始..这个文章只有最后的总结算笔记,其他废话)
话说移动设备交叉编译还真是麻烦....
看cocos2d-x 环境搭建 ,基本上都是推荐安装 cygwin.
因为两年前的幼稚经验,对这个东西实在是心里畏惧,加上偶尔交叉编译点东西都是用MingW,就进行了以下尝试:
1. 给MinGW环境变量加上NDK路径
找到MinGW安装目录下的 /etc/profile
在最后加上这么一句:
export PATH="/e/T_GIT/android_dep/android-ndk-r8e:$PATH"
MinGW访问驱动器用 “/” 开头,并且没有“:” 。对应的实际路径是 :E:\T_GIT\android_dep\android-ndk-r8e
在MinGW环境下输入命令进行验证:
ezhong@bj-ezhong ~
$ ndk-build
Android NDK: Could not find application project directory !
Android NDK: Please define the NDK_PROJECT_PATH variable to point to it.
/e/T_GIT/android_dep/android-ndk-r8e/build/core/build-local.mk:130: *** Android
NDK: Aborting . Stop. ezhong@bj-ezhong ~
这样就证明MinGW的NDK环境变量配置好了.
2. 编译NDK sample :hello-jni
从 E:\T_GIT\android_dep\android-ndk-r8e\samples 下拷贝 hello-jni到任意目录
比如我的是 E:\T_GIT\eclipse\hello-jni
MinGW中进入hello-jni目录,执行ndk-build 命令:
ezhong@bj-ezhong /e/T_GIT/eclipse/hello-jni
$ ls
AndroidManifest.xml default.properties jni res src tests ezhong@bj-ezhong /e/T_GIT/eclipse/hello-jni
$ ndk-build
Gdbserver : [arm-linux-androideabi-4.6] libs/armeabi/gdbserver
Gdbsetup : libs/armeabi/gdb.setup
Cygwin : Generating dependency file converter script
Compile thumb : hello-jni <= hello-jni.c
SharedLibrary : libhello-jni.so
Install : libhello-jni.so => libs/armeabi/libhello-jni.so ezhong@bj-ezhong /e/T_GIT/eclipse/hello-jni
hello-jni目录下多了libs 、obj 两个文件夹.
libs下有生成的so文件
3 编译错误
将jni文件拷贝到一个eclipse生成的android项目下,再次调用ndk-build的时候出现如下错误
ezhong@bj-ezhong /e/T_GIT/eclipse/andTest1
$ ndk-build
Invalid attribute name:
package
/e/T_GIT/android_dep/android-ndk-r8e/build/gmsl/__gmsl:512: *** non-numeric seco
nd argument to `wordlist' function: ''. Stop. ezhong@bj-ezhong /e/T_GIT/eclipse/andTest1
$
查了些资料,竟然有的这样的解决方法:
http://blog.csdn.net/devilkin64/article/details/9144355
解决方法:
找到NDK中的这个__gmsl文件,并将其中第518行:
int_encode = $(__gmsl_tr1)$(wordlist 1, ,$(__gmsl_input_int))修改为
int_encode = $(__gmsl_tr1)$(wordlist 1,$(words ),$(__gmsl_input_int))
不理解啊...
同样一份jni代码,放入一个工程就不行了?
http://blog.csdn.net/jiuyueguang/article/details/9465305 有提示..原来是 AndroidManifest.xml 搞怪.
去掉AndroidManifest.xml果然可以编译通过.
看到各个大神们的 dos2unix 、fromdos 等转换工具 ,windows真是伤不起啊.
最后搜到个很少办法的办法..先把 AndroidManifest.xml挪走或者改名,编译完再恢复...太高级了.
总结:
最激动人心的时刻到了....
以上都是废话....
NDK本身有提供windows的ndk-build脚本...
只要将 安装目录 如“E:\T_GIT\android_dep\android-ndk-r8e” 设置到windows系统环境变量PATH中.
直接在CMD中,切入到目标目录,ndk-build即可....
E:\T_GIT\eclipse\andTest1>ndk-build
"Compile thumb : ejni <= ejni.c
SharedLibrary : libejni.so
Install : libejni.so => libs/armeabi/libejni.so E:\T_GIT\eclipse\andTest1>
太容易把自己绕死...
另: javah 找不到 android.app.Activity 用
-bootclasspath E:\T_GIT\android_dep\adt-bundle-windows-x86-20130717\sdk\platforms\android-17\android.jar
参数指定,貌似与直接用src下的 Java文件生成的差不多..
最新文章
- assign,copy,strong,weak,nonatomic的理解
- mvc权限,登陆,异常
- [ZETCODE]wxWidgets教程二:辅助类
- T4模板之基础篇
- JWT.NET的使用
- oracle erp 表结构
- 5行代码实现微信小程序图片上传与腾讯免费5G存储空间的使用
- Unix即IDE
- android初学
- python: 基本知识(二)
- The Python Challenge 0-4
- Codeforces 437D The Child and Zoo - 树分治 - 贪心 - 并查集 - 最大生成树
- Apache提供的dbUtils
- 12. ajax、datagrid请求传参实例
- ThinkPHP32 MODULE_ALLOW_LIST 存在的bug 不生效
- sencha touch Ext.app.Application
- mysql 提权总结
- Sql Server char、varchar、nchar、nvarchar的区别
- Python的string模块化方法
- 11个免费的Web安全测试工具
热门文章
- [转载]Oracle Merge的使用
- HBase设计与开发
- 2015 Multi-University Training Contest 1记录
- Python——描述符(descriptor)解密
- odoo8.0条形码改为js方式处理
- (转)JavaScript: in, hasOwnProperty, delete, for/in
- 语言那点事,crt
- 虚拟机安装Ubuntu 12.04 出现提示“Ubuntu is running in low-graphics mode?”
- 关于Azure Storage Blob Content-Disposition 使用学习
- postman --发送json请求