Extender is a build server that builds native extensions of the Defold engine. The build server can either by run using Docker or as a stand-alone server running on macOS.
The stand-alone server is currently used on a machine runing macOS. The server is used to build darwin targets (macOS+iOS) using the Apple tools (XCode+Apple Clang). It is also possible to use this setup when developing on macOS.
Before running Extender you need to have prepackaged toolchains and sdks. Full instruction how it can be done you can find here.
Ensure that you have the following tools packaged:
- iPhoneOS16.2.sdk
- iPhoneOS17.5.sdk
- iPhoneSimulator16.2.sdk
- iPhoneSimulator17.5.sdk
- MacOSX13.1.sdk
- MacOSX14.5.sdk
- XcodeDefault14.2.xctoolchain.darwin
- XcodeDefault15.4.xctoolchain.darwin
NOTE: Complete list of needed packages see link
After obtain packages with sdks and toolchains you make it available via HTTP. The easiest way to do these is to run Python HTTP server on local machine. For example,
cd <path_where_packages_located>
python -m http.server
It starts local web server that available at http://localhost:8000
.
Setup all needed packages via
DM_PACKAGES_URL=<url_where_package_located> ./server/scripts/standalone/setup-standalone-env.sh
If you run local HTTP server from previous step replace <url_where_package_located>
with http://localhost:8000
.
It's download packages, unpack it to correct folder and generate .env file with correct pathes.
There are two ways to obtain Extender's jars:
- Download ready-to-use jars from public repo. See instructions here (step 5).
- Build jars locally. See instruction here.
As result you should have 2 jars in ./server/apps/
folder: extender.jar and manifestmergetool.jar.
To run stand-alone Extender instance use folowing script:
./server/scripts/standalone/service-standalone.sh start
Script takes commad as 1st argument. Command can be one of the following:
- start - start new Extender instance
- stop - stop already running Extender instance
- restart - stop and start Extender instance from the scratch
If you want to use different Spring profile you can pass it via 2nd argument. For example,
./server/scripts/standalone/service-standalone.sh start standalone-dev
Note: all Spring profiles should be located in ./server/configs/
folder.
As a result Extender should start and start listening 9010 port (that port set by default). E.g. Extender can be reached via http://localhost:9010
.
Logs of extender can be found in ./server/app/logs/
folder.
If you want to use other port (not 9010) you can change property server.port
in ./server/configs/application-standalone-dev.yml
.
Note that Prerequisites should be completed and manifestmergetool.jar already downloaded or built.
- Download VSCode: https://code.visualstudio.com/download
- Open folder with Extender sources in VSCode.
- Install following extensions:
- Spring Boot Extension Pack https://marketplace.visualstudio.com/items?itemName=vmware.vscode-boot-dev-pack
- Spring Boot Dashboard https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-spring-boot-dashboard
- Language Support for Java(TM) by Red Hat https://marketplace.visualstudio.com/items?itemName=redhat.java
- Gradle for Java https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-gradle
- Debugger for Java https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-debug. Note: version should be v0.58.2024090204 (pre-release) or greater.
- Select
Spring Boot-ExtenderApplication<server>
in dropdown and start debug session.