[英]how to port cocos2dx game to android?
I am very much new to cocos2dx. 我对cocos2dx非常陌生。 I have a cocos2dx project made in xcode.
我有一个用xcode制作的cocos2dx项目。 for gesture recognizers I used cocoa touch's native code(UIGestureRecognizers) in cocos2dx using .mm files.
对于手势识别器,我使用.mm文件在cocos2dx中使用了可可触摸的本机代码(UIGestureRecognizers)。
Now I want to build this project with android sdk too. 现在我也想用android sdk构建这个项目。
The Error i am getting by building the android project using build_native.sh file, in terminal is Like The Following 我通过在终端中使用build_native.sh文件构建android项目而遇到的错误如下
1 1个
../android-ndk-r9d/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: ./obj/local/armeabi/objs/cocos2dcpp_shared/__/__/Classes/HelloWorldScene.o: in function HelloWorld::menuCloseCallback(cocos2d::CCObject*):jni/../../Classes/HelloWorldScene.cpp:88: error: undefined reference to 'XBridge::doSth()'
2 2
../android-ndk-r9d/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: ./obj/local/armeabi/objs/cocos2dcpp_shared/__/__/Classes/HelloWorldScene.o: in function HelloWorld::menuCloseCallback(cocos2d::CCObject*):jni/../../Classes/HelloWorldScene.cpp:85: error: undefined reference to 'XBridge::imageName'
collect2: ld returned 1 exit status
make: *** [obj/local/armeabi/libcocos2dcpp.so] Error 1
make: Leaving directory `../cocos2d-x/projects/MyGame/proj.android'
What Am I missing Here ? 我在这里想念什么? I just started learning cocos2dx.
我刚刚开始学习cocos2dx。 Can i even use the native iOS code like this in an android project ?
我什至可以在一个Android项目中使用这样的本地iOS代码吗? or i am just shooting blanks ?
还是我只是射击空白?
My Code is as written below. 我的代码如下所示。
CODE IN MY HelloWorldScene.cpp 我的HelloWorldScene.cpp中的代码
void HelloWorld::menuCloseCallback(CCObject* pSender)
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8)
CCMessageBox("You pressed the close button. Windows Store Apps do not implement a close button.","Alert");
#else
cocos2d::CCString * imageNameString = cocos2d::CCString::create("image.png");
XBridge::imageName = imageNameString->getCString();
XBridge::doSth();
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
//exit(0);
#endif
#endif
}
Code In XBridge.h XBridge.h中的代码
#ifndef xbridge_XBridgeViewController_h
#define xbridge_XBridgeViewController_h
#include "cocos2d.h"
class XBridge {
public:
static std::string imageName;
static void doSth();
};
#endif
Code In XBridge.mm XBridge.mm中的代码
#include "XBridge.h"
#include "AppController.h"
#include "RootViewController.h"
#include "SpriteVC.h"
using namespace cocos2d;
std::string XBridge::imageName;
void XBridge::doSth()
{
id sth = [[UIApplication sharedApplication] delegate];
if ([sth isKindOfClass:[AppController class]])
{
printf("XBridge::doSth imageName %s\n",imageName.c_str());
SpriteVC *SPVC = [[SpriteVC alloc] initWithNibName:nil bundle:nil];
SPVC.imageNameString = [NSString stringWithFormat:@"%s",imageName.c_str()];
[SPVC setUpImage];
NSLog(@"XBridge::doSth imageName == %@",[NSString stringWithFormat:@"%s",imageName.c_str()]);
//SPVC.imageView.frame = CGRectMake(480, 320, 333, 333);
AppController *controller = (AppController *)sth;
[controller.viewController.view addSubview:SPVC.photoImage];
}
}
You can't use iOS Cocoa Touch API for Android even though you actually can compile Objective-C and Objective-C++ code using Android NDK Clang toolchain. 即使您实际上可以使用Android NDK Clang工具链编译Objective-C和Objective-C ++代码,也无法使用Android的iOS Cocoa Touch API。 Because Android NDK doesn't provide iOS API at all like UIApplication, AppController, and so forth.
因为Android NDK根本不提供iOS API,例如UIApplication,AppController等。 Cocos2d-x just provides Cocos2d-x API in C++ and some plugins for Android.
Cocos2d-x仅提供C ++中的Cocos2d-x API和一些Android插件。
If you want to use iOS API for Android, take a look at Apportable . 如果您想将iOS API用于Android,请查看Apportable 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.