(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文件生成的差不多..

   

最新文章

  1. assign,copy,strong,weak,nonatomic的理解
  2. mvc权限,登陆,异常
  3. [ZETCODE]wxWidgets教程二:辅助类
  4. T4模板之基础篇
  5. JWT.NET的使用
  6. oracle erp 表结构
  7. 5行代码实现微信小程序图片上传与腾讯免费5G存储空间的使用
  8. Unix即IDE
  9. android初学
  10. python: 基本知识(二)
  11. The Python Challenge 0-4
  12. Codeforces 437D The Child and Zoo - 树分治 - 贪心 - 并查集 - 最大生成树
  13. Apache提供的dbUtils
  14. 12. ajax、datagrid请求传参实例
  15. ThinkPHP32 MODULE_ALLOW_LIST 存在的bug 不生效
  16. sencha touch Ext.app.Application
  17. mysql 提权总结
  18. Sql Server char、varchar、nchar、nvarchar的区别
  19. Python的string模块化方法
  20. 11个免费的Web安全测试工具

热门文章

  1. [转载]Oracle Merge的使用
  2. HBase设计与开发
  3. 2015 Multi-University Training Contest 1记录
  4. Python——描述符(descriptor)解密
  5. odoo8.0条形码改为js方式处理
  6. (转)JavaScript: in, hasOwnProperty, delete, for/in
  7. 语言那点事,crt
  8. 虚拟机安装Ubuntu 12.04 出现提示“Ubuntu is running in low-graphics mode?”
  9. 关于Azure Storage Blob Content-Disposition 使用学习
  10. postman --发送json请求