Use specific Android NDK version in CI builds. (#12350)

Current builds use a NDK version that happens to be on the build machine. The build machine environment may change in ways that are outside of our control.
This change installs a specific version of NDK (the current LTS version 25.0.8775105) and uses it.
This commit is contained in:
Edward Chen 2022-07-28 11:01:04 -07:00 committed by GitHub
parent 73919a6756
commit 6e892a95b4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 51 additions and 10 deletions

View file

@ -23,6 +23,8 @@ jobs:
- script: sudo apt-get update -y && sudo apt-get install -y coreutils ninja-build
displayName: Install coreutils and ninja
- template: "templates/use-android-ndk.yml"
- script: /bin/bash tools/ci_build/github/android/setup_gradle_wrapper.sh $(pwd)
displayName: Setup gradle wrapper to use gradle 6.8.3
@ -35,12 +37,8 @@ jobs:
displayName: Build Host Protoc
- script: |
export ANDROID_SDK_ROOT=/usr/local/lib/android/sdk
export ANDROID_HOME=/usr/local/lib/android/sdk
export ANDROID_NDK_HOME=/usr/local/lib/android/sdk/ndk-bundle
export ANDROID_NDK_ROOT=/usr/local/lib/android/sdk/ndk-bundle
env | grep ANDROID
displayName: Set Android ENVs
displayName: View Android ENVs
# Start switching to jdk 11 after the Android Emulator is started
# since Android SDK manager requires java 8
@ -116,6 +114,13 @@ jobs:
artifact: 'CPUBuildOutput'
path: $(Build.SourcesDirectory)
- task: UsePythonVersion@0
displayName: Use Python $(pythonVersion)
inputs:
versionSpec: $(pythonVersion)
- template: "templates/use-android-ndk.yml"
- script: /bin/bash tools/ci_build/github/android/setup_gradle_wrapper.sh $(pwd)
displayName: Setup gradle wrapper to use gradle 6.8.3
@ -173,6 +178,8 @@ jobs:
- script: sudo apt-get update -y && sudo apt-get install -y coreutils ninja-build
displayName: Install coreutils and ninja
- template: "templates/use-android-ndk.yml"
- script: /bin/bash tools/ci_build/github/android/setup_gradle_wrapper.sh $(pwd)
displayName: Setup gradle wrapper to use gradle 6.8.3
@ -185,12 +192,8 @@ jobs:
displayName: Build Host Protoc
- script: |
export ANDROID_SDK_ROOT=/usr/local/lib/android/sdk
export ANDROID_HOME=/usr/local/lib/android/sdk
export ANDROID_NDK_HOME=/usr/local/lib/android/sdk/ndk-bundle
export ANDROID_NDK_ROOT=/usr/local/lib/android/sdk/ndk-bundle
env | grep ANDROID
displayName: set Android ENVs
displayName: View Android ENVs
# Start switching to jdk 11 after the Android Emulator is started since Android SDK manager requires java 8
- task: JavaToolInstaller@0
@ -272,6 +275,8 @@ jobs:
inputs:
versionSpec: $(pythonVersion)
- template: "templates/use-android-ndk.yml"
- script: /bin/bash tools/ci_build/github/android/setup_gradle_wrapper.sh $(pwd)
displayName: Setup gradle wrapper to use gradle 6.8.3
@ -350,6 +355,8 @@ jobs:
inputs:
versionSpec: $(pythonVersion)
- template: "templates/use-android-ndk.yml"
- script: /bin/bash tools/ci_build/github/android/setup_gradle_wrapper.sh $(pwd)
displayName: Setup gradle wrapper to use gradle 6.8.3

View file

@ -37,6 +37,8 @@ jobs:
artifactName: '${{parameters.artifactName}}'
targetPath: '$(Build.BinariesDirectory)/final-android-aar'
- template: use-android-ndk.yml
- script: /bin/bash tools/ci_build/github/android/setup_gradle_wrapper.sh $(Build.SourcesDirectory)
displayName: Setup gradle wrapper to use gradle 6.8.3

View file

@ -72,6 +72,8 @@ jobs:
DockerBuildArgs: "--build-arg BUILD_UID=$( id -u )"
Repository: onnxruntimecpubuild
- template: use-android-ndk.yml
- task: CmdLine@2
displayName: Build Android AAR Packages
inputs:

View file

@ -0,0 +1,30 @@
# Installs the Android NDK and sets environment variables ANDROID_NDK_HOME and ANDROID_NDK_ROOT to refer to it.
parameters:
- name: AndroidNdkVersion
type: string
default: "25.0.8775105" # LTS version
steps:
- bash: |
set -e
"${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager" --install "ndk;${{ parameters.AndroidNdkVersion }}"
NDK_PATH="${ANDROID_SDK_ROOT}/ndk/${{ parameters.AndroidNdkVersion }}"
if [[ ! -d "${NDK_PATH}" ]]; then
echo "NDK directory is not in expected location: ${NDK_PATH}"
exit 1
fi
set_var() {
local VAR_NAME=${1:?}
local VAR_VALUE=${2:?}
echo "##vso[task.setvariable variable=${VAR_NAME}]${VAR_VALUE}"
echo "${VAR_NAME}: ${VAR_VALUE}"
}
set_var "ANDROID_NDK_HOME" "${NDK_PATH}"
set_var "ANDROID_NDK_ROOT" "${NDK_PATH}"
displayName: Use Android NDK ${{ parameters.AndroidNdkVersion }}