Bundle IOS / OS X / tvOS on Windows - Info


#1

Just reading down the forums and in the first 50 posts there’s three relating to the fact you need Apple tools to build for Apple devices. (Clearly no fault of Defold).

One of the above posts discusses installing OS X in a virtual machine on Windows but Defold won’t run in a VM due to OpenGL requirements. Britzl mentioned in one of these posts command line builds?!?

For info it is against the OS X license agreement to install OS X on non Apple hardware so I wouldn’t expect anyone at Defold to offer any support re this either!

BUT! This is just to say a little birdy told me it IS possible to bundle for all Defold supported Apple devices using an OS X Virtual Machine in Windows using Xcode and BOB https://www.defold.com/manuals/bob/.

The little birdy mentioned it had only tested using VMWare player and it was possible to install the bundle on an IOS device connected via USB with Xcode.

The little birdy also mentions the BOB documentation page could do with a bit of TLC.


#2

You can definitely bundle for macOS from other platforms, but for iOS the issue is code signing, which cannot be done on non-macs (well actually it can be done, but Defold only supports the official Apple codesign tool).

You are correct in that you can bundle from the CLI. Go to http://d.defold.com/stable/, download bob.jar and the Defold editor (you’ll need the Java installation from it) and do:

cd /path/to/your/project

BOB="/path/to/bob.jar"
DEFOLD_APP="/Applications/Defold.app" #Or wherever you installed it
JRE_PATH="$DEFOLD_APP/Contents/Resources/packages/jre"
JAVA_BIN="$JRE_PATH/bin/java -Djava.ext.dirs=$JRE_PATH/lib/ext"
BOB_CMD="$JAVA_BIN -jar $BOB" 

IOS_IDENTITY="The name of your code signing identity from Keychain"
IOS_PROVISIONING="/path/to/your/profile.mobileprovision"

# Fetch libraries. Credentials don't matter, but they're needed
$BOB_CMD --email foo@bar.com --auth 12345 resolve

# Build and bundle
$BOB_CMD --platform armv7-darwin build --archive
$BOB_CMD --platform armv7-darwin bundle --identity "$IOS_IDENTITY" --mobileprovisioning "$IOS_PROVISIONING"