zoukankan      html  css  js  c++  java
  • 搭建cocos2d-x-android环境 Windows XP3 + Eclipse + NDKR7(或ndkr7b)+COCOS2DX(没有用到cygwin和minigw)

    版本:

    Windows XP3

    JDK1.6

    Eclipse 3.7.1 (需要C++插件CDT)

    ADT 16.0.1

    NDK7 (或是NDKR7B)

     

    cocos2d-1.0.1-x-0.11.0.zip

     


     

     

    注意:本教程没有用到minigw +msys,也没有用到cygwin ,如果用到的是NDK R6B 或是以前的版本,则需要安装cygwin(或是minigw + msys)

     

     

    前提条件:假设已经成功安装了JDK + Eclipse + CDT + ADT

     

    下面讲解如何在Eclipse中配置NDK ,运行cocos2d-x 自带的 test 工程

     

    目录:

    Step1. 下载 android-ndk-r7-windows.zip并解压

    Step2. 下载cocos2d-x,并解压

    Step3.  Eclipse导入cocos2d-x   test项目

    Step4.  Eclipse中配置NDK编译环境

    Step5. 编译Android 项目

     

     

     

     

    安装步骤:

    Step1. 下载 android-ndk-r7-windows.zip并解压

     

    下载地址:

    http://dl.google.com/android/ndk/android-ndk-r7-windows.zip

     

    下载完成后,将其解压到电脑的任何目录中,例如:



    Step2. 下载cocos2d-x,并解压

     

    下载地址:

    http://cocos2d-x.googlecode.com/files/cocos2d-1.0.1-x-0.11.0.Zip

     

    下载完成后,将其解压到电脑的任何目录中,例如:



    Step3. Eclipse导入cocos2d-x   test项目

     

    打开Eclipse

    依次点击File –  New – Project… AndroidProject

     

    选择“Create Project  from existing  Source”

    如下图所示,找到test.android  目录



    点击Next




    选择Android 2.1版本,这里直接点击Next ,或是Finish就创建完成了



    Step 4. Eclipse中 配置NDK编译环境

     

    首先选择TestDemos项目,然后选择菜单中的Project – Properties


    选择Bilders – New -- Program



    打开后,进行如下的设置:

     

    Location:一定要选择ndk-build.cmd 命令

    Working Directory:选择TestDemo




    注意:这里如果是 0.13 之后的版本,请不要用ndk-build.cmd 文件,请用 我写的build_android_ndk_tests.bat (可以到我下面指定的地点下载)


    下面选择Refresh  ,配置如下:



    越过Envirment ,直接点击Build Options,配置如下图所示:




    设置完成后,点击OK

     

    Eclipse 会自动的进行编译,耐心等待一会,下面是Eclipse开始自动进行编译的过程

    (注意编译过程中有个小问题)



    编译过程中的问题:




    解决方法:

    将android-ndk-r7sourcescxx-stlgnu-libstdc++libsarmeabilibgnustl_static.a  文件手动的copy到cocos2d-1.0.1-x-0.11.0 ests est.androidobjlocalarmeabi目录下



    以上问题其实是Google NDK R7版本的bug,会在下一版本中更改( NDKR7B版本已经更改了这个bug,所以在NDKR7B上的话就不需要这一步了 )

    http://code.google.com/p/android/issues/detail?id=22268




    copy过去后执行下Project –-clean 动作,系统又会自动的进行编译了,等待一点时间后,库文件就会编译完成



     

    至此,cocos2d-x库文件就编译完成了

     

     看到网友的反馈,说是找不到assets资源或是黑屏现象


    原因是:android下的assets目录没有任何的资源文件,所以需要我们手动的将cocos2d-1.0.1-x-0.11.0 estsRes  下的资源 复制到  cocos2d-1.0.1-x-0.11.0 ests est.androidassets  目录中


    复制完成后,还需要删除Images est_image_rgba4444.pvr.gz   文件

     

    Step5. 编译Android 项目

    连接Android手机

    依次点击  Run as…Android Application

     

    下面是我的小米手机的运行截图





    说明:本配置过程没有用到Cygwin或是 minigw + msys,完全用的是NDK自带的编译器


     






    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


    2012-04-17更新:

    cocos2d-x 0.13版本有些变动,需要用我改写的 ndk-build.cmd  文件进行编译且方法有2种,直接用NKD,脱离Eclipse编译库,第2种还是用Eclipse 辅助编译库


    批处理下载地址(内有使用说明)


    http://download.csdn.net/detail/maojudong/4233381

    脱离繁重的Cygwin.NDK编译脱离Cygwin


    1. 请将文件放到cocos2d-1.0.1-x-0.13.0-beta目录下面
    2. 打开build_android_ndk_tests.bat 文件 修改set NDK_ROOT=D:Work7android-ndk-r7c到你的NDK实际路径即可
    3. jni/Application.mk  文件中加入APP_PLATFORM :=android-5   
    4. 在jni目录中添加双击此批处理即可编译库文件

    注1:0.13版本的cocosw2d-x 搭配 Eclipse 也可以使用这个批处理,不要使用NDK自带的ndk-build.cmd
    注2:此批处理可以脱离Eclipse,只用NDK自带的编译器即可,这里只用来编译库,如果要打包到APK还是需要Eclipse的,将刚刚编译的库导入即可

    上面讲解了两种方法,自行选择

    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    build_android_ndk.bat  需要在开始 --> 运行  CMD 后 运行的批处理
    方法有2:

    方法1: 运行build_android_ndk.bat -C tests/test.android/jni
    方法2: 
    #cd tests/test.android/jni
    #......uild_android_ndk.bat  

    效果是一样的

    0.11 0.12 0.13 版本都测试通过


    脱离繁重的Cygwin(但是使用cocoss2d-x下的create-android-project.bat创建还是需要Cygwin,你可以尝试更改这个文件,让其不依赖Cygwin,我相信能够做到,只是时间问题 ,呵呵)




    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    2012-10-21更新:

    时代在进步,苹果发布了IOS6和iphone5,不知道苹果过些天的iPad mini 怎么样,cocos2dx也更新到2.0.3  ,社区也在不断的进步,由于这一段时间来工作特别忙,cocos2dx的日志有就没有更新了,今天到社区下载了最新的2dx版本进行了简单的测试,还好基本都通过


    XP32位系统 + JDK1.6 + 

    NDKR8b + 2dx (0.11/0.12/.13/2.0/2.0.1/2.0.2/2.0.3) 测试通过

    NDKR8 + 2dx (0.11/0.12/.13/2.0/2.0.1/2.0.2/2.0.3)   测试通过


    全部编译通过,没有出现网友说的问题

    说下注意点:
    1.  java编译器使用1.6.x (不建议用1.5.x/1.7.x)

    2.  有些安装了cygwin的,请暂时从PATH中屏蔽掉关于cygwin的内容

    3.  jni目录中要有Application.mk文件,且其中一定要有APP_PLATFORM :=android-5 (2dx 的 2.0.x系列至少为android-5,         1.x至少为android-4)Eclipse编译则不需要这一步,不过建议还是写上好些


    4.  2dx的0.10版本,ndk_build.cmd 不能完成编译,需要安装cygwin才能编译(或者linux/macos 编译),更早期的版本就没有测试了,相信做项目也很少有人用0.10以前的版本了


    5.  Eclipse编译环境中 2.0.3/2.0.2 /2.0.1 需要先导入cocos2dxplatformandroidjava项目,然后用Eclipse编译出一个 jar文件,最后将这个jar文件导入到 tests 项目中的libs就可完成编译(应一个网友的要求才这么说的,感谢他,是我的表述不清楚)


    2.0.2 /2.0.1 中cocos2dxplatformandroidjava导入后,源代码不是src目录,却是src_common 目录,所以可以修改.classpath   文件,或是更改src_common到src是最简单的方法


    6. 不要用模拟器进行调试,模拟器的速度慢,导致加载时间长,最后黑屏,时间长了,就导致ANR(应用程序无响应),建议买个android 平板或是手机吧(现在很便宜,299元钱的android平板到处都有卖(我的公司就有卖),1000元钱可以买到双核甚至4核的手机了)

    如果非要用模拟器进行调试,请将AVD模拟器中添加 GPU emulation 属性,并将值设置为yes就可以了

    经过2个小时的测试发现 只有4.0.3 和4.1.2 两个版本的模拟器显示正常,且模拟器需要开启GPU emulation 功能。

    我的测试平台:

    2dx 2.0.3 版本+ MAC 10.8.2 + jdk1.6 + eclipse3.7.2 


    模拟器开启GPU功能 

    2.2   模拟器很卡,且异常退出,无法操作           结论:不通过,不能用于调试2dx      

    2.3.1  模拟器很卡,且异常退出,无法操作         结论:不通过,不能用于调试2dx      

    2.3.3   模拟器很卡,且异常退出,无法操作        结论:不通过,不能用于调试2dx    

    3.X      未测试

    4.0      模拟器不能开启,,且异常退出,无法操作        结论:不通过,不能用于调试2dx    

    4.0.3     2dx可以运行,可以调试

    4.1.2     2dx运行正常,可以调试


    模拟器未开启GPU功能 

    2.2       黑屏            结论:不通过,不能用于调试2dx      

    2.3.1    异常退出     结论:不通过,不能用于调试2dx

    2.3.3    异常退出     结论:不通过,不能用于调试2dx

    3.X      未测试

    4.0       异常退出     结论:不通过,不能用于调试2dx 

    4.0.3    异常退出     结论:不通过,不能用于调试2dx

    4.1.2    异常退出     结论:不通过,不能用于调试2dx


    2dx中的论坛也有讨论这个

    http://cocos2d-x.org/boards/6/topics/12563

    http://www.cocos2d-x.org/boards/6/topics/12563?r=19274#message-19274

    http://stackoverflow.com/questions/13702538/cocos2d-x-v-2-0-4-fatal-exception-glthread-when-run-on-android-emulator

    这位兄弟的文章也不错

    http://www.raywenderlich.com/12065/how-to-create-a-simple-android-game

    原因是 

    Android 4.0.3 r2 以上的版本 才 增加GPU支持和CPU加速


    Android4.2模拟器 要添加一行代码

    Cocos2dxActivity.java

    <code style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif;">将代码</code>
    <code style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif;"> </code><span class="pln" style="background-color: transparent; margin: 0px; padding: 0px; border: 0px; vertical-align: baseline;">gLSurfaceView</span><span class="pun" style="background-color: transparent; margin: 0px; padding: 0px; border: 0px; vertical-align: baseline;">.</span><span class="pln" style="background-color: transparent; margin: 0px; padding: 0px; border: 0px; vertical-align: baseline;">setEGLConfigChooser</span><span class="pun" style="background-color: transparent; margin: 0px; padding: 0px; border: 0px; vertical-align: baseline;">(</span><span class="lit" style="background-color: transparent; margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(128, 0, 0);">8</span><span class="pln" style="background-color: transparent; margin: 0px; padding: 0px; border: 0px; vertical-align: baseline;"> </span><span class="pun" style="background-color: transparent; margin: 0px; padding: 0px; border: 0px; vertical-align: baseline;">,</span><span class="pln" style="background-color: transparent; margin: 0px; padding: 0px; border: 0px; vertical-align: baseline;"> </span><span class="lit" style="background-color: transparent; margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(128, 0, 0);">8</span><span class="pun" style="background-color: transparent; margin: 0px; padding: 0px; border: 0px; vertical-align: baseline;">,</span><span class="pln" style="background-color: transparent; margin: 0px; padding: 0px; border: 0px; vertical-align: baseline;"> </span><span class="lit" style="background-color: transparent; margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(128, 0, 0);">8</span><span class="pun" style="background-color: transparent; margin: 0px; padding: 0px; border: 0px; vertical-align: baseline;">,</span><span class="pln" style="background-color: transparent; margin: 0px; padding: 0px; border: 0px; vertical-align: baseline;"> </span><span class="lit" style="background-color: transparent; margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(128, 0, 0);">8</span><span class="pun" style="background-color: transparent; margin: 0px; padding: 0px; border: 0px; vertical-align: baseline;">,</span><span class="pln" style="background-color: transparent; margin: 0px; padding: 0px; border: 0px; vertical-align: baseline;"> </span><span class="lit" style="background-color: transparent; margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(128, 0, 0);">16</span><span class="pun" style="background-color: transparent; margin: 0px; padding: 0px; border: 0px; vertical-align: baseline;">,</span><span class="pln" style="background-color: transparent; margin: 0px; padding: 0px; border: 0px; vertical-align: baseline;"> </span><span class="lit" style="background-color: transparent; margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(128, 0, 0);">0</span><span class="pun" style="background-color: transparent; margin: 0px; padding: 0px; border: 0px; vertical-align: baseline;">); </span>
    <span class="pun" style="background-color: transparent; margin: 0px; padding: 0px; border: 0px; vertical-align: baseline;">添加到</span>
    <span class="pun" style="background-color: transparent; margin: 0px; padding: 0px; border: 0px; vertical-align: baseline;"></span><pre class="default prettyprint prettyprinted" name="code" style="white-space: pre-wrap; word-wrap: break-word; margin-top: 0px; margin-bottom: 10px; background-color: rgb(238, 238, 238); font-weight: bold; padding: 5px; border: 0px; vertical-align: baseline; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif; overflow: auto;  auto; max-height: 600px;"><code style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif;"><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">gLSurfaceView</span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">.</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">setCocos2dxRenderer</span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">(</span><span class="kwd" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent; color: rgb(0, 0, 139);">new</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;"> </span><span class="typ" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent; color: rgb(43, 145, 175);">Cocos2dxRenderer</span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">());</span></code>
    的前面即可
    
    

    祝你好运!




    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    2012-12-26更新:

    世界末日没有到来,生活还是要继续,勤奋的2dx社区和2dx开发者发布了新的版本,连google也发布了NDKR8C/NDKR8D (R8D支持gcc4.7了,高兴中...),之前我一直认为需要用一个批处理,其实适当的编写配置文件,可以抛开我的bat批处理,下面简单的介绍一下


    Eclipse + NDK的编译方法


    方法1:在Application.mk 下加入如下代码(根据实际路径进行修改)
    路径中不能有空格,根据自己的实际路径进行编写
    NDK_MODULE_PATH:=D:work7cocos2d-2.1beta3-x-2.1.0; 

    D:work7cocos2d-2.1beta3-x-2.1.0/cocos2dx/platform/third_party/android/prebuilt

     

    注意NDK_MODULE_PATH 路径分割符号是分号 “;” ,Linux 或者OS X 系统请更改为冒号 “:”


    然后Eclipse中导入NDK路径中的 ndk-build.cmd 文件,具体请参看文章的截图


    方法2:在Eclipse中
    Edit Configuration中的 参数Arguments:中加入参数
    根据自己的实际路径进行编写
    NDK_MODULE_PATH:=D:work7cocos2d-2.1beta3-x-2.1.0;D:work7cocos2d-2.1beta3-x-2.1.0/cocos2dx/platform/third_party/android/prebuilt   -j8

    注意NDK_MODULE_PATH 路径分割符号是分号 “;” ,Linux 或者OS X 系统请更改为冒号 “:”
    NDK_MODULE_PATH:=  或者用NDK_MODULE_PATH = 即等号前面的 冒号 ":" 可有可无

    其中-j8 表示开启的编译线程数量,请根据自己的CPU核心数进行更改,如我电脑是的8核心CPU所以是 -j8

     

    然后导入NDK路径中的 ndk-build.cmd 文件, 具体请参看文章的截图

     


    下面的方法3和方法4就是我的老式方法,读者可以优先选用上面的方法1和方法2

    方法3:

    Eclipse中 直接导入一个自己写的批处理文件

    build_android_ndk_tests2.1.0.bat  这里不指定编译的目录

     

    方法4:

    先用build_android_ndk_tests2.1.0.bat 编译出来一个jni库文件,然后在Eclipse中

    编译带有libs目录库文件就可以了(图片等资源还是需要自己copy到指定的目录),编译出一个apk文件

  • 相关阅读:
    js对象的深度克隆
    通用事件监听函数
    JavaScript封装
    Ajax
    MarkDown怎么在博客园展现出来
    MarkDown语法学习
    暑期培训第三周SDN总结
    暑期培训遇到的floodlight+mininet+ubuntu的问题
    Ubuntu14.04搭建mininet与可视化工具miniedit介绍
    Ubuntu 14.04 安装 Sublime Text 3,并用Sublime Text 3 安装Package Control
  • 原文地址:https://www.cnblogs.com/Anzhongliu/p/6092008.html
Copyright © 2011-2022 走看看