Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion server/build-docker.sh
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ for request in $REQUESTED; do
INSTALL="wine nssdk-1832"
;;
android)
INSTALL="android android-ndk25"
INSTALL="android android-ndk25 android-ndk25_sdk36"
;;
android-ndk-*)
INSTALL="android $request"
Expand Down
4 changes: 4 additions & 0 deletions server/configs/application-local-dev-app.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ extender:
url: http://android-ndk25:9000
instanceId: android-ndk25
alwaysOn: true
android-ndk25_sdk36:
url: http://android-ndk25_sdk36:9000
instanceId: android-ndk25_sdk36
alwaysOn: true
emsdk-3165:
url: http://emsdk-3165:9000
instanceId: emsdk-3165
Expand Down
2 changes: 1 addition & 1 deletion server/docker/Dockerfile.android.ndk25-env
Original file line number Diff line number Diff line change
Expand Up @@ -113,4 +113,4 @@ RUN \
RUN \
echo '#!/usr/bin/env bash' > /usr/bin/ar && \
find /opt/platformsdk/android -iname "llvm-ar" | tail -1 | xargs xargs printf "%s \$*\n" $1 >> /usr/bin/ar && \
chmod +x /usr/bin/ar
chmod +x /usr/bin/ar
93 changes: 93 additions & 0 deletions server/docker/Dockerfile.android.ndk25_sdk36-env
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
FROM europe-west1-docker.pkg.dev/extender-426409/extender-public-registry/extender-android-env:1.6.0

#
# Android SDK/NDK
# https://developer.android.com/studio/command-line/variables
#
ENV ANDROID_ROOT=${PLATFORMSDK_DIR}/android
# ANDROID_HOME has been replaced with ANDROID_SDK_ROOT
ENV ANDROID_HOME=${ANDROID_ROOT}/android-sdk-linux
ENV ANDROID_SDK_ROOT=${ANDROID_HOME}
# ANDROID_SDK_HOME is the location of the .android folder
ENV ANDROID_SDK_HOME=${ANDROID_ROOT}/.android

ENV ANDROID_BUILD_TOOLS_VERSION=36.1.0
ENV ANDROID_SDK_VERSION=36
ENV ANDROID_SDK_FILENAME=android-sdk-linux-android-${ANDROID_SDK_VERSION}-${ANDROID_BUILD_TOOLS_VERSION}.tar.gz

ENV ANDROID_SDK_BUILD_TOOLS_PATH=${ANDROID_HOME}/build-tools/${ANDROID_BUILD_TOOLS_VERSION}
ENV ANDROID_LIBRARYJAR=${ANDROID_HOME}/platforms/android-${ANDROID_SDK_VERSION}/android.jar

# We specify it in build_input.yml by setting it the first in PATH for new SDK
# But at least one SDK should be specified by default in Dockerfile
ENV PATH=${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools:${ANDROID_SDK_BUILD_TOOLS_PATH}
# ANDROID_SDK_VERSION used in Java code, default should be specified in Dockerfile as well:
ENV ANDROID_SDK_VERSION=${ANDROID_SDK_VERSION}

ENV ANDROID_NDK_VERSION=25b
ENV ANDROID_NDK_API_VERSION=19
ENV ANDROID_64_NDK_API_VERSION=21

# These paths are the same for both the 32 and 64 bit toolchains
ENV ANDROID_NDK_PATH=${ANDROID_ROOT}/android-ndk-r${ANDROID_NDK_VERSION}
ENV ANDROID_NDK_BIN_PATH=${ANDROID_NDK_PATH}/toolchains/llvm/prebuilt/linux-x86_64/bin
ENV ANDROID_NDK_SYSROOT=${ANDROID_NDK_PATH}/toolchains/llvm/prebuilt/linux-x86_64/sysroot
ENV ANDROID_NDK_FILENAME=android-ndk-r${ANDROID_NDK_VERSION}-linux.tar.gz

# We specify it in build_input.yml by setting it the first in PATH
ENV PATH=${PATH}:${ANDROID_NDK_BIN_PATH}

# android proguard was version 4.7, this is at least 5.2.1 which seems to work with OpenJDK 11
RUN \
apt-get update && \
apt-get install -y --no-install-recommends proguard && \
ls -la /usr/share/java/proguard.jar

ENV ANDROID_PROGUARD=/usr/share/java/proguard.jar

RUN --mount=type=secret,id=DM_PACKAGES_URL,required=true \
echo "Android SDK" && \
mkdir -p ${ANDROID_HOME} && \
wget -q -O - $(cat /run/secrets/DM_PACKAGES_URL)/${ANDROID_NDK_FILENAME} | tar xz -C ${ANDROID_ROOT} && \
wget -q -O - $(cat /run/secrets/DM_PACKAGES_URL)/${ANDROID_SDK_FILENAME} | tar xz -C ${ANDROID_HOME} --strip-components=1 && \
rm -rf ${ANDROID_HOME}/extras && \
rm -rf ${ANDROID_NDK_PATH}/prebuilt && \
rm -rf ${ANDROID_NDK_PATH}/simpleperf && \
rm -rf ${ANDROID_NDK_PATH}/shader-tools && \
rm -rf ${ANDROID_NDK_PATH}/sources/third_party && \
rm -rf ${ANDROID_NDK_PATH}/sources/cxx-stl && \
rm -rf ${ANDROID_NDK_PATH}/toolchains/llvm/prebuilt/linux-x86_64/i686-linux-android && \
rm -rf ${ANDROID_NDK_PATH}/toolchains/llvm/prebuilt/linux-x86_64/x86_64-linux-android && \
rm -rf ${ANDROID_NDK_PATH}/toolchains/llvm/prebuilt/linux-x86_64/bin/i686-* && \
rm -rf ${ANDROID_NDK_PATH}/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-* && \
rm -rf ${ANDROID_NDK_PATH}/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/x86_64-linux-android && \
rm -rf ${ANDROID_NDK_PATH}/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/i686-linux-android && \
# create the .android folder and give read+write permissions (the Android Gradle plugin will write to the folder)
# It is not enough to give 'user' and 'group'. We unfortunately also need 'others'
mkdir ${ANDROID_SDK_HOME} && \
chmod ugo+rw -R ${ANDROID_SDK_HOME} && \
# fix permissions
chmod +r -R ${ANDROID_ROOT} && \
chmod +w -R ${ANDROID_SDK_ROOT} && \
chmod -R 755 ${ANDROID_ROOT}/android-ndk-r${ANDROID_NDK_VERSION} && \
# check that dx installed properly
ls -la ${ANDROID_SDK_BUILD_TOOLS_PATH}/d8 && \
which ${ANDROID_NDK_BIN_PATH}/armv7a-linux-androideabi${ANDROID_NDK_API_VERSION}-clang++ && \
which ${ANDROID_NDK_BIN_PATH}/aarch64-linux-android${ANDROID_64_NDK_API_VERSION}-clang++ && \
# check that aapt installed correctly
aapt v && \
aapt2 version

# download and install R8 utility separatly. It's done in that way because
# R8/D8 received fixes from time to time which not populated with build tools
# It's ok that R8.jar downloaded but saved to D8.jar. Can't find D8 as separate utility.
# R8 contains all classes of D8.
ENV R8_VERSION=8.13.19
RUN wget -O ${ANDROID_SDK_BUILD_TOOLS_PATH}/lib/d8.jar https://storage.googleapis.com/r8-releases/raw/${R8_VERSION}/r8.jar

# Since dotnet cannot really cross compile, we need to create a "ar" shim for "llvm-ar"
# As long as it's in the path, it will be picked up
RUN \
echo '#!/usr/bin/env bash' > /usr/bin/ar && \
find /opt/platformsdk/android -iname "llvm-ar" | tail -1 | xargs xargs printf "%s \$*\n" $1 >> /usr/bin/ar && \
chmod +x /usr/bin/ar
30 changes: 29 additions & 1 deletion server/docker/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -63,14 +63,29 @@ services:
service: common_builder
command: ["--spring.config.location=classpath:./,file:/etc/defold/extender/", "--spring.profiles.active=local-dev-android${STRUCTURED_LOGGING+,logging}"]
environment:
- INSTANCE_ID=emsdk-2011-local
- INSTANCE_ID=android-ndk25-local
profiles:
- all
- android
networks:
default:
aliases:
- android-ndk25
android_ndk25_sdk36-dev:
image: europe-west1-docker.pkg.dev/extender-426409/extender-public-registry/extender-android-ndk25_sdk36-env:latest
extends:
file: common-services.yml
service: common_builder
command: ["--spring.config.location=classpath:./,file:/etc/defold/extender/", "--spring.profiles.active=local-dev-android${STRUCTURED_LOGGING+,logging}"]
environment:
- INSTANCE_ID=android-ndk25_sdk36-local
profiles:
- all
- android
networks:
default:
aliases:
- android-ndk25_sdk36
emscripten_3165-dev:
image: europe-west1-docker.pkg.dev/extender-426409/extender-public-registry/extender-emsdk-3165-env:latest
extends:
Expand Down Expand Up @@ -202,6 +217,19 @@ services:
default:
aliases:
- android-ndk25
android_ndk25_sdk36-integration-test:
image: europe-west1-docker.pkg.dev/extender-426409/extender-public-registry/extender-android-ndk25_sdk36-env:latest
extends:
file: common-services.yml
service: test_builder
command: ["--spring.config.location=classpath:./,file:/etc/defold/extender/", "--spring.profiles.active=local-dev-android"]
profiles:
- test
- auth-test
networks:
default:
aliases:
- android-ndk25_sdk35
emscripten_3165-integration-test:
image: europe-west1-docker.pkg.dev/extender-426409/extender-public-registry/extender-emsdk-3165-env:latest
extends:
Expand Down
22 changes: 11 additions & 11 deletions server/test-data/sdk/a/defoldsdk/extender/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -267,15 +267,15 @@ platforms:
android:
env:
PROGUARD: "{{env.ANDROID_PROGUARD}}"
LIBRARYJAR: "{{env.ANDROID_LIBRARYJAR_35}}"
NDK_PATH: "{{env.ANDROID_NDK25_PATH}}"
SYSROOT: "{{env.ANDROID_NDK25_SYSROOT}}"
LIBRARYJAR: "{{env.ANDROID_LIBRARYJAR}}"
NDK_PATH: "{{env.ANDROID_NDK_PATH}}"
SYSROOT: "{{env.ANDROID_NDK_SYSROOT}}"
MANIFEST_MERGE_TOOL: "{{env.MANIFEST_MERGE_TOOL}}"
PATH: "{{env.PATH}}"
NDK_LD: "{{env.ANDROID_NDK25_BIN_PATH}}/ld.lld"
NDK_AR: "{{env.ANDROID_NDK25_BIN_PATH}}/llvm-ar"
ANDROID_SDK_VERSION: "{{env.ANDROID_SDK_VERSION_35}}"
ANDROID_BUILD_TOOLS_PATH: "{{env.ANDROID_SDK_BUILD_TOOLS_PATH_35}}"
NDK_LD: "{{env.ANDROID_NDK_BIN_PATH}}/ld.lld"
NDK_AR: "{{env.ANDROID_NDK_BIN_PATH}}/llvm-ar"
ANDROID_SDK_VERSION: "{{env.ANDROID_SDK_VERSION}}"
ANDROID_BUILD_TOOLS_PATH: "{{env.ANDROID_SDK_BUILD_TOOLS_PATH}}"
context:
engineJars: ["{{dynamo_home}}/ext/share/java/android-support-multidex.jar", "{{dynamo_home}}/ext/share/java/androidx-multidex.jar", "{{dynamo_home}}/ext/share/java/glfw_android.jar", "{{dynamo_home}}/share/java/gamesys_android.jar", "{{dynamo_home}}/share/java/sound_android.jar"]
engineLibs: ["engine", "engine_service", "mbedtls", "zip", "profile", "remotery", "profilerext", "record_null", "gameobject", "ddf", "resource", "gamesys", "gamesys_model", "gamesys_rig", "script_box2d", "graphics", "graphics_transcoder_basisu", "basis_transcoder", "physics", "BulletDynamics", "BulletCollision", "platform", "LinearMath", "Box2D", "render", "render_font_default", "script", "luajit-5.1", "extension", "hid", "input", "particle", "rig", "dlib", "image", "dmglfw", "gui", "crashext", "sound", "tremolo", "liveupdate", "unwind"]
Expand Down Expand Up @@ -312,8 +312,8 @@ platforms:

armv7-android:
env:
NDK_VERSION: "{{env.ANDROID_NDK25_API_VERSION}}"
NDK_CXX: "{{env.ANDROID_NDK25_BIN_PATH}}/armv7a-linux-androideabi{{env.ANDROID_NDK25_API_VERSION}}-clang++"
NDK_VERSION: "{{env.ANDROID_NDK_API_VERSION}}"
NDK_CXX: "{{env.ANDROID_NDK_BIN_PATH}}/armv7a-linux-androideabi{{env.ANDROID_NDK_API_VERSION}}-clang++"
context:
libPaths: ["{{dynamo_home}}/lib/armv7-android", "{{dynamo_home}}/ext/lib/armv7-android"]
defines: ["DM_PLATFORM_ANDROID", "LUA_BYTECODE_ENABLE_32", "__ARM_ARCH_5__", "__ARM_ARCH_5T__", "__ARM_ARCH_5E__", "__ARM_ARCH_5TE__"]
Expand All @@ -323,8 +323,8 @@ platforms:

arm64-android:
env:
NDK_VERSION: "{{env.ANDROID_64_NDK25_API_VERSION}}"
NDK_CXX: "{{env.ANDROID_NDK25_BIN_PATH}}/aarch64-linux-android{{env.ANDROID_64_NDK25_API_VERSION}}-clang++"
NDK_VERSION: "{{env.ANDROID_64_NDK_API_VERSION}}"
NDK_CXX: "{{env.ANDROID_NDK_BIN_PATH}}/aarch64-linux-android{{env.ANDROID_64_NDK_API_VERSION}}-clang++"
context:
libPaths: ["{{dynamo_home}}/lib/arm64-android", "{{dynamo_home}}/ext/lib/arm64-android"]
defines: ["DM_PLATFORM_ANDROID", "__aarch64__"]
Expand Down