mirror of
https://github.com/status-im/react-native.git
synced 2025-01-15 20:15:11 +00:00
8c74864d7b
Summary: Packages are now defined in `scripts/.tests.env`, so the checksum is updated accordingly. We also throw away the cache if the checksum fails as not doing so may prevent us from picking up new packages due to the filesystem check in `scripts/android-setup.sh`#getAndroidPackages(), as the presence of the `installed-dependencies` file restored from cache will incorrectly flag all deps as being installed. Closes https://github.com/facebook/react-native/pull/19298 Differential Revision: D8025918 Pulled By: hramos fbshipit-source-id: 189492baac2fea39280884ea20e376a368e23c2e
91 lines
3.0 KiB
Bash
91 lines
3.0 KiB
Bash
# inspired by https://github.com/Originate/guide/blob/master/android/guide/Continuous%20Integration.md
|
|
|
|
source "scripts/.tests.env"
|
|
|
|
function getAndroidPackages {
|
|
export PATH="$ANDROID_HOME/platform-tools:$ANDROID_HOME/tools:$ANDROID_HOME/tools.bin:$PATH"
|
|
|
|
DEPS="$ANDROID_HOME/installed-dependencies"
|
|
|
|
# Package names can be obtained using `sdkmanager --list`
|
|
if [ ! -e $DEPS ] || [ ! $CI ]; then
|
|
echo "Installing Android API level $ANDROID_SDK_TARGET_API_LEVEL, Google APIs, $AVD_ABI system image..."
|
|
sdkmanager "system-images;android-$ANDROID_SDK_TARGET_API_LEVEL;google_apis;$AVD_ABI"
|
|
echo "Installing build SDK for Android API level $ANDROID_SDK_BUILD_API_LEVEL..."
|
|
sdkmanager "platforms;android-$ANDROID_SDK_BUILD_API_LEVEL"
|
|
echo "Installing target SDK for Android API level $ANDROID_SDK_TARGET_API_LEVEL..."
|
|
sdkmanager "platforms;android-$ANDROID_SDK_TARGET_API_LEVEL"
|
|
echo "Installing SDK build tools, revision $ANDROID_SDK_BUILD_TOOLS_REVISION..."
|
|
sdkmanager "build-tools;$ANDROID_SDK_BUILD_TOOLS_REVISION"
|
|
# These moved to "system-images;android-$ANDROID_SDK_BUILD_API_LEVEL;google_apis;x86" starting with API level 25, but there is no ARM version.
|
|
echo "Installing Google APIs $ANDROID_GOOGLE_API_LEVEL..."
|
|
sdkmanager "add-ons;addon-google_apis-google-$ANDROID_GOOGLE_API_LEVEL"
|
|
echo "Installing Android Support Repository"
|
|
sdkmanager "extras;android;m2repository"
|
|
$CI && touch $DEPS
|
|
fi
|
|
}
|
|
|
|
function getAndroidNDK {
|
|
NDK_HOME="/opt/ndk"
|
|
DEPS="$NDK_HOME/installed-dependencies"
|
|
|
|
if [ ! -e $DEPS ]; then
|
|
cd $NDK_HOME
|
|
echo "Downloading NDK..."
|
|
curl -o ndk.zip https://dl.google.com/android/repository/android-ndk-r10e-linux-x86_64.zip
|
|
unzip -o -q ndk.zip
|
|
echo "Installed Android NDK at $NDK_HOME"
|
|
touch $DEPS
|
|
rm ndk.zip
|
|
fi
|
|
}
|
|
|
|
function createAVD {
|
|
AVD_PACKAGES="system-images;android-$ANDROID_SDK_TARGET_API_LEVEL;google_apis;$AVD_ABI"
|
|
echo "Creating AVD with packages $AVD_PACKAGES"
|
|
echo no | avdmanager create avd --name $AVD_NAME --force --package $AVD_PACKAGES --tag google_apis --abi $AVD_ABI
|
|
}
|
|
|
|
function launchAVD {
|
|
export PATH="$ANDROID_HOME/emulator:$PATH"
|
|
|
|
# The AVD name here should match the one created in createAVD
|
|
if [ $CI ]
|
|
then
|
|
emulator -avd $AVD_NAME -no-audio -no-window
|
|
else
|
|
emulator -avd $AVD_NAME
|
|
fi
|
|
}
|
|
|
|
function waitForAVD {
|
|
echo "Waiting for Android Virtual Device to finish booting..."
|
|
local bootanim=""
|
|
export PATH=$(dirname $(dirname $(which android)))/platform-tools:$PATH
|
|
until [[ "$bootanim" =~ "stopped" ]]; do
|
|
sleep 5
|
|
bootanim=$(adb -e shell getprop init.svc.bootanim 2>&1)
|
|
echo "boot animation status=$bootanim"
|
|
done
|
|
echo "Android Virtual Device is ready."
|
|
}
|
|
|
|
function retry3 {
|
|
local n=1
|
|
local max=3
|
|
local delay=1
|
|
while true; do
|
|
"$@" && break || {
|
|
if [[ $n -lt $max ]]; then
|
|
((n++))
|
|
echo "Command failed. Attempt $n/$max:"
|
|
sleep $delay;
|
|
else
|
|
echo "The command has failed after $n attempts." >&2
|
|
return 1
|
|
fi
|
|
}
|
|
done
|
|
}
|