我有一个使用LibGDX的安卓游戏.在其中,我有一些按钮用于在浏览器中打开URL:
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://myURL/"));
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
这看起来很好......
问题是我正在尝试将游戏移植到带有RoboVM的iOS上运行,并且无法弄清楚如何设置类似的东西.
使用RoboVM绑定,我假设我可能想要使用openURL()方法:
openURL (UIApplication application, NSURL url, String sourceApplication, NSObject annotation)
Run Code Online (Sandbox Code Playgroud)
但除了NSURL之外,我不知道我需要传递其他3个参数.并且无法在线找到有关如何使用它的任何示例.
我正在通过LibGDX关注AdMob集成的本教程,但它仅适用于Android.我只是想知道是否有人有一个例子如何实现包括iOS在内的相同集成?另外,我如何使用横幅而不是全屏?
目前我使用LibGDX设置的iOS是:
1.- RoboVM
我试图在我的iPhone上使用RoboVM安装iOS应用程序.该应用程序正在我的iOS模拟器中工作,但当我尝试手机时,应用程序只是在启动画面后崩溃.
我也遇到了这个错误:
03/06/14 8:40:38 PM: [ERROR] AppLauncher failed with an exception:
03/06/14 8:40:38 PM: [ERROR] java.lang.RuntimeException: Unexpected response from debugserver: $X00;description:5465726d696e617465642064756520746f207369676e616c2036;#00
03/06/14 8:40:38 PM: [ERROR] at org.robovm.libimobiledevice.util.AppLauncher.launchInternal(AppLauncher.java:708)
03/06/14 8:40:38 PM: [ERROR] at org.robovm.libimobiledevice.util.AppLauncher.launch(AppLauncher.java:814)
03/06/14 8:40:38 PM: [ERROR] at org.robovm.compiler.target.ios.AppLauncherProcess$1.run(AppLauncherProcess.java:67)
Run Code Online (Sandbox Code Playgroud)
我在iOS 8上使用LibGDX.
我怎么解决这个问题?
我已将我的libgdx(1.3),maven,robovm项目从0.0.13迁移到0.0.14,以支持IOS 8设备.我根据发行说明修改了我的robovm.xml文件,可以在IOS 8设备上运行但在几个地方获得NullPointerException.我遇到的问题如下:
org.luaj.vm2.LuaError:checkOnSessionEndAchievements:5 vm错误:org.luaj.vm2.LuaClosure.exe的java.lang.NullPointerException(未知来源)atg.luaj.vm2.LuaClosure.call(未知来源)net. games.mobile.game.core.LuaScriptManager.runFunction(LuaScriptManager.java)at net.games.mobile.game.core.achievement.AchievementManager $ 3.run(AchievementManager.java)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor) .java)java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java)at java.lang.Thread.run(Thread.java)
我认为有些内容与0.0.14版本的反射行为有关,因为就我看来,异常与反射有关.顺便说一句,IOS 7.1设备上存在相同的NullPointerException问题,但"声音,音乐,振动"正在发挥作用.
我该如何解决这个NullPointerException问题?
感谢和问候
我对获取在 libgdx 之上开发的应用程序版本(以及在 ios 的 robovm 上)有一些疑问
我想获取版本信息
android:versionName标签中声明的AndroidManifest.xmlapp.version的 key中声明的。robovm.properties(我相信,它最终会被替换为CFBundleShortVersionStringkey in的值Info.plist.xml)我的第一个问题是,libgdx 是否提供了一种独立于平台的方法来获取应用程序版本?(我找不到任何)
如果没有,我找到了在 Android 上获取应用程序版本的答案,那没关系。为 IOS找到了相同的答案,但以本机方式。我如何使用 robovm 后端做同样的事情?
我正在 github 上为我的 robovm-libgdx 项目集成 admob 绑定:https://github.com/BlueRiverInteractive/robovm-ios-bindings/tree/master/admob 按照此文档: https: //github.com/libgdx /libgdx/wiki/Admob-in-libgdx#ios-setup-robovm
在使用设备进行调试步骤中,我收到错误:
6/20/14 10:02:57 AM: [ERROR] Undefined symbols for architecture armv7:
6/20/14 10:02:57 AM: [ERROR] "_, referenced from:
6/20/14 10:02:57 AM: [ERROR] l001 in libadmob.a(GADGestureUtil.o)
6/20/14 10:02:57 AM: [ERROR] "_SCNetworkReachabilityGetFlags", referenced from:
6/20/14 10:02:57 AM: [ERROR] l001 in libadmob.a(GADGestureUtil.o)
6/20/14 10:02:57 AM: [ERROR] "_OBJC_CLASS_$_MMessageComposeViewController", referenced from:
6/20/14 10:02:57 AM: [ERROR] objc-class-ref in libadmob.a(GADOpener.o)
6/20/14 10:02:57 AM: [ERROR] "_OBJC_CLASS_$_MFMailComposeViewController", referenced from:
6/20/14 10:02:57 AM: [ERROR] objc-class-ref in libadmob.a(GADOpener.o)
6/20/14 10:02:57 …Run Code Online (Sandbox Code Playgroud) 我有大量的Java代码(只有计算函数,没有UI),我想在iOS中作为静态库重用.我的方法是使用robovm并按照非官方的方式创建一个静态库,在robovm论坛的两篇文章中描述:1基本方式和2精炼版本
尝试按照描述完全按照步骤操作,在使用脚本创建共享库,链接Xcode中的库(.a)并成功构建项目之后,我不幸遇到了问题.
在运行期间,我看到我的C++桥代码被调用,但JNI回调到库失败并带有BAD_ACCESS.例如,以下行崩溃:
jclass myJavaClass = jniEnv->FindClass("com/test/robovm/bridge/MyJavaRoboCode");
Run Code Online (Sandbox Code Playgroud)
在这个方法中:
void callSomethingInJava(const char* arg) {
// To call into java from your native app, use JNI
Env* rvmEnv = rvmGetEnv();
JNIEnv* jniEnv = &(rvmEnv->jni);
jclass myJavaClass = jniEnv->FindClass("com/test/robovm/bridge/MyJavaRoboCode");
jmethodID myJavaMethod = jniEnv->GetStaticMethodID(myJavaClass, "callJava", "(Ljava/lang/String;)V");
jstring argAsJavaString = jniEnv->NewStringUTF(arg);
jniEnv->CallStaticVoidMethod(myJavaClass, myJavaMethod, argAsJavaString);
Run Code Online (Sandbox Code Playgroud)
}
如果我尝试直接使用rvmXX方法而不是JNI并尝试访问"Java"类中的某些内容,情况也是如此.看起来rvmEnv没有完全初始化.(我仔细检查了包名错误或拼写错误).
如果有人已经成功地从robovm项目创建了一个共享静态库并且可以在这里分享经验或指出我正确的方向来解决问题,那将是很棒的.
java java-native-interface objective-c static-libraries robovm
我正在尝试将 libgdx 游戏导出到 .ipa。首先我得到这样的错误:
No signing identity found matching 'iPhone Distribution: Alon Zilberman (Y59452PXMM)'
Run Code Online (Sandbox Code Playgroud)
然后我通过这种方式检查我是否真的有身份:
security find-identity -v -p codesigning
Run Code Online (Sandbox Code Playgroud)
我得到了我所有身份的列表:
.........
4) C6EE6E2D320E08328E6BBBFB9232862728680199 "iPhone Developer: Alon Zilberman (C45JLF8WFU)"
5) 6C8A911B4344F777C606E5FDACDF4F102F140731 "iPhone Distribution: Alon Zilberman (Y59452PXMM)"
Run Code Online (Sandbox Code Playgroud)
我下载了 robovm buid 并尝试了这个:
java -cp lib/robovm-compiler.jar org.robovm.compiler.target.ios.SigningIdentity
Run Code Online (Sandbox Code Playgroud)
但我得到了空清单:
[]
Run Code Online (Sandbox Code Playgroud)
我检查了代码SigningIdentity,发现它调用了我手动调用的相同命令,所以我不知道为什么它会得到空列表。也许是有权限的东西?将非常感谢您的帮助!
我已经阅读了大量文档,编写了一些代码,甚至复制和粘贴但仍然无效.我从这里下载了绑定https://github.com/BlueRiverInteractive/robovm-ios-bindings并按照这里的所有步骤https://github.com/libgdx/libgdx/wiki/Admob-in-libgdx
我的项目只有iOS和桌面,我打开eclipse,导入了admob-ios并在构建路径中配置它,我将文件"libadmob.a"复制到ios/libs然后我编辑了robovm.xml.这是它的样子
<config>
<executableName>${app.executable}</executableName>
<mainClass>${app.mainclass}</mainClass>
<os>ios</os>
<arch>thumbv7</arch>
<target>ios</target>
<iosInfoPList>Info.plist.xml</iosInfoPList>
<libs>
<lib>ios/libadmob.a</lib>
</libs>
<frameworks>
<framework>AudioToolbox</framework>
<framework>AVFoundation</framework>
<framework>CoreGraphics</framework>
<framework>CoreTelephony</framework>
<framework>MessageUI</framework>
<framework>SystemConfiguration</framework>
</frameworks>
<weakFrameworks>
<framework>AdSupport</framework>
<framework>StoreKit</framework>
</weakFrameworks>
Run Code Online (Sandbox Code Playgroud)
在我的IOS Launcher中,这与文档中的完全相同.在我的IActivityRequestHandler中,我只有一个方法是"showAds(boolean show)",我用它来通过传递"IActivityRequestHandler.showAds(true);"从我的核心应用程序调用它.
当我运行时,我不断收到如下错误:org.robovm.objc.ObjCClassNotFoundException:org.robovm.objc.ObjCClass.getByType(ObjCClass.java)中的GADBannerView at org.robovm.bindings.admob.GADBannerView.(GADBannerView .java)...还有9个
当我尝试在我的 ios 设备上构建 roboVM/libgdx 应用程序时,我看到以下错误。
[ERROR] 13:49:29.414 Undefined symbols for architecture arm64:
[ERROR] 13:49:29.414 "_OBJC_CLASS_$_GADInterstitial", referenced from:
[ERROR] 13:49:29.415 objc-class-ref in libGGLAdMob.a(GGLContext+AdMob.o)
[ERROR] 13:49:29.721 "_OBJC_CLASS_$_GADBannerView", referenced from:
[ERROR] 13:49:29.722 objc-class-ref in libGGLAdMob.a(GGLContext+AdMob.o)
[ERROR] 13:49:30.362 ld: symbol(s) not found for architecture arm64
[ERROR] 13:49:30.458 clang: error: linker command failed with exit code 1 (use -v to see invocation)
[ERROR] Couldn't compile app
org.apache.commons.exec.ExecuteException: Command '/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -o /Users/gag/StudioProjects/OlympusNew/ios/robovm-build/tmp/iOS/ios/arm64/IsoGameLauncher -arch arm64 -Wl,-filelist,/Users/gag/StudioProjects/OlympusNew/ios/robovm-build/tmp/iOS/ios/arm64/objects0 -w -L /Users/gag/.robovm-sdks/robovm-2.3.6/lib/vm/ios/arm64 -ObjC -Xlinker -alias_list -Xlinker /Users/gag/StudioProjects/OlympusNew/ios/robovm-build/tmp/iOS/ios/arm64/aliased_symbols -exported_symbols_list /Users/gag/StudioProjects/OlympusNew/ios/robovm-build/tmp/iOS/ios/arm64/exported_symbols -Wl,-no_implicit_dylibs …Run Code Online (Sandbox Code Playgroud)