是否可以使用可导入Xcode的libgdx(RoboVM)创建iOS库或框架?
背景:我的一位同事创建了一个3D可视化应用程序,作为android和windows桌面的libgdx项目.它可以编译为使用RoboVM在iOS上运行.但是,我想使用Xcode在其周围包装额外的本机用户界面元素.我知道可以通过RoboVM以编程方式构建用户界面,但我很想调查是否有可能将现有工作带入Xcode.我不需要编辑3D可视化组件,但在3D Vis窗口周围添加额外的GUI元素.我想将libgdx(RoboVM)代码编译成框架或库可能是一个可以导入的解决方案?!
在我的RoboVM项目中,我使用了一些第三方框架.但他们需要将-ObjC添加到"Other Linker Flags",否则会崩溃.
我知道如何在Xcode中添加它,但在Eclipse中,我该怎么做?
我最近完成了为android创建一个libgdx应用程序,我目前正在尝试将其移植到ios.我安装了eclipse kepler,其上面有robovm插件.我的mac也在运行osx mavericks.现在针对实际问题 - 每当我尝试将我的应用程序作为iOS项目运行时,它就会出现错误.这是控制台中出现的内容 -
3/28/14 8:54:34 PM: [ERROR] ld: framework not found UIKit
3/28/14 8:54:34 PM: [ERROR] clang: error: linker command failed with exit code 1 (use -v to see invocation)
3/28/14 8:54:35 PM: [ERROR] Build failed
Run Code Online (Sandbox Code Playgroud)
这就是我在错误细节中得到的 -
Build failed. Check the RoboVM console for more information.
Run Code Online (Sandbox Code Playgroud)
命令:
clang++ -o "/Users/akudva/workspace/.metadata/.plugins/org.robovm.eclipse.ui/build/BulletTest-robovm/RobovmLauncher (2)/macosx/x86/com.ashwin.BulletTest.RobovmLauncher/BulletTest" -g -arch i386 "-Wl,-filelist,/Users/akudva/workspace/.metadata/.plugins/org.robovm.eclipse.ui/build/BulletTest-robovm/RobovmLauncher (2)/macosx/x86/com.ashwin.BulletTest.RobovmLauncher/objects" -L /Users/akudva/workspace/.metadata/.plugins/org.robovm.eclipse.ui/robovm-0.0.10/lib/vm/macosx/x86 -ObjC -exported_symbols_list "/Users/akudva/workspace/.metadata/.plugins/org.robovm.eclipse.ui/build/BulletTest-robovm/RobovmLauncher (2)/macosx/x86/com.ashwin.BulletTest.RobovmLauncher/exported_symbols" -Wl,-no_implicit_dylibs -Wl,-dead_strip -mmacosx-version-min=10.6 -lrobovm-bc -force_load /Users/akudva/workspace/.metadata/.plugins/org.robovm.eclipse.ui/robovm-0.0.10/lib/vm/macosx/x86/librobovm-rt.a -lrobovm-debug -lrobovm-core -lgc -lpthread -ldl -lm -liconv -lsqlite3 …Run Code Online (Sandbox Code Playgroud) 我使用的是Xcode Version 6.1(6A1052d)
我想在模拟器上启动一个应用程序.
它第一次总能正常工作.如果我想第二次启动,我有一个错误(见下面的日志).然后在iOS模拟器中我"重置内容和设置",我可以再次成功启动.
鉴于错误日志,我认为它必须与错误的路径有关.问题是我对Mac文件系统和路径链接不好,所以非常感谢你的帮助.
编辑:这是info.plist.xml(如果重要的话由LibGDX生成)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleDisplayName</key>
<string>${app.name}</string>
<key>CFBundleExecutable</key>
<string>${app.executable}</string>
<key>CFBundleIdentifier</key>
<string>${app.id}</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>${app.name}</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>${app.version}</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>${app.build}</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
<key>UIStatusBarHidden</key>
<true/>
<key>UIDeviceFamily</key>
<array>
<integer>1</integer>
<integer>2</integer>
</array>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
<string>opengles-2</string>
</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<!-- <string>UIInterfaceOrientationPortrait</string> -->
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>CFBundleIcons</key>
<dict>
<key>CFBundlePrimaryIcon</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>Icon</string>
<string>Icon-72</string>
</array>
</dict>
</dict>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)
还有我的robovm.xml:
app.version=1.0 …Run Code Online (Sandbox Code Playgroud) 因此,对于Android设备,您调用的默认共享意图功能将列出在设备上下载的所有应用程序,允许共享内容.我将如何使用robovm执行此操作,这是我想要实现的屏幕截图.另外在旁注中,我最终要做的是截取他们设备的屏幕截图并将其发布到用户选择的任何社交媒体网站.任何帮助将不胜感激:D
尝试使用RoboVM将我的LibGDX游戏移植到iOS.
在为模拟器运行应用程序时,我收到此错误:
Exception in thread "main" java.lang.UnsatisfiedLinkError:
at com.badlogic.gdx.backends.iosrobovm.IOSGLES20.init(Native Method)
at com.badlogic.gdx.backends.iosrobovm.IOSGLES20.<init>(IOSGLES20.java)
at com.badlogic.gdx.backends.iosrobovm.IOSApplication.didFinishLaunching(IOSApplication.java)
at com.badlogic.gdx.backends.iosrobovm.IOSApplication$Delegate.didFinishLaunching(IOSApplication.java)
at org.robovm.cocoatouch.uikit.UIApplicationDelegate$Callbacks.didFinishLaunching(UIApplicationDelegate.java)
at org.robovm.cocoatouch.uikit.UIApplication.UIApplicationMain(Native Method)
at org.robovm.cocoatouch.uikit.UIApplication.main(UIApplication.java)
at ***********
Run Code Online (Sandbox Code Playgroud) 微软正在停止使用RoboVM,我甚至都没想弄清楚投资这个框架的公司和初创公司的麻烦.
我看到另外三个JAVA跨平台移动框架:英特尔的多操作系统引擎https://software.intel.com/en-us/multi-os-engine,Oracle的MAF http://www.oracle.com /technetwork/developer-tools/maf/overview/index.html 和https://www.codenameone.com.
有没有人对这些框架有充分的了解?他们的项目健康状况如何?其中任何其他候选人我们将会看到与ROBOVM案件相同的分歧吗?
自从我的Mac OS X更新到El Capitan(以及安卓工作室从1.5.1到2.x使用所有工具和sdks)我在Android Studio中遇到了我的libgdx-robovm游戏问题.当我在做Gradle Sync时,它总是挂起:
执行任务:[:android:generateDebugSources,:android:generateDebugAndroidTestSources,:android:mockableAndroidJar,:android:prepareDebugUnitTestDependencies,:android-full:generateDebugSources,:android-full:generateDebugAndroidTestSources,:android-full:mockableAndroidJar,:android-full: prepareDebugUnitTestDependencies]
总是.悬挂我的意思是永远.
我看到很少有同样问题的主题,但我找不到任何解决方案,我真的很沮丧.我试过了:
1)确保我安装了zlib(s /usr/include/zlib.h),
2)在Global Gradle设置中我尝试打开"离线工作",但结果是一样的,
3)清除robovm和gradle缓存,
4)重启Android Studio,
5)将Android Studio更新到最新的稳定版本,
6)我已经尝试了最新的gradle,但它只是提出了新的问题,最后在摆脱它们后我得到了相同的点(悬挂),
7)删除.gradle目录,
8)删除构建目录的内容,
9)清洁和重建,
10)无效和重新启动 - 重新启动后它没有挂起,但任何操作(清理,重建,同步)都会再次挂起,
11)尝试过较旧的Android Studio(1.5.1),
12)尝试了不同的gradle插件版本:1.2.3,1.5.0,2.0 +
13)尝试了不同的android构建工具(22.0.1和23.xx)
14)直接从控制台编译(使用-d获取更多日志):
最后几行:
11:17:41.891 [DEBUG] [org.gradle.model.internal.registry.DefaultModelRegistry]将模型元素'tasks.tasks'转换为状态GraphClosed.
11:17:41.891 [INFO] [org.gradle.execution.TaskNameResolvingBuildConfigurationAction
]从项目中选择的主要任务"任务":11:17:41.893 [DEBUG] [org.gradle.execution.taskgraph.DefaultTaskGraphExecuter]时间:
创建DAG耗时0.002秒11:17:41.894 [INFO] [org.gradle.BuildLogger]评估所有项目.
配置> 7/7项目
(永远......)
编辑:
可能导致这种冻结的问题是我有ios(robovm)的2个子项目,当我删除其中一个时,它最终起作用.这只是ios的一个问题,因为android 2子模块不是问题.我还必须将robovm更新到最新版本.
我有一个LibGDX项目,我可以在LibGDX支持的所有平台上运行.最近我开始整合Google Nearby Messages API.我通过特定于平台的代码在Android上工作,就像Google上的描述说它应该完成.现在我想将它集成到使用RoboVM的iOS项目中,但是根据他们的文档(https://developers.google.com/nearby/messages/ios/get-started),我应该使用CocoaPods,它不会看起来非常简单,特别是在LibGDX项目中.我希望有这方面经验的人可以帮助我,或者指出我已经完成的项目.谢谢!
我有一个使用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个参数.并且无法在线找到有关如何使用它的任何示例.