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/。
在安装完成后复制以下代码测试以下:
右键点击Run as—iOS Simulator App即可看到效果。
Libgdx和RoboVM
因为对于多数开发者而言,你是希望的是发布游戏到App Stroe,所以除了Mac以外,你还需要一个开发者认证。
建议使用setup-ui工具,这样可以免去不少烦心的配置。
导入项目后可以直接运行查看效果。
虽然原理上你可以不会oc就进行相关操作,因为RoboVM还没有完全成熟,遇上问题你需要自己解决。
对于早期的这个错误,比如java.lang.NoSuchMethodError等等,解决问题所需要的只是升级RoboVM和它的插件。
使用构建工具是一个不错的选择,比如Gradle。具体的配置可以参考RoboVM Sample iOS App。
主要的配置就是
第三方服务的集成
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群询问很难得到准确的帮助。
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.*;
public class IOSDemo extends UIApplicationDelegate.Adapter {
private UIWindow window = null;
private int clickCount = 0;
@Override
public boolean didFinishLaunching(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
public void onTouchUpInside(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();
return true;
}
public static void main(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群询问很难得到准确的帮助。
参考