libGDX基于RoboVM对IOS平台的支持

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载自夜明的孤行灯

本文链接地址: https://www.huangyunkun.com/2014/03/19/libgdx_robovm/

Libgdx这款跨平台的游戏开发引擎,我之前的很多文章都介绍过了,可以点击Libgdx查看。

Libgdx在0.99版本正式加入对IOS的支持。

Libgdx之前其实也是支持IOS的,只是需要先转化成C#,然后使用收费的工具实现。

而现在Libgdx使用了RoboVM,这是开源免费的。目前已经有超过百款的Libgdx游戏发布到App Store了。

RoboVM

RoboVM将Java的字节码转为本地代码,并封装了UI和各种API。这样可以最大程度重用你原有的Java代码。

RoboVM需要一个Mac OS X,虽然在其他平台,比如ubuntu,也是可以使用的。不过为了更好的集成和开发,最好还是入手一个Mac吧。

RoboVM提供了Eclipse插件,安装地址:http://download.robovm.org/eclipse/

插件安装

在安装完成后复制以下代码测试以下:

import org.robovm.cocoatouch.coregraphics.*;
import org.robovm.cocoatouch.foundation.*;
import org.robovm.cocoatouch.uikit.*;

publicclass IOSDemo extends UIApplicationDelegate.Adapter {

private UIWindow window =null;
privateint clickCount =0;

@Override
publicbooleandidFinishLaunching(UIApplication application,
NSDictionary launchOptions) {

final UIButton button = UIButton.fromType(UIButtonType.RoundedRect);
button.setFrame(new CGRect(115.0f,121.0f,91.0f,37.0f));
button.setTitle("Click me!", UIControlState.Normal);

button.addOnTouchUpInsideListener(new UIControl.OnTouchUpInsideListener() {
@Override
publicvoidonTouchUpInside(UIControl control, UIEvent event) {
button.setTitle("Click #" + (++clickCount), UIControlState.Normal);
}
});

window =new UIWindow(UIScreen.getMainScreen().getBounds());
window.setBackgroundColor(UIColor.lightGrayColor());
window.addSubview(button);
window.makeKeyAndVisible();

returntrue;
}

publicstaticvoidmain(String[] args) {
NSAutoreleasePool pool =new NSAutoreleasePool();
UIApplication.main(args,null, IOSDemo.class);
pool.drain();
}
}

右键点击Run asiOS Simulator App即可看到效果。

Libgdx和RoboVM

因为对于多数开发者而言,你是希望的是发布游戏到App Stroe,所以除了Mac以外,你还需要一个开发者认证。

建议使用setup-ui工具,这样可以免去不少烦心的配置。

导入项目后可以直接运行查看效果。

虽然原理上你可以不会oc就进行相关操作,因为RoboVM还没有完全成熟,遇上问题你需要自己解决。

对于早期的这个错误,比如java.lang.NoSuchMethodError等等,解决问题所需要的只是升级RoboVM和它的插件。

使用构建工具是一个不错的选择,比如Gradle。具体的配置可以参考RoboVM Sample iOS App

主要的配置就是

apply plugin:'robovm'

buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath'com.github.jtakakura:gradle-robovm-plugin:0.0.5'
}
}

第三方服务的集成

Libgdx对IOS的支持中另外一个问题就是第三方SDK的集成。特别是对广告和应用内付费的集成。

这些问题其实是RoboVM的,而不是Libgdx,所以寻求帮助时需要明确对象。

robovm-ios-bindings是一个较好的选择,它支持大量第三方服务,如:

  • adcolony
  • admob
  • chatboost
  • crashlytics
  • facebook
  • flurry
  • gamecenter

使用步骤如下:

  • 下载这个项目
  • 导入Eclipse
  • 将你需要的依赖加入Eclipse
  • 打开robovm.xml
  • 从项目中复制你需要的配置到robovm.xml中
  • 在代码中使用

该项目的包名为org.robovm.bindings.bindingname,比如admob就是org.robovm.bindings.admob.sample

对于每种服务都有例子,可以放心大胆使用。

遇到问题怎么办

首先区分问题是属于Libgdx-RoboVM-backend还是RoboVM的。

如果属于RoboVM的去RoboVM的社区,如果是Libgdx的先尝试nightly版本,如果问题依旧请前往英文社区提交。

大部分问题都是繁琐且细致的,在QQ群询问很难得到准确的帮助。

参考

使用RoboVM发布Libgdx游戏

RoboVM官网

GDX Super Jumper

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载自夜明的孤行灯

本文链接地址: https://www.huangyunkun.com/2014/03/19/libgdx_robovm/

发表评论