mirror of
https://github.com/status-im/react-native.git
synced 2025-01-27 17:54:48 +00:00
bc8d052c0b
Summary:
Android CI was failing due to that it was trying to extract major version from build tools and use it to compile ReactAndroid. Now, it'll extract compileSdkVersion from ReactAndroid/build.gradle and use it.
Issue was that 68c7999c25
dowgraded compileSdk version to 26 while retaining build tools version as 27.0.3, so CI was trying to use SDK 27.
Pull Request resolved: https://github.com/facebook/react-native/pull/21205
Differential Revision: D9943909
Pulled By: hramos
fbshipit-source-id: ec9bc0c40956a16f8088532340722fd43cadde37
123 lines
5.0 KiB
Bash
Executable File
123 lines
5.0 KiB
Bash
Executable File
#!/bin/bash
|
|
# Copyright (c) Facebook, Inc. and its affiliates.
|
|
#
|
|
# This source code is licensed under the MIT license found in the
|
|
# LICENSE file in the root directory of this source tree.
|
|
#
|
|
# This script validates that Android is set up correctly for the
|
|
# testing environment.
|
|
#
|
|
# In particular, the config in ReactAndroid/build.gradle must match
|
|
# the android sdk that is actually installed. Also, we must have the
|
|
# right version of Java.
|
|
|
|
# Check that Buck is working.
|
|
if [ -z "$(which buck)" ]; then
|
|
echo "You need to install Buck."
|
|
echo "See https://buckbuild.com/setup/getting_started.html for instructions."
|
|
exit 1
|
|
fi
|
|
|
|
if [ -z "$(buck --version)" ]; then
|
|
echo "Your Buck install is broken."
|
|
|
|
if [ -d "/opt/facebook" ]; then
|
|
BUCK_SUGGESTED_COMMIT_FB="b9b76a3a5a086eb440a26d1db9b0731875975099"
|
|
echo "FB laptops ship with a Buck config that is not compatible with open "
|
|
echo "source. FB Buck requires the environment to set a buck version, but "
|
|
echo "the open source version of Buck forbids that."
|
|
echo
|
|
echo "You can try setting:"
|
|
echo
|
|
echo "export BUCKVERSION=${BUCK_SUGGESTED_COMMIT_FB}"
|
|
echo
|
|
echo "in your .bashrc or .bash_profile to fix this."
|
|
echo
|
|
echo "If you don't want to alter BUCKVERSION for other things running on"
|
|
echo "your machine, you can just scope it to a single script, for example"
|
|
echo "by running something like:"
|
|
echo
|
|
echo "BUCKVERSION=${BUCK_SUGGESTED_COMMIT_FB} $0"
|
|
echo
|
|
else
|
|
echo "I don't know what's wrong, but calling 'buck --version' should work."
|
|
fi
|
|
exit 1
|
|
else
|
|
BUCK_EXPECTED_VERSION="buck version d743d2d0229852ce7c029ec257532d8916f6b2b7"
|
|
if [ "$(buck --version)" != "$BUCK_EXPECTED_VERSION" ]; then
|
|
if [ ! -d "/opt/facebook" ]; then
|
|
echo "Warning: The test suite expects ${BUCK_EXPECTED_VERSION} to be installed"
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
# BUILD_TOOLS_VERSION is in a format like "23.0.1"
|
|
BUILD_TOOLS_VERSION=`grep buildToolsVersion $(dirname $0)/../ReactAndroid/build.gradle | sed 's/^[^"]*\"//' | sed 's/"//'`
|
|
|
|
# MAJOR is something like "23"
|
|
MAJOR=`grep compileSdkVersion $(dirname $0)/../ReactAndroid/build.gradle | sed 's/[^[:digit:]]//g'`
|
|
|
|
# Check that we have the right major version of the Android SDK.
|
|
PLATFORM_DIR="$ANDROID_HOME/platforms/android-$MAJOR"
|
|
if [ ! -e "$PLATFORM_DIR" ]; then
|
|
echo "Error: could not find version $ANDROID_VERSION of the Android SDK."
|
|
echo "Specifically, the directory $PLATFORM_DIR does not exist."
|
|
echo "You probably need to specify the right version using the SDK Manager from within Android Studio."
|
|
echo "See https://facebook.github.io/react-native/docs/getting-started.html for details."
|
|
echo "If you are using Android SDK Tools from the command line, you may need to run:"
|
|
echo
|
|
echo " sdkmanager \"platform-tools\" \"platform-tools;android-$MAJOR\""
|
|
echo
|
|
echo "Check out https://developer.android.com/studio/command-line/sdkmanager.html for details."
|
|
exit 1
|
|
fi
|
|
|
|
# Check that we have the right version of the build tools.
|
|
BT_DIR="$ANDROID_HOME/build-tools/$BUILD_TOOLS_VERSION"
|
|
if [ ! -e "$BT_DIR" ]; then
|
|
echo "Error: could not find version $BUILD_TOOLS_VERSION of the Android build tools."
|
|
echo "Specifically, the directory $BT_DIR does not exist."
|
|
echo "You probably need to explicitly install the correct version of the Android SDK Build Tools from within Android Studio."
|
|
echo "See https://facebook.github.io/react-native/docs/getting-started.html for details."
|
|
echo "If you are using Android SDK Tools from the command line, you may need to run:"
|
|
echo
|
|
echo " sdkmanager \"platform-tools\" \"build-tools;android-$BUILD_TOOLS_VERSION\""
|
|
echo
|
|
echo "Check out https://developer.android.com/studio/command-line/sdkmanager.html for details."
|
|
exit 1
|
|
fi
|
|
|
|
if [ -n "$(which csrutil)" ]; then
|
|
# This is a SIP-protected machine (recent OSX).
|
|
# Check that we are not using SIP-protected Java.
|
|
JAVA=`which java`
|
|
if [ "$JAVA" = "/usr/bin/java" ]; then
|
|
echo "Error: we can't use this Java version."
|
|
echo "Currently, Java runs from $JAVA."
|
|
echo "The operating-system-provided Java doesn't work with React Native because of SIP protection."
|
|
echo "Please install the Oracle Java Development Kit 8."
|
|
if [ -d "/opt/facebook" ]; then
|
|
echo "See https://our.intern.facebook.com/intern/dex/installing-java-8/ for instructions on installing Java 8 on FB laptops."
|
|
else
|
|
echo "Check out http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html ."
|
|
echo "Be sure that you set JAVA_HOME and PATH correctly in your .bashrc or equivalent. Example:"
|
|
echo
|
|
echo " export JAVA_HOME=path/to/java"
|
|
echo " export PATH=\$PATH:\$JAVA_HOME/bin"
|
|
echo
|
|
fi
|
|
echo "After installing Java, run 'buck kill' and 'buck clean'."
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
if [ -z "$JAVA_HOME" ]; then
|
|
echo "Error: \$JAVA_HOME is not configured."
|
|
echo "Try adding export JAVA_HOME=\$(/usr/libexec/java_home) to your .bashrc or equivalent."
|
|
echo "You will also want to add \$JAVA_HOME/bin to your path."
|
|
exit 1
|
|
fi
|
|
|
|
|