现在的位置: 首页 > 综合 > 正文

eclipse android ndk cygwin cocos2d-x开发环境配置

2013年03月06日 ⁄ 综合 ⁄ 共 5388字 ⁄ 字号 评论关闭

一,下载

开发环境:win7 64/win7 32。

eclipse:为了简化配置,直接使用google提供的adt-bundle-windows-x86,它包含了eclipse,android sdk,sdk manager,adt,cdt,avd。

cygwin:下载最新的cygwin,地址:http://www.cygwin.com,为了可以支持NDK,所以需要下载如下这些包:autoconf2.1、automake1.10、binutils、gcc-core、gcc-g++、gcc4-core、gcc4-g++、gdb、pcre、pcre-devel、gawk、make共12个包。

NDK:下个最新的NDK,我的是android-ndk-r8d。

cocos2d-x:去下个最新的,我的是cocos2d-2.0-x-2.0.3,cocos2d-x官方地址:http://cn.cocos2d-x.org/;cocos2d-x主要资料来源:baidu,官网,csdn移动开发专栏有专门的cocos2d-x专栏,如http://blog.csdn.net/column/details/cocos2d-x-study.html。


二,配置

这个就厉害了,嘿嘿~~

配置cygwin和ndk:

1.运行cygwin,在弹出的命令行窗口输入:cygcheck -c cygwin命令,会打印出当前cygwin的版本和运行状态,如果status是ok的话,则cygwin运行正常。

    然后依次输入gcc –version,g++ --version,make –version,gdb –version进行测试,如果都打印出版本信息和一些描述信息,非常高兴的告诉你,你的cygwin安         装完成了!

2.打开window7设置环境变量的地方:设置两个环境变量NDK:E:\software\android-ndk-r8d和NDK_ROOT:E:\software\android-ndk-r8d,设置成

    android-ndk-r8d的目录。

3.运行cygwin,输入命令cd
/cygdrive/e/android-ndk-r5/samples/hello-jni,进入到E:\android-ndk-r5\samples\hello-jni目录。

4、输入$NDK/ndk-build,执行成功后,它会自动生成一个libs目录,把编译生成的.so文件放在里面。($NDK是调用我们之前配置好的环境变量,ndk-build是调用ndk的

     编译程序)

5、此时去hello-jni的libs目录下看有没有生成的.so文件,如果有,你的ndk就运行正常啦!

配置C/C++的编译器

    1、打开eclipse,导入ndk自带的hello-jni例子,右键单击项目名称,点击Properties,弹出配置界面,之后再点击Builders,弹出项目的编译工具列表,之后点击New,新添加一个编译器,点击后出现添加界面,选择Program,点击OK

    2、出现了添加界面,首先给编译配置起个名字,如:C_Builder

    设置Location为<你cygwin安装路径>\bin\bash.exe程序,例如:E:\cygwin\bin\bash.exe,设置Working Directory为<你cygwin安装路径>\bin目录,例如:E:\cygwin\bin

    设置Arguments为

    --login -c "cd /cygdrive/e/android-ndk-r5/samples/hello-jni && $NDK/ndk-build"

    上面的配置中/cygdrive/e/android-ndk-r5/samples/hello-jni是你当前要编译的程序的目录,$NDK是之前配置  的ndk的环境变量,这两个根据你具体的安装目录进行配置,其他的不用变,Arguments这串参数实际是  给bash.exe命令行程序传参数,进入要编译的程序目录,然后运行ndk-build编译程序

    3、接着切换到Refresh选项卡,给Refresh resources upon completion打上钩,然后点specify resources,选择当前项目,在libs文件夹前打勾。

    4、然后切换到Build Options选项卡,勾选上最后三项

    5、之后点击Specify Resources按钮,选择资源目录,勾选你的项目目录,在jni文件夹前打勾即可。

    6、最后点击Finish,点击OK一路把刚才的配置都保存下来,注意:如果你配置的编译器在其它编译器下边,记得一定要点Up按钮,把它排到第一位,否则C代码的编译晚于Java代码的编译,会造成你的C代码要编译两次才能看到最新的修改

    7、这一路下来肯定很累了吧,现在再次恭喜你,编译配置也配置完成啦,现在来测试一下是否可以自动编译呢,打开项目jni目录里的hello-jni.c文件把提示Hello from JNI!改成其他的文字:如:Hello,My name is alex.,然后再模拟器中运行你的程序,如果模拟器中显示了你最新修改的文字,那么Congratulations!你已经全部配置成功啦

编写简单的JNI例子

这是一个很通用的地方,在搭建cocos2d-x的过程中可以省略此步。搭建好此些步之后会有些小问题,俺就不说了~~哈哈哈

1.先建立一个android工程,命名为MyFirstJNI,Activity名称为JniTest,包名为com.cn.lhq,

2.制作生成.so文件,可以用.h文件来获取函数声明。打开window7设置环境变量的地方,把jdk中bin文件夹的目录加到Path变量的后面,保存。

    把打开cmd,cd工程MyFirstJNI的src目录,然后输入javah -jni.com.cn.lhq.JniTest。然后就再src下多出一个文件com_cn_lhq_JniTest.h。

