Gluon Mobile 无法移植到 iOS

Gluon Mobile Not Being Able to Port to iOS

我正在开发这个应用程序的最后阶段,我似乎无法将它移植到 iOS。当尝试在 iOS 上构建我的应用程序时,我一次又一次地遇到 OutOfMemory 异常。

然后我尝试构建一个基本的 Gluon Mobile 应用程序并将其移植到 iOS,我得到了这个:

:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:createDefaultIOSLauncher UP-TO-DATE
:compileIosJava UP-TO-DATE
:processIosResources UP-TO-DATE
:iosClasses UP-TO-DATE
:iosExtractNativeLibs UP-TO-DATE
:createIpa
RoboVM has detected that you are running on a slow HDD. Please consider mounting a RAM disk.
To create a 2GB RAM disk, run this in your terminal:
SIZE=2048 ; diskutil erasevolume HFS+ 'RoboVM RAM Disk' `hdiutil attach -nomount ram://$((SIZE * 2048))`
See http://docs.robovm.com/ for more info
RoboVM has detected that you are running on a slow HDD. Please consider mounting a RAM disk.
To create a 2GB RAM disk, run this in your terminal:
SIZE=2048 ; diskutil erasevolume HFS+ 'RoboVM RAM Disk' `hdiutil attach -nomount ram://$((SIZE * 2048))`
See http://docs.robovm.com/ for more info
Root pattern javax.annotations.**.* matches no classes
Root pattern javax.inject.**.* matches no classes
RoboVM has detected that you are running on a slow HDD. Please consider mounting a RAM disk.
To create a 2GB RAM disk, run this in your terminal:
SIZE=2048 ; diskutil erasevolume HFS+ 'RoboVM RAM Disk' `hdiutil attach -nomount ram://$((SIZE * 2048))`
See http://docs.robovm.com/ for more info
Root pattern javax.annotations.**.* matches no classes
Root pattern javax.inject.**.* matches no classes
Warning: javax.xml.bind.annotation.XmlRootElement is a phantom class!
Warning: java.nio.file.StandardOpenOption is a phantom class!
Warning: java.nio.file.FileSystem is a phantom class!
Warning: java.nio.file.OpenOption is a phantom class!
Warning: java.nio.file.FileSystems is a phantom class!
Warning: com.oracle.jrockit.jfr.TimedEvent is a phantom class!
Warning: com.oracle.jrockit.jfr.EventToken is a phantom class!
Warning: com.oracle.jrockit.jfr.ValueDefinition is a phantom class!
Warning: com.oracle.jrockit.jfr.EventDefinition is a phantom class!
Warning: com.oracle.jrockit.jfr.Producer is a phantom class!
Warning: com.oracle.jrockit.jfr.FlightRecorder is a phantom class!
Daemon stopping because JVM tenured space is exhausted
Daemon stopping because JVM tenured space is exhausted

我的 IMac 是 运行 8GB RAM,2.7GHz I5。

我也试过挂载 RoboVM RAM Disk 但没有成功。请帮忙!

通常,iOS 部署需要大量内存,最好将 JVM 堆的最大分配内存池默认增加到 2 GB。

运行 来自您的 IDE,您可以在 Gradle 首选项中设置此默认值。

例如,在 NetBeans 上,转到 Preferences->Miscellaneous->Gradle、Scripts & Tasks,然后作为 Gradle JVM arguments 添加 -Xmx2048m:

另一种选择是在 gradle.properties 文件中设置 gradle 属性(带有 ANDROID_HOME 属性 的文件,位于 <user>/.gradle):

org.gradle.jvmargs=-Xmx2048m

此 属性 文件将从 IDE 或命令行 运行 应用,因此更合适。

发现内存不足错误的典型情况是第一次启动 RoboVM 编译器时。幸运的是,所有编译的 类 都被缓存了,所以重新启动任务只是恢复进程。

此外,如果进程失败,有时可以很方便地用 gradle --stop./gradlew --stop 停止所有守护线程,然后重新启动任务。

如果该过程成功结束,即使有警告消息,也只需在您的 iOS 设备上检查该应用程序是否已安装并且 运行 没问题。请注意,您也可能会发现内存问题,但这是一个不同的问题。

编辑

当 运行 执行长任务时,使用 --info 总是很方便地了解有关该过程的更多信息,并提供更详细的输出。

此外,该过程可以从控制台 运行(从 NetBeans,右键单击 build.gradle 文件和 select 工具 -> 在终端中打开)。