Skip to content

thenick775/Quorum_iOS_Transpiliation

Repository files navigation

Quorum iOS Transpiliation

Senior Project, Fall 2020, University of Nevada Las Vegas

This project is now featured in the Quorum Studio 3.0 and Quorum 9.0 release! Featured release notes here

The goal of this project was to re-integrate the RoboVM compiler into the Quorum toolchain, which previously became closed source. I used the open source fork available from MobiVM to accomplish this, where this was used to transpile packaged Quorum applications to iOS binaries.

All build commands were encapsulated in the RoboVM gradle plugin, allowing access to the RoboVM compiler and exposing the necessary gradle build tasks in the open source fork maintained by MobiVM.

Run Instructions:

-Navigate to the Quorum sample project, located at /Quorum_iOS_Transpiliation/Application_Variants/Physics3DApplicationSoundFromFile

-Navigate to the directory containing the generated iOS project, /Quorum_iOS_Transpiliation/Application_Variants/Physics3DApplicationSoundFromFile/Run/Mac/

-Run the gradle command to launch this project on a connected device:

    For a simulator run:
        ./gradlew ios:launchIPhoneSimulator --info --stacktrace
    For a connected physical device run the following command:
        ./gradlew ios:launchIOSDevice --info --stacktrace  
        
    Note: This requires a separate xcode project for code signing, described further in the wiki

In this sample project, the native C/C++/Objective-C code is already generated in the form of a static archive liballnatives.a. This archive contains code used by Quorum applications to interface natively with iOS devices, comprising of the libGameEngineCPlugins.a, libfreetype.a, and libObjectAL.a static archive files previously used.

If using different iOS versions or a different simulator this file may need to be recompiled with cmake and xcode, further instructions are available in the native generation project readme, and in the wiki

The gradle wrapper should automatically download the specified gradle version, and once configured, RoboVM will begin to compile java classes from MobiVM, the Java Standard Library, and from our Quorum source code (jdk 1.8 java bytecode).

After this process is finished, the native code described above is linked into the Quorum Application .app executable using clang, and all resources specified in the generated robovm.xml file are copied as well.

After this has finished a simulator should launch if specified, and then the app is installed and launched on a connected device (simulator or physical).

Modified Skybox Physics3D Sample Template Graphics2D Sample Template Live iPhone Capture

In depth information and a breakdown of project assembly is located in the wiki