本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
转载自夜明的孤行灯
本文链接地址: 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 as
—iOS 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
- 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群询问很难得到准确的帮助。
参考
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
转载自夜明的孤行灯
本文链接地址: https://www.huangyunkun.com/2014/03/19/libgdx_robovm/