3.根据生成的头文件写com_cn_lhq_JniTest.c文件。

#include <string.h>

#include <jni.h>

jstring Java_com_cn_lhq_JniTest_stringFromJNI(JNIEnv* env, jobject thiz)

{

return (*env)->NewStringUTF(env, "Hello from JNI!");

}

当然,如果熟悉JNI的命名规则的话可以跳过javah这步,直接写个.c文件。

4.把本工程与ndk下的例子hello-gl2工程对比,模仿hello-gl2的文件夹结构,在MyFirstJNI文件夹下面新建jni文件夹,把com_cn_lhq_JniTest.c剪切到此文件夹下,同时拷贝例子的ANDROID.MK文件到此文件夹,打开此文件,修改如下:

然后打开cygwin编译。使用eclipse打包。然后调试。。。

添加cocos2d-x库

这个就很关键了~~~俺先回去,回去再写~~

http://blog.csdn.net/gitxs/article/details/8134723

1.cocos2d-x的根目录,修改create-android-project.bat。

为了适应我的配置环境,我在create-android-project.bat里改动一些设置。
 set _CYGBIN=C:\cygwin\bin
Cygwin bin的路径
 set _ANDROIDTOOLS=D:\android\android-sdk-windows\tools
android sdk tools的路径
 set _NDKROOT=D:\android\android-ndk-r5b
ndk的根目录


现在你就可以运行“create-android-project.bat”来创建一个android项目:

进入cocos2d-x的根目录,双击create-android-project.bat,输入项目的名称以及target id,如下所示

在版本0.8.2之后,你可能会被要求键入package的路径,路径的格式为:org.cocos2dx.Cocos2dxSimpleGame。

target id 根据不同的环境有不同的区别,你应当确保输入有效的target id。目前cocos2dx支持2.1-update1和Android2.2,其他版本还未测试过。

like me:


现在你可以在cocos2d-x的根目录下看到一个命名为“Test001”的文件夹,运行你的cygwin,cd进去“Test001/proj.android”,之后把“build_native.sh”。拖进命令行运行。经过漫长的编译,(如果你的电脑垃圾如我的电脑)。

搞完后,把项目移入到eclipse,会发现


他妈的,这里有两个错误!

第一个错误:

打开cocos2d-2.0-x-2.0.3\cocos2dx\platform\android\java\src\org\cocos2dx\,把lib文件夹拷贝到cocos2d-2.0-x-2.0.3\Test001\proj.android\src\org\cocos2dx下面,刷新下工程,OK.

打开 (cocos2d-x根目录)\template\android\,用文本文件打开 copy_files.sh,找到 copy_src_and_jni() 函数,添加入下代码

cp -rf $COCOSJAVALIB_ROOT/src $APP_DIR/proj.android  


以后添加新工程的时候就不用拷贝了!

第二个错误:

android:icon="@drawable/icon">改为android:icon="@drawable/ic_launcher">


然后重复配置C/C++的编译器,配置编译器,然后打包。。。

编译的时候可以在Cygwin Terminal中cd到项目目录下之后再使用$NDK/ndk-build编译。

调试的时候最好把avd的配置搞成:sd卡,和内存都小一点,免得占用电脑的硬盘。hardware keyboard present最好选中,免得没有按键。


编译好的apk在cocos2d-2.0-x-2.0.3\Test001\proj.android\bin下面.拖到手机里面就能安装了!、

自此android 的cocos2d配置就完了,下一步会使用cocos2d的官方教程,制作一个小游戏。see yi see~~


如果编译出现其他的一些错误:

1.fatal
error: Box2D/Box2D.h: No such file or directory"

2.Android NDK: jni/Android.mk: Cannot find module with tag 'CocosDenshion/android' in import path    
Android NDK: Are you sure your NDK_MODULE_PATH variable is properly defined ?    
Android NDK: The following directories were searched:    
Android NDK:         
jni/Android.mk:19: *** Android NDK: Aborting.    .  Stop.


那么:

在android.mk下添加

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := game_shared
LOCAL_MODULE_FILENAME := libgame
LOCAL_SRC_FILES := hellocpp/main.cpp \
                   ../../Classes/AppDelegate.cpp \
                   ../../Classes/HelloWorldScene.cpp
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes                   
LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static cocosdenshion_static cocos_extension_static box2d_static  
$(call import-add-path, /cygdrive/d/tools/android/cocos2d-2.0-x-2.0.3) \
$(call import-add-path, /cygdrive/d/tools/android/cocos2d-2.0-x-2.0.3/cocos2dx/platform/third_party/android/prebuilt)
include $(BUILD_SHARED_LIBRARY)
$(call import-module,CocosDenshion/android) \
$(call import-module,cocos2dx) \
$(call import-module,extensions) \
$(call import-module,external/Box2D)


抱歉!评论已关闭.