Upgrade to moe 1.3.0-beta1 questions

Hi! I’m trying to upgrade to moe 1.3.0-beta1 version.
my config for 1.2.+ version:

moe {
  mainClassName = 'MoeGraphicsTestLauncher'
  xcode {
    mainProductName 'Graphics Test'
    generateProject false
    xcodeProjectDirPath 'xcode'
    deploymentTarget '8.0'
    infoPlistPath "xcode/Info.plist.xml"
  }
}

Should I delete that config and set just:

xcode {
   project 'xcode/graphics-test-moe.xcodeproj'
}

Where I can set main java class?

Ok. I set it. Then I launch app via

./gradlew :graphics-test-moe:moeLaunch --stacktrace

and then I get exception:

:graphics-test-moe:moeGenerateUIObjCInterfaces FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':graphics-test-moe:moeGenerateUIObjCInterfaces'.
> Filed to update Xcode project

* Try:
Run with --info or --debug option to get more log output.

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':graphics-test-moe:moeGenerateUIObjCInterfaces'.
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:84)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:55)
        at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:61)
        at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
        at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:88)
        at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:45)
        at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:51)
        at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
        at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
        at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:233)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:215)
        at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:74)
        at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:55)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)
        at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)
Caused by: org.gradle.api.GradleException: Filed to update Xcode project
        at org.moe.gradle.tasks.GenerateUIObjCInterfaces.run(GenerateUIObjCInterfaces.java:235)
        at org.moe.gradle.tasks.AbstractBaseTask.runInternal(AbstractBaseTask.java:108)
        at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
        at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.doExecute(DefaultTaskClassInfoStore.java:141)
        at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.java:134)
        at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.java:123)
        at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:624)
        at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:607)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:95)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:76)
        ... 15 more
Caused by: java.lang.NullPointerException
        at org.moe.gradle.tasks.GenerateUIObjCInterfaces.lambda$run$2(GenerateUIObjCInterfaces.java:154)
        at org.moe.document.pbxproj.nextstep.Array.find(Array.java:261)
        at org.moe.gradle.tasks.GenerateUIObjCInterfaces.run(GenerateUIObjCInterfaces.java:151)
        ... 24 more


BUILD FAILED

p.s. "Filed to update Xcode project " seems like a typo

Dear zufarfakhurtdinov,

  1. in the beta release you have to set the main class in your main target’s Info.plist as such:

    <key>MOE.Main.Class</key>
    <string>your.app.Main</string>
    
  2. the exception you get is most likely due to the moe.xcode.mainTarget property not being set in your build.gradle file.

Best Regards,
Kristóf

Hi Zufar,

You may also check out our latest blog post about upgrading a LibGDX project:

The minimum required contents of the moe block in MOE 1.3:

moe {
    xcode {
      project 'xcode/ios-moe.xcodeproj'
      mainTarget 'ios-moe'
      testTarget 'ios-moe-Test'
    }
}

where ios-moe should be replaced with the appropriate filename / Xcode target name.

Best Regards,
Gergely

Thank you! Upgrade has been successful!

We also do not see any performance regressions moving to 1.3-b1:

https://drive.google.com/file/d/0B6y9-YXAXUb8b2Y4TS12SjFOakE/view?usp=sharing

(this is including comparison with RoboVM, and there is only one test where RoboVM is better)