102 lines
3.7 KiB
Bash
Executable File
102 lines
3.7 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# This script sync and builds the AOSP source for a specified platform version.
|
|
#
|
|
# Usage:
|
|
# sync-android.sh <src root> <android version>
|
|
#
|
|
# This will create a <src root>/aosp-<android version>, sync the source for that version, and
|
|
# attempt to build.
|
|
#
|
|
# You may need to customize the JAVA_6 or JAVA_7 install locations environment variables, or ensure
|
|
# the right version of java is in your PATH when versions earlier than nougat. See
|
|
# https://source.android.com/source/requirements#jdk for more details.
|
|
#
|
|
# See README.md for additional instructions
|
|
|
|
JAVA_6=/usr/lib/jvm/jdk1.6.0_45/bin
|
|
JAVA_7=/usr/lib/jvm/java-7-openjdk-amd64/bin
|
|
|
|
function usage() {
|
|
echo "Usage: ${0} <android root path> <android-version> <parallel jobs>"
|
|
}
|
|
|
|
if [[ $# -ne 3 ]]; then
|
|
usage
|
|
exit 1
|
|
fi
|
|
|
|
set -ex
|
|
|
|
ANDROID_VERSION=$2
|
|
SRC_ROOT=$1/aosp-$ANDROID_VERSION
|
|
J=$3
|
|
|
|
sync_source() {
|
|
repo init -q --depth=1 -uhttps://android.googlesource.com/platform/manifest -b android-$ANDROID_VERSION
|
|
repo sync -cq -j$J
|
|
}
|
|
|
|
build_source() {
|
|
source build/envsetup.sh
|
|
|
|
if [[ "${ANDROID_VERSION}" == "4.1.2_r1" ]]; then
|
|
lunch generic_x86-eng
|
|
export PATH=$JAVA_6:$PATH
|
|
make -j$J
|
|
elif [[ "${ANDROID_VERSION}" == "4.2.2_r1.2" ]]; then
|
|
lunch generic_x86-eng
|
|
export PATH=$JAVA_6:$PATH
|
|
make -j$J
|
|
elif [[ "${ANDROID_VERSION}" == "4.3_r2" ]]; then
|
|
lunch aosp_x86-eng
|
|
export PATH=$JAVA_6:$PATH
|
|
make -j$J
|
|
elif [[ "${ANDROID_VERSION}" == "4.4_r1" ]]; then
|
|
lunch aosp_x86-eng
|
|
export PATH=$JAVA_6:$PATH
|
|
make -j$J
|
|
elif [[ "${ANDROID_VERSION}" == "5.0.2_r3" ]]; then
|
|
lunch aosp_x86-eng
|
|
tapas core-libart services services.accessibility telephony-common framework ext framework-res
|
|
export PATH=$JAVA_7:$PATH
|
|
ANDROID_COMPILE_WITH_JACK=false make -j$J
|
|
elif [[ "${ANDROID_VERSION}" == "5.1.1_r9" ]]; then
|
|
tapas core-libart services services.accessibility telephony-common framework ext framework-res
|
|
export PATH=$JAVA_7:$PATH
|
|
ANDROID_COMPILE_WITH_JACK=false make -j$J
|
|
elif [[ "${ANDROID_VERSION}" == "6.0.1_r3" ]]; then
|
|
tapas core-libart services services.accessibility telephony-common framework ext icu4j-icudata-jarjar framework-res
|
|
export PATH=$JAVA_7:$PATH
|
|
ANDROID_COMPILE_WITH_JACK=false make -j$J
|
|
elif [[ "${ANDROID_VERSION}" == "7.0.0_r1" ]]; then
|
|
cd ../..
|
|
lunch aosp_x86-eng
|
|
make -j$J
|
|
make -j$J out/target/common/obj/JAVA_LIBRARIES/services_intermediates/classes.jar out/host/linux-x86/framework/icu4j-icudata-host-jarjar.jar out/host/linux-x86/framework/icu4j-icutzdata-host-jarjar.jar
|
|
elif [[ "${ANDROID_VERSION}" == "7.1.0_r7" ]]; then
|
|
cd frameworks/base && git fetch https://android.googlesource.com/platform/frameworks/base refs/changes/75/310575/1 && git cherry-pick FETCH_HEAD && git commit -a -m "patch shortcut service"
|
|
cd ../..
|
|
lunch aosp_x86-eng
|
|
make -j$J
|
|
make -j$J out/target/common/obj/JAVA_LIBRARIES/services_intermediates/classes.jar out/host/linux-x86/framework/icu4j-icudata-host-jarjar.jar out/host/linux-x86/framework/icu4j-icutzdata-host-jarjar.jar
|
|
elif [[ "${ANDROID_VERSION}" == "8.0.0_r4" ]]; then
|
|
cd external/robolectric && git fetch https://android.googlesource.com/platform/external/robolectric refs/changes/24/516524/1 && git cherry-pick FETCH_HEAD
|
|
cd ../..
|
|
lunch aosp_x86-eng
|
|
make -j$J robolectric_android-all
|
|
else
|
|
echo "Robolectric: No match for version: ${ANDROID_VERSION}"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
mkdir -p $SRC_ROOT
|
|
cd $SRC_ROOT
|
|
|
|
sync_source
|
|
build_source
|
|
|
|
echo "Done building $SRC_ROOT!!"
|
|
|