1+ # .github/actions/setup-android-ndk/action.yml
2+ name : ' Setup Android NDK'
3+ description : ' Installs and configures a specific version of the Android NDK'
4+ inputs :
5+ ndk-version :
6+ description : ' The version of the Android NDK to install (e.g., 27.2.12479018)'
7+ required : true
8+ default : ' 28.0.13004108'
9+ android-sdk-root :
10+ description : ' The root directory of the Android SDK'
11+ required : true
12+ default : ' /usr/local/lib/android/sdk'
13+
14+ runs :
15+ using : " composite" # Use a composite action for multiple shell commands
16+ steps :
17+ - name : Install coreutils and ninja
18+ shell : bash
19+ run : sudo apt-get update -y && sudo apt-get install -y coreutils ninja-build
20+
21+ - name : Install Android NDK
22+ shell : bash
23+ run : |
24+ set -e
25+ "${{ inputs.android-sdk-root }}/cmdline-tools/latest/bin/sdkmanager" --install "ndk;${{ inputs.ndk-version }}"
26+
27+ NDK_PATH="${{ inputs.android-sdk-root }}/ndk/${{ inputs.ndk-version }}"
28+ if [[ ! -d "${NDK_PATH}" ]]; then
29+ echo "NDK directory is not in expected location: ${NDK_PATH}"
30+ exit 1
31+ fi
32+
33+ # Use standard environment variable setting in bash and add to GITHUB_ENV
34+ echo "ANDROID_NDK_HOME=${NDK_PATH}" >> $GITHUB_ENV
35+ echo "ANDROID_NDK_ROOT=${NDK_PATH}" >> $GITHUB_ENV
36+ echo "ANDROID_NDK_HOME: ${NDK_PATH}"
37+ echo "ANDROID_NDK_ROOT: ${NDK_PATH}"
38+
39+ - name : Check if emulator are installed and add to PATH
40+ shell : bash
41+ run : |
42+ if [[ ":$PATH:" == *":${ANDROID_SDK_ROOT}/emulator:"* ]]; then
43+ echo "${ANDROID_SDK_ROOT}/emulator is in PATH"
44+ else
45+ ${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager --install "emulator"
46+ echo "${ANDROID_SDK_ROOT}/emulator" >> $GITHUB_PATH
47+ fi
48+
49+ - name : Check if platform tools are installed and add to PATH
50+ shell : bash
51+ run : |
52+ if [[ ":$PATH:" == *":${ANDROID_SDK_ROOT}/platform-tools:"* ]]; then
53+ echo "${ANDROID_SDK_ROOT}/platform-tools is in PATH"
54+ else
55+ ${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager --install "platform-tools"
56+ echo "${ANDROID_SDK_ROOT}/platform-tools" >> $GITHUB_PATH
57+ fi
58+ ls -R "${ANDROID_SDK_ROOT}/platform-tools"
59+
60+ - name : Create Android Emulator
61+ shell : bash
62+ env :
63+ ANDROID_AVD_HOME : ${{ runner.temp }}/android-avd
64+ run : |
65+ python3 tools/python/run_android_emulator.py \
66+ --android-sdk-root "${ANDROID_SDK_ROOT}" \
67+ --create-avd --system-image "system-images;android-31;default;x86_64"
68+
69+ - name : List Android AVDs
70+ shell : bash
71+ env :
72+ ANDROID_AVD_HOME : ${{ runner.temp }}/android-avd
73+ run : |
74+ "${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/avdmanager" list avd
75+
76+ - name : Check emulator.pid does not exist
77+ shell : bash
78+ run : |
79+ if test -f ./emulator.pid; then
80+ echo "Emulator PID file was not expected to exist but does and has pid: `cat ./emulator.pid`"
81+ exit 1
82+ fi
83+
84+ - name : Start Android Emulator
85+ shell : bash
86+ env :
87+ ANDROID_AVD_HOME : ${{ runner.temp }}/android-avd
88+ run : |
89+ set -e -x
90+ python3 tools/python/run_android_emulator.py \
91+ --android-sdk-root "${ANDROID_SDK_ROOT}" \
92+ --start --emulator-extra-args="-partition-size 2047" \
93+ --emulator-pid-file ./emulator.pid
94+ echo "Emulator PID: `cat ./emulator.pid`"
95+
96+ - name : View Android ENVs
97+ shell : bash
98+ run : env | grep ANDROID
0 commit comments