Skip to content

Commit edf48d8

Browse files
authored
Merge pull request #828 from defold/android-36
Update Android SDK to 36.1.0
2 parents 841dcf3 + 733a1e7 commit edf48d8

6 files changed

Lines changed: 139 additions & 14 deletions

File tree

server/build-docker.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ for request in $REQUESTED; do
3737
INSTALL="wine nssdk-1832"
3838
;;
3939
android)
40-
INSTALL="android android-ndk25"
40+
INSTALL="android android-ndk25 android-ndk25_sdk36"
4141
;;
4242
android-ndk-*)
4343
INSTALL="android $request"

server/configs/application-local-dev-app.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ extender:
77
url: http://android-ndk25:9000
88
instanceId: android-ndk25
99
alwaysOn: true
10+
android-ndk25_sdk36:
11+
url: http://android-ndk25_sdk36:9000
12+
instanceId: android-ndk25_sdk36
13+
alwaysOn: true
1014
emsdk-3165:
1115
url: http://emsdk-3165:9000
1216
instanceId: emsdk-3165

server/docker/Dockerfile.android.ndk25-env

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,4 +113,4 @@ RUN \
113113
RUN \
114114
echo '#!/usr/bin/env bash' > /usr/bin/ar && \
115115
find /opt/platformsdk/android -iname "llvm-ar" | tail -1 | xargs xargs printf "%s \$*\n" $1 >> /usr/bin/ar && \
116-
chmod +x /usr/bin/ar
116+
chmod +x /usr/bin/ar
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
FROM europe-west1-docker.pkg.dev/extender-426409/extender-public-registry/extender-android-env:1.6.0
2+
3+
#
4+
# Android SDK/NDK
5+
# https://developer.android.com/studio/command-line/variables
6+
#
7+
ENV ANDROID_ROOT=${PLATFORMSDK_DIR}/android
8+
# ANDROID_HOME has been replaced with ANDROID_SDK_ROOT
9+
ENV ANDROID_HOME=${ANDROID_ROOT}/android-sdk-linux
10+
ENV ANDROID_SDK_ROOT=${ANDROID_HOME}
11+
# ANDROID_SDK_HOME is the location of the .android folder
12+
ENV ANDROID_SDK_HOME=${ANDROID_ROOT}/.android
13+
14+
ENV ANDROID_BUILD_TOOLS_VERSION=36.1.0
15+
ENV ANDROID_SDK_VERSION=36
16+
ENV ANDROID_SDK_FILENAME=android-sdk-linux-android-${ANDROID_SDK_VERSION}-${ANDROID_BUILD_TOOLS_VERSION}.tar.gz
17+
18+
ENV ANDROID_SDK_BUILD_TOOLS_PATH=${ANDROID_HOME}/build-tools/${ANDROID_BUILD_TOOLS_VERSION}
19+
ENV ANDROID_LIBRARYJAR=${ANDROID_HOME}/platforms/android-${ANDROID_SDK_VERSION}/android.jar
20+
21+
# We specify it in build_input.yml by setting it the first in PATH for new SDK
22+
# But at least one SDK should be specified by default in Dockerfile
23+
ENV PATH=${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools:${ANDROID_SDK_BUILD_TOOLS_PATH}
24+
# ANDROID_SDK_VERSION used in Java code, default should be specified in Dockerfile as well:
25+
ENV ANDROID_SDK_VERSION=${ANDROID_SDK_VERSION}
26+
27+
ENV ANDROID_NDK_VERSION=25b
28+
ENV ANDROID_NDK_API_VERSION=19
29+
ENV ANDROID_64_NDK_API_VERSION=21
30+
31+
# These paths are the same for both the 32 and 64 bit toolchains
32+
ENV ANDROID_NDK_PATH=${ANDROID_ROOT}/android-ndk-r${ANDROID_NDK_VERSION}
33+
ENV ANDROID_NDK_BIN_PATH=${ANDROID_NDK_PATH}/toolchains/llvm/prebuilt/linux-x86_64/bin
34+
ENV ANDROID_NDK_SYSROOT=${ANDROID_NDK_PATH}/toolchains/llvm/prebuilt/linux-x86_64/sysroot
35+
ENV ANDROID_NDK_FILENAME=android-ndk-r${ANDROID_NDK_VERSION}-linux.tar.gz
36+
37+
# We specify it in build_input.yml by setting it the first in PATH
38+
ENV PATH=${PATH}:${ANDROID_NDK_BIN_PATH}
39+
40+
# android proguard was version 4.7, this is at least 5.2.1 which seems to work with OpenJDK 11
41+
RUN \
42+
apt-get update && \
43+
apt-get install -y --no-install-recommends proguard && \
44+
ls -la /usr/share/java/proguard.jar
45+
46+
ENV ANDROID_PROGUARD=/usr/share/java/proguard.jar
47+
48+
RUN --mount=type=secret,id=DM_PACKAGES_URL,required=true \
49+
echo "Android SDK" && \
50+
mkdir -p ${ANDROID_HOME} && \
51+
wget -q -O - $(cat /run/secrets/DM_PACKAGES_URL)/${ANDROID_NDK_FILENAME} | tar xz -C ${ANDROID_ROOT} && \
52+
wget -q -O - $(cat /run/secrets/DM_PACKAGES_URL)/${ANDROID_SDK_FILENAME} | tar xz -C ${ANDROID_HOME} --strip-components=1 && \
53+
rm -rf ${ANDROID_HOME}/extras && \
54+
rm -rf ${ANDROID_NDK_PATH}/prebuilt && \
55+
rm -rf ${ANDROID_NDK_PATH}/simpleperf && \
56+
rm -rf ${ANDROID_NDK_PATH}/shader-tools && \
57+
rm -rf ${ANDROID_NDK_PATH}/sources/third_party && \
58+
rm -rf ${ANDROID_NDK_PATH}/sources/cxx-stl && \
59+
rm -rf ${ANDROID_NDK_PATH}/toolchains/llvm/prebuilt/linux-x86_64/i686-linux-android && \
60+
rm -rf ${ANDROID_NDK_PATH}/toolchains/llvm/prebuilt/linux-x86_64/x86_64-linux-android && \
61+
rm -rf ${ANDROID_NDK_PATH}/toolchains/llvm/prebuilt/linux-x86_64/bin/i686-* && \
62+
rm -rf ${ANDROID_NDK_PATH}/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-* && \
63+
rm -rf ${ANDROID_NDK_PATH}/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/x86_64-linux-android && \
64+
rm -rf ${ANDROID_NDK_PATH}/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/i686-linux-android && \
65+
# create the .android folder and give read+write permissions (the Android Gradle plugin will write to the folder)
66+
# It is not enough to give 'user' and 'group'. We unfortunately also need 'others'
67+
mkdir ${ANDROID_SDK_HOME} && \
68+
chmod ugo+rw -R ${ANDROID_SDK_HOME} && \
69+
# fix permissions
70+
chmod +r -R ${ANDROID_ROOT} && \
71+
chmod +w -R ${ANDROID_SDK_ROOT} && \
72+
chmod -R 755 ${ANDROID_ROOT}/android-ndk-r${ANDROID_NDK_VERSION} && \
73+
# check that dx installed properly
74+
ls -la ${ANDROID_SDK_BUILD_TOOLS_PATH}/d8 && \
75+
which ${ANDROID_NDK_BIN_PATH}/armv7a-linux-androideabi${ANDROID_NDK_API_VERSION}-clang++ && \
76+
which ${ANDROID_NDK_BIN_PATH}/aarch64-linux-android${ANDROID_64_NDK_API_VERSION}-clang++ && \
77+
# check that aapt installed correctly
78+
aapt v && \
79+
aapt2 version
80+
81+
# download and install R8 utility separatly. It's done in that way because
82+
# R8/D8 received fixes from time to time which not populated with build tools
83+
# It's ok that R8.jar downloaded but saved to D8.jar. Can't find D8 as separate utility.
84+
# R8 contains all classes of D8.
85+
ENV R8_VERSION=8.13.19
86+
RUN wget -O ${ANDROID_SDK_BUILD_TOOLS_PATH}/lib/d8.jar https://storage.googleapis.com/r8-releases/raw/${R8_VERSION}/r8.jar
87+
88+
# Since dotnet cannot really cross compile, we need to create a "ar" shim for "llvm-ar"
89+
# As long as it's in the path, it will be picked up
90+
RUN \
91+
echo '#!/usr/bin/env bash' > /usr/bin/ar && \
92+
find /opt/platformsdk/android -iname "llvm-ar" | tail -1 | xargs xargs printf "%s \$*\n" $1 >> /usr/bin/ar && \
93+
chmod +x /usr/bin/ar

server/docker/docker-compose.yml

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,14 +63,29 @@ services:
6363
service: common_builder
6464
command: ["--spring.config.location=classpath:./,file:/etc/defold/extender/", "--spring.profiles.active=local-dev-android${STRUCTURED_LOGGING+,logging}"]
6565
environment:
66-
- INSTANCE_ID=emsdk-2011-local
66+
- INSTANCE_ID=android-ndk25-local
6767
profiles:
6868
- all
6969
- android
7070
networks:
7171
default:
7272
aliases:
7373
- android-ndk25
74+
android_ndk25_sdk36-dev:
75+
image: europe-west1-docker.pkg.dev/extender-426409/extender-public-registry/extender-android-ndk25_sdk36-env:latest
76+
extends:
77+
file: common-services.yml
78+
service: common_builder
79+
command: ["--spring.config.location=classpath:./,file:/etc/defold/extender/", "--spring.profiles.active=local-dev-android${STRUCTURED_LOGGING+,logging}"]
80+
environment:
81+
- INSTANCE_ID=android-ndk25_sdk36-local
82+
profiles:
83+
- all
84+
- android
85+
networks:
86+
default:
87+
aliases:
88+
- android-ndk25_sdk36
7489
emscripten_3165-dev:
7590
image: europe-west1-docker.pkg.dev/extender-426409/extender-public-registry/extender-emsdk-3165-env:latest
7691
extends:
@@ -202,6 +217,19 @@ services:
202217
default:
203218
aliases:
204219
- android-ndk25
220+
android_ndk25_sdk36-integration-test:
221+
image: europe-west1-docker.pkg.dev/extender-426409/extender-public-registry/extender-android-ndk25_sdk36-env:latest
222+
extends:
223+
file: common-services.yml
224+
service: test_builder
225+
command: ["--spring.config.location=classpath:./,file:/etc/defold/extender/", "--spring.profiles.active=local-dev-android"]
226+
profiles:
227+
- test
228+
- auth-test
229+
networks:
230+
default:
231+
aliases:
232+
- android-ndk25_sdk35
205233
emscripten_3165-integration-test:
206234
image: europe-west1-docker.pkg.dev/extender-426409/extender-public-registry/extender-emsdk-3165-env:latest
207235
extends:

server/test-data/sdk/a/defoldsdk/extender/build.yml

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -267,15 +267,15 @@ platforms:
267267
android:
268268
env:
269269
PROGUARD: "{{env.ANDROID_PROGUARD}}"
270-
LIBRARYJAR: "{{env.ANDROID_LIBRARYJAR_35}}"
271-
NDK_PATH: "{{env.ANDROID_NDK25_PATH}}"
272-
SYSROOT: "{{env.ANDROID_NDK25_SYSROOT}}"
270+
LIBRARYJAR: "{{env.ANDROID_LIBRARYJAR}}"
271+
NDK_PATH: "{{env.ANDROID_NDK_PATH}}"
272+
SYSROOT: "{{env.ANDROID_NDK_SYSROOT}}"
273273
MANIFEST_MERGE_TOOL: "{{env.MANIFEST_MERGE_TOOL}}"
274274
PATH: "{{env.PATH}}"
275-
NDK_LD: "{{env.ANDROID_NDK25_BIN_PATH}}/ld.lld"
276-
NDK_AR: "{{env.ANDROID_NDK25_BIN_PATH}}/llvm-ar"
277-
ANDROID_SDK_VERSION: "{{env.ANDROID_SDK_VERSION_35}}"
278-
ANDROID_BUILD_TOOLS_PATH: "{{env.ANDROID_SDK_BUILD_TOOLS_PATH_35}}"
275+
NDK_LD: "{{env.ANDROID_NDK_BIN_PATH}}/ld.lld"
276+
NDK_AR: "{{env.ANDROID_NDK_BIN_PATH}}/llvm-ar"
277+
ANDROID_SDK_VERSION: "{{env.ANDROID_SDK_VERSION}}"
278+
ANDROID_BUILD_TOOLS_PATH: "{{env.ANDROID_SDK_BUILD_TOOLS_PATH}}"
279279
context:
280280
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"]
281281
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"]
@@ -312,8 +312,8 @@ platforms:
312312

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

324324
arm64-android:
325325
env:
326-
NDK_VERSION: "{{env.ANDROID_64_NDK25_API_VERSION}}"
327-
NDK_CXX: "{{env.ANDROID_NDK25_BIN_PATH}}/aarch64-linux-android{{env.ANDROID_64_NDK25_API_VERSION}}-clang++"
326+
NDK_VERSION: "{{env.ANDROID_64_NDK_API_VERSION}}"
327+
NDK_CXX: "{{env.ANDROID_NDK_BIN_PATH}}/aarch64-linux-android{{env.ANDROID_64_NDK_API_VERSION}}-clang++"
328328
context:
329329
libPaths: ["{{dynamo_home}}/lib/arm64-android", "{{dynamo_home}}/ext/lib/arm64-android"]
330330
defines: ["DM_PLATFORM_ANDROID", "__aarch64__"]

0 commit comments

Comments
 (0)