请教,我最近在看cocos2d-x构建编译多平台环境的资料,目前win32编译用vc无问题,但是在编译android平台时候,不明白很多问题,希望大家帮下忙。
一,我已经架设好cygwin,我的理解是这个工具可以让linux系统的代码在cygwin上面可以编译出可以执行的win32版本程序,是否正确?
二,我用cygwin编译了cocos2d-x的hellworld项目,正确执行了./build_native.sh(该文件位于helloworld目录下),但是不知道生成的程序在哪里可以看到?
三,我了解到android是java语言开发的,支持java语言的程序,那么请问用c++开发的cocos2d-x应该是再转换生成些java源码后,再编译生成为android上面的程序?是否是这样理解?我发现android目录下org目录里面有许多java源码是否这个意思?
谢谢,那位老大能够回答下我。
hello, you’d better describe your question in English.
the foreign developers are very active in the forun, and they will help you.
yangws
August 27, 2011, 8:32pm
3
1 你可以认为Cygwin 是一个运行在Winows 上的Linux模拟器, 它的功能是让 linux上的一些程序可以跑在这个模拟器中来达到在windows上直接运行Linux程序的目的。而具体编译出哪个平台的程序和Cygwin是没什么关系的,这个问题你可以这样理解:你的目的是把你的C代码编译成可以在android机器上跑的二进制程序;要完成这个工作需要一个编译器(即NDK);但是NDK是运行在Linux上的,不能直接在windows上运行,所以需要安装Cygwin来模拟器Linux环境;这样你就在Windows的环境中建立了一个由Cygwin模拟器的Linux环境,在其中运行了本来需要在Linux中运行的编译程序(NDK),最后NDK处理了你的C 代码,输出结果就是你需要的目的:可以跑在andoird上的二进制程序。
2 生成的APK 在 HelloWorld/android/bin 目录下, C代码编译的结果在 HelloWorld/android/libs目录下.
3 游戏代码是C 写的,通过NDK可以直接编译为可以在android上跑的二进制(表现形式是一个动态库),但android不让直接运行可执行程序,所以需要一个间接的方法把游戏的二进制代码运行起来,实现的方式是:用Java写一个标准的android程序(就是那些java代码),在java代码中把由C++代码编译好的动态库调用起来,这样游戏逻辑就跑起来了。
谢谢,再请问下,这个java执行启动程序是怎么生成?还是自己写的。
walzer
September 3, 2011, 8:17pm
5
The java source is created by the wizard automatically, in YouGame/android/src/org/cocos2dx/.
了解,谢谢各位。 我还有个问题,请问java是通过jni库与c++链接的吧?请问自动生成的是否是R.java这个文件,调用的入口函数是那个位于那个文件中?
对,java是通过jni与c链接。
自动生成有很多文件,R.java不能手动改,而你的游戏的逻辑代码在AppDelegate.cpp中开始运行,所以你的c 程序入口是AppDelegate.cpp。
walzer
September 6, 2011, 11:19pm
8
Hey, guys, again, please use English in this forum.
不好意思,我的英语不太好,非不想实不能也,抱歉了。
再请教,cocos2d-x编译到ios平台的是如何的,ios应该是c++吧,谁能稍微详细的介绍下这块的资料?谢谢。
walzer
September 8, 2011, 7:08am
10
Open HelloWorld/ios/HelloWorld.xcodeproj in your xcode4, build & run & watch the magic.
iOS platform suppors objc officially, but it also supports C++. That’s why we can run on iOS.