From 8a64a22d1ca906d15e3f8e648fb2ecbaa1283cdf Mon Sep 17 00:00:00 2001 From: Frederick Mayle Date: Mon, 18 Apr 2022 23:45:25 +0000 Subject: [PATCH] Use a newer android sdk for arm and x86 (v24 -> v28) --- ci/android-install-sdk.sh | 7 +++--- ci/android-sysimage.sh | 26 ++++++++++++++++------- ci/docker/x86_64-linux-android/Dockerfile | 2 +- 3 files changed, 23 insertions(+), 12 deletions(-) diff --git a/ci/android-install-sdk.sh b/ci/android-install-sdk.sh index 6f6aeb28e82b0..4bb7904b512e8 100644 --- a/ci/android-install-sdk.sh +++ b/ci/android-install-sdk.sh @@ -16,11 +16,12 @@ unzip -q -d sdk/cmdline-tools commandlinetools-linux-${SDK}_latest.zip case "$1" in arm | armv7) - api=24 - image="system-images;android-${api};default;armeabi-v7a" + api=28 + # Using the arm64 image because there is no armeabi-v7a image for api>24. + image="system-images;android-${api};google_apis;arm64-v8a" ;; aarch64) - api=24 + api=28 image="system-images;android-${api};google_apis;arm64-v8a" ;; i686) diff --git a/ci/android-sysimage.sh b/ci/android-sysimage.sh index b49712035cf33..9a6bd57d23172 100644 --- a/ci/android-sysimage.sh +++ b/ci/android-sysimage.sh @@ -19,20 +19,30 @@ main() { local system system="$(find . -name system.img)" + + # The ext4 partition of this particular version of "system.img" is offset. + # `e2cp` can't handle the offset, so we use `dd` to trim the start of the + # file. + # + # The offset number might change for future system.img files, look at the + # fdisk output to adjust it when upgrading the system.img. + fdisk -l "$system" # Sector size 512, partition start 2048. + fallocate -c -o 0 -l 1048576 "$system" + mkdir -p ${dest}/{bin,lib,lib64} # Extract android linker and libraries to /system # This allows android executables to be run directly (or with qemu) if [ "${arch}" = "x86_64" ] || [ "${arch}" = "arm64" ]; then - e2cp -p "${system}:/bin/linker64" "${dest}/bin/" - e2cp -p "${system}:/lib64/libdl.so" "${dest}/lib64/" - e2cp -p "${system}:/lib64/libc.so" "${dest}/lib64/" - e2cp -p "${system}:/lib64/libm.so" "${dest}/lib64/" + e2cp -p "${system}:/system/bin/linker64" "${dest}/bin/" + e2cp -p "${system}:/system/lib64/libdl.so" "${dest}/lib64/" + e2cp -p "${system}:/system/lib64/libc.so" "${dest}/lib64/" + e2cp -p "${system}:/system/lib64/libm.so" "${dest}/lib64/" else - e2cp -p "${system}:/bin/linker" "${dest}/bin/" - e2cp -p "${system}:/lib/libdl.so" "${dest}/lib/" - e2cp -p "${system}:/lib/libc.so" "${dest}/lib/" - e2cp -p "${system}:/lib/libm.so" "${dest}/lib/" + e2cp -p "${system}:/system/bin/linker" "${dest}/bin/" + e2cp -p "${system}:/system/lib/libdl.so" "${dest}/lib/" + e2cp -p "${system}:/system/lib/libc.so" "${dest}/lib/" + e2cp -p "${system}:/system/lib/libm.so" "${dest}/lib/" fi # clean up diff --git a/ci/docker/x86_64-linux-android/Dockerfile b/ci/docker/x86_64-linux-android/Dockerfile index a814edda6cdea..9a49e140d8f1d 100644 --- a/ci/docker/x86_64-linux-android/Dockerfile +++ b/ci/docker/x86_64-linux-android/Dockerfile @@ -18,7 +18,7 @@ RUN sh /android/android-install-ndk.sh $ANDROID_ARCH # We do not run x86_64-linux-android tests on an android emulator. # See ci/android-sysimage.sh for information about how tests are run. COPY android-sysimage.sh /android/ -RUN bash /android/android-sysimage.sh x86_64 x86_64-24_r07.zip +RUN bash /android/android-sysimage.sh x86_64 x86_64-28_r04.zip ENV PATH=$PATH:/rust/bin:/android/ndk-$ANDROID_ARCH/bin \ CARGO_TARGET_X86_64_LINUX_ANDROID_LINKER=x86_64-linux-android-gcc \