Skip to content

Commit 3718524

Browse files
authored
Merge pull request #30 from rpavlik/openxr-android
Openxr android
2 parents 216c4e2 + 0249e72 commit 3718524

3 files changed

Lines changed: 122 additions & 0 deletions

File tree

build-all.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,5 @@ set -e
1313
./build-one.sh openxr 20230614 "$@"
1414
./build-one.sh openxr-sdk 20230614 "$@"
1515
./build-one.sh openxr-pregenerated-sdk 202201 "$@"
16+
./build-one.sh openxr-android 20230713 "$@"
1617
)

install-android-sdk.sh

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
#!/usr/bin/env bash
2+
# Copyright 2022-2023, Collabora, Ltd. and the Monado contributors
3+
#
4+
# SPDX-License-Identifier: BSL-1.0
5+
6+
# Partially inspired by https://about.gitlab.com/blog/2018/10/24/setting-up-gitlab-ci-for-android-projects/
7+
# and based on https://gitlab.freedesktop.org/monado/monado/-/blob/9ad98815bbc291f96c092b7aad2943ad567d65b4/.gitlab-ci/install-android-sdk.sh
8+
9+
set -eo pipefail
10+
# These normally come from the environment but we have defaults
11+
ANDROID_CLI_TOOLS=${ANDROID_CLI_TOOLS:-9477386}
12+
ANDROID_COMPILE_SDK=${ANDROID_COMPILE_SDK:-32}
13+
ANDROID_BUILD_TOOLS=${ANDROID_BUILD_TOOLS:-32.0.0}
14+
ANDROID_NDK_VERSION=${ANDROID_NDK_VERSION:-25.2.9519653}
15+
ANDROID_CMAKE_VERSION=${ANDROID_CMAKE_VERSION:-3.22.1}
16+
ANDROID_SDK_ROOT=${ANDROID_SDK_ROOT:-/opt/android-sdk}
17+
18+
mkdir -p "$ANDROID_SDK_ROOT"
19+
FN=commandlinetools-linux-${ANDROID_CLI_TOOLS}_latest.zip
20+
wget https://dl.google.com/android/repository/$FN
21+
unzip "$FN" -d "$ANDROID_SDK_ROOT/extract"
22+
mkdir -p "$ANDROID_SDK_ROOT/cmdline-tools"
23+
mv "$ANDROID_SDK_ROOT/extract/cmdline-tools/" "$ANDROID_SDK_ROOT/cmdline-tools/latest/"
24+
mv "$ANDROID_SDK_ROOT/extract/" "$ANDROID_SDK_ROOT/cmdline-tools/"
25+
26+
SDKMANAGER=$ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager
27+
28+
set +o pipefail
29+
yes | $SDKMANAGER --licenses
30+
set -o pipefail
31+
32+
echo "Installing the Android compile SDK platform android-${ANDROID_COMPILE_SDK}"
33+
echo y | $SDKMANAGER "platforms;android-${ANDROID_COMPILE_SDK}" >> /dev/null
34+
35+
echo "Installing the latest Android platform tools"
36+
echo y | $SDKMANAGER "platform-tools" >> /dev/null
37+
38+
echo "Installing the Android NDK ${ANDROID_NDK_VERSION}"
39+
echo y | $SDKMANAGER "ndk;${ANDROID_NDK_VERSION}" >> /dev/null
40+
41+
echo "Installing CMake ${ANDROID_CMAKE_VERSION}"
42+
echo y | $SDKMANAGER "cmake;${ANDROID_CMAKE_VERSION}" >> /dev/null
43+
44+
echo "Installing the Android 'patcher'"
45+
echo y | $SDKMANAGER "patcher;v4" >> /dev/null
46+
47+
echo "Installing the Android build tools ${ANDROID_BUILD_TOOLS}"
48+
echo y | $SDKMANAGER "build-tools;${ANDROID_BUILD_TOOLS}" >> /dev/null
49+
50+
rm -rf "${ANDROID_SDK_ROOT}/.temp" "${ANDROID_SDK_ROOT}/.knownPackages"

openxr-android.Dockerfile

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
# Copyright (c) 2019-2023, The Khronos Group Inc.
2+
#
3+
# SPDX-License-Identifier: Apache-2.0
4+
5+
FROM debian:bookworm
6+
LABEL maintainer="Ryan Pavlik <ryan.pavlik@collabora.com>"
7+
8+
ENV LANG C.UTF-8
9+
10+
11+
RUN env DEBIAN_FRONTEND=noninteractive apt-get update -qq && \
12+
env DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y -qq \
13+
ca-certificates \
14+
cmake \
15+
default-jdk-headless \
16+
git \
17+
git-lfs \
18+
glslang-tools \
19+
gnupg \
20+
gradle \
21+
ninja-build \
22+
p7zip-full \
23+
pkg-config \
24+
python3 \
25+
python3-attr \
26+
python3-jinja2 \
27+
python3-lxml \
28+
python3-networkx \
29+
unzip \
30+
wget \
31+
zip \
32+
&& apt-get clean
33+
34+
# Set up user and group 1000:1000 for most common usage case
35+
RUN addgroup --gid 1000 --quiet openxr
36+
RUN useradd --shell /bin/bash --create-home --no-log-init --uid 1000 --gid 1000 openxr
37+
38+
### Android SDK components
39+
40+
# This must match android.compileSdk in all Android build.gradle files
41+
ENV ANDROID_COMPILE_SDK=29
42+
43+
# This must match android.buildToolsVersion in all Android build.gradle files
44+
ENV ANDROID_BUILD_TOOLS=30.0.3
45+
46+
# look up on https://developer.android.com/studio/index.html#downloads when updating other versions
47+
ENV ANDROID_CLI_TOOLS=9477386
48+
49+
ENV ANDROID_NDK_VERSION=21.4.7075529
50+
51+
ENV ANDROID_SDK_ROOT=/opt/android-sdk
52+
53+
COPY install-android-sdk.sh /install-android-sdk.sh
54+
RUN /install-android-sdk.sh
55+
56+
### Android NDK
57+
58+
ENV ANDROID_NDK_HOME=/opt/android-sdk/ndk/${ANDROID_NDK_VERSION}
59+
60+
# Switch to non-privileged user
61+
USER openxr
62+
WORKDIR /home/openxr
63+
64+
# Cache the gradle wrapper in the image
65+
ENV CACHED_GRADLE_WRAPPER_VERSION=7.5
66+
RUN mkdir -p temp_proj && \
67+
cd temp_proj && \
68+
gradle -Porg.gradle.daemon=false init && \
69+
gradle -Porg.gradle.daemon=false wrapper --gradle-version=${CACHED_GRADLE_WRAPPER_VERSION} && \
70+
cd .. && \
71+
rm -rf temp_proj

0 commit comments

Comments
 (0)