I thought I’d post some information I have manged to put together regarding building your Jmonkey project on iOS.
There are a couple of updates required to the standard XCODE project generated by the system in order to build correctly.
After creating a BASIC GAME JME project then Add the iOS library. (jme3-ios)
In Project properties - Enable iOS deployment and make sure the iOS SDK Version is showing a number (Not Default). If there is no number present then you need to install XCODE.
In this example, my SDK version is 11.3 and I’m using XCODE version 9.3
When you press OK after enabling iOS deployment then if it’s not already installed then AVIAN will download and install. This is shown in the bottom status bar of the JME editor. Wait until this is finished before doing anything else.
Compile your project.
If it’s missing stdio.h you need to install the xcode command line tools
run this command in terminal
When it’s compiled successfully then load the XCODE PROJECT into XCODE which is located in the IOS/PROJECT folder. As mentioned above, my SDK version is 11.3 and I’m using XCODE version 9.3
First change the selected TARGET at the top of the screen from iPhone 7 Plus to Generic iOS Device. This is so we can do a full build. If you want to run it in a simulator then you can change it back later.
From the PROJECT menu click BUILD and the build will fail. If you click the ISSUE NAVIGATOR button to show the compilation errors.
We can see here that the Developer account is missing, the project settings are out of date and there is a missing image for Retina 4-inch support.
Click Validate Project Settings to and click PERFORM CHANGES to accept all the suggested amendments.
Click on the Missing Image warning and XCODE will automatically add a placeholder for you.
Add you iOS developer account details by clicking on the target and then the Account Drop down.
Now click PROJECT menu and BUILD again and it should compile now but fails at the linking stage.
We need to amend the linker search paths.
12a) Click on PROJECT NAVIGATOR
12b) Highlight the top row (JME-IOS)
12c) Click jme-ios under PROJECT (Not TARGETS)
12d) If you have done it correct then you will only see INFO & BUILD SETTINGS at the top.
12e) select BUILD SETTINGS
12f) Scroll down to LINKING section
12g) Double click on OTHER LINKER FLAGS
12h) Double click on the line referencing i386 and change it from:
12i) Add the additonal flag for ARM64 sub type issue introduced in iOS SDK 11.
With nothing selected click on the + sign and a new entry will be added at the bottom.
In here add
Your other linker flags should now look like this…
13a) Click on PROJECT NAVIGATOR
13b) Highlight the top row (JME-IOS)
13c) Click jme-ios under TARGETS (Not PROJECT)
13d) If you have done it correct then you will see General/Capabilities/Resource Tags/Info/Build Settings/Build Phases/Build Rules at the top.
13e) select BUILD SETTINGS
13f) Scroll down to BUILD OPTIONS section and change ENABLE BITCODE to NO
From the PROJECT menu click BUILD and the project should build and link fully.
To publish to the APP STORE you select PROJECT MENU and ARCHIVE.
This will generate the App Store Archive and show in the organizer screen.
Click Upload to APP Store and away you go.
I’ve shared the final (fixed) BASIC GAME project which includes the XCODE project on this link for your reference which just needs an iOS developer account adding and should compile and link fine.
There are couple of things I’ve not included such as setting up a bundle identifier , an iOS developer account, an App in iTunes Connect store, signing certificates, provisioning profiles but Apple have many much better documents about this that I could provide. I will help out if I can though.
If I’ve missed anything else or you need any further help let me know.
Check out my cross platform JME app on App Store, Play Store and Windows/Linux/OSX,