如何将cocos2dx游戏移植到android平台
how to port cocos2dx game to android?
我对cocos2dx非常陌生。我有一个用xcode制作的cocos2dx项目。对于手势识别器,我使用cocos2dx中的cocoa touch的本机代码(UIGestureRecognizers),使用.mm文件。
现在我想用android sdk来构建这个项目。
在终端中使用build_native.sh文件构建android项目所得到的错误如下
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 ../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'
我错过了什么?我刚开始学习cocos2dx。我能否在android项目中使用像这样的原生iOS代码?或者我只是在射击空白?
我的代码如下:
CODE IN MY 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
#ifndef xbridge_XBridgeViewController_h
#define xbridge_XBridgeViewController_h
#include "cocos2d.h"
class XBridge {
public:
static std::string imageName;
static void doSth();
};
#endif
代码在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 %sn",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];
}
}
你不能在Android上使用iOS Cocoa Touch API,即使你实际上可以使用Android NDK Clang工具链编译Objective-C和objective - c++代码。因为Android NDK根本不提供iOS API比如UIApplication, AppController等等。Cocos2d-x只提供了Cocos2d-x的c++ API和一些Android插件。
如果你想在Android上使用iOS API,可以看看Apportable.
相关文章:
- 正在查找文档以获得PS4平台的C++中的设备信息
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 无法在"surface input"模式下使用 Android 平台的 MediaCodec 类
- 推荐哪个操作系统平台使用Android NDK进行本地游戏开发
- 如何在windows平台上调试android中的本机代码
- 在windows平台上使用libVLC for Android
- 在使用javah工具时包括Android平台jar
- 如何在Android平台工具中构建dexdump
- C++/Cocos2d-x:如何在我的Cocos2d-x多平台项目(iOS、Android…)中添加AdMob
- 将THINC服务器移植到Android平台
- android平台GMP库配置错误.处理步骤
- 为什么android ndk不能在多个平台上编译?
- 将一款SDL 2.0游戏移植到Android平台
- 如何将cocos2dx游戏移植到android平台
- 用于linux平台的中间件android开发的仿真器
- 是否可以使用 ANSI C/C++ 或 Embedded C 开发实体层,以便在 Android 和 iPhone 平台中使用?
- 为什么我在编译时不能将 android 平台设置为低于 22?
- 编译用于android平台的NITE2
- 在android平台上使用dlclose(..)时出现分段错误
- c++字符串操作,适用于iOS和Android平台