Home | History | Annotate | Download | only in scripts
      1 #!/bin/bash
      2 #
      3 # This script sync and builds the AOSP source for a specified platform version.
      4 #
      5 # Usage:
      6 #   sync-android.sh <src root> <android version>
      7 #
      8 # This will create a <src root>/aosp-<android version>, sync the source for that version, and
      9 # attempt to build.
     10 #
     11 # You may need to customize the JAVA_6 or JAVA_7 install locations environment variables, or ensure
     12 # the right version of java is in your PATH when versions earlier than nougat. See
     13 # https://source.android.com/source/requirements#jdk for more details.
     14 #
     15 # See README.md for additional instructions
     16 
     17 JAVA_6=/usr/lib/jvm/jdk1.6.0_45/bin
     18 JAVA_7=/usr/lib/jvm/java-7-openjdk-amd64/bin
     19 
     20 function usage() {
     21     echo "Usage: ${0} <android root path> <android-version> <parallel jobs>"
     22 }
     23 
     24 if [[ $# -ne 3 ]]; then
     25     usage
     26     exit 1
     27 fi
     28 
     29 set -ex
     30 
     31 ANDROID_VERSION=$2
     32 SRC_ROOT=$1/aosp-$ANDROID_VERSION
     33 J=$3
     34 
     35 sync_source() {
     36     repo init -q --depth=1 -uhttps://android.googlesource.com/platform/manifest -b android-$ANDROID_VERSION
     37     repo sync -cq -j$J
     38 }
     39 
     40 build_source() {
     41     source build/envsetup.sh
     42 
     43     if [[ "${ANDROID_VERSION}" == "4.1.2_r1" ]]; then
     44         lunch generic_x86-eng
     45         export PATH=$JAVA_6:$PATH
     46         make -j$J
     47     elif [[ "${ANDROID_VERSION}" == "4.2.2_r1.2" ]]; then
     48         lunch generic_x86-eng
     49         export PATH=$JAVA_6:$PATH
     50         make -j$J
     51     elif [[ "${ANDROID_VERSION}" == "4.3_r2" ]]; then
     52         lunch aosp_x86-eng
     53         export PATH=$JAVA_6:$PATH
     54         make -j$J
     55     elif [[ "${ANDROID_VERSION}" == "4.4_r1" ]]; then
     56         lunch aosp_x86-eng
     57         export PATH=$JAVA_6:$PATH
     58         make -j$J
     59     elif [[ "${ANDROID_VERSION}" == "5.0.2_r3" ]]; then
     60         lunch aosp_x86-eng
     61         tapas core-libart services services.accessibility telephony-common framework ext framework-res
     62         export PATH=$JAVA_7:$PATH
     63         ANDROID_COMPILE_WITH_JACK=false make -j$J
     64     elif [[ "${ANDROID_VERSION}" == "5.1.1_r9" ]]; then
     65         tapas core-libart services services.accessibility telephony-common framework ext framework-res
     66         export PATH=$JAVA_7:$PATH
     67         ANDROID_COMPILE_WITH_JACK=false make -j$J
     68     elif [[ "${ANDROID_VERSION}" == "6.0.1_r3" ]]; then
     69         tapas core-libart services services.accessibility telephony-common framework ext icu4j-icudata-jarjar framework-res
     70         export PATH=$JAVA_7:$PATH
     71         ANDROID_COMPILE_WITH_JACK=false make -j$J
     72     elif [[ "${ANDROID_VERSION}" == "7.0.0_r1" ]]; then
     73         cd ../..
     74         lunch aosp_x86-eng
     75         make -j$J
     76         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
     77     elif [[ "${ANDROID_VERSION}" == "7.1.0_r7" ]]; then
     78         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"
     79         cd ../..
     80         lunch aosp_x86-eng
     81         make -j$J
     82         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
     83     elif [[ "${ANDROID_VERSION}" == "8.0.0_r4" ]]; then
     84         cd external/robolectric && git fetch https://android.googlesource.com/platform/external/robolectric refs/changes/22/463722/1 && git cherry-pick FETCH_HEAD
     85         cd ../..
     86         lunch aosp_x86-eng
     87         make -j$J robolectric_android-all
     88     else
     89         echo "Robolectric: No match for version: ${ANDROID_VERSION}"
     90         exit 1
     91     fi
     92 }
     93 
     94 mkdir -p $SRC_ROOT
     95 cd $SRC_ROOT
     96 
     97 sync_source
     98 build_source
     99 
    100 echo "Done building $SRC_ROOT!!"
    101 
    102