1*e6ba1607SAndroid Build Coastguard Worker#!/bin/bash 2*e6ba1607SAndroid Build Coastguard Worker# 3*e6ba1607SAndroid Build Coastguard Worker# This script builds the AOSP Android jars, and installs them in your local 4*e6ba1607SAndroid Build Coastguard Worker# Maven repository. See: http://source.android.com/source/building.html for 5*e6ba1607SAndroid Build Coastguard Worker# more information on building AOSP. 6*e6ba1607SAndroid Build Coastguard Worker# 7*e6ba1607SAndroid Build Coastguard Worker# Usage: 8*e6ba1607SAndroid Build Coastguard Worker# build-android.sh <android repo path> <android version> <robolectric version> 9*e6ba1607SAndroid Build Coastguard Worker# 10*e6ba1607SAndroid Build Coastguard Worker# For a tutorial check scripts/README.md 11*e6ba1607SAndroid Build Coastguard Worker 12*e6ba1607SAndroid Build Coastguard Workerset -ex 13*e6ba1607SAndroid Build Coastguard Worker 14*e6ba1607SAndroid Build Coastguard Workerfunction usage() { 15*e6ba1607SAndroid Build Coastguard Worker echo "Usage: ${0} <android repo path> <android-version> <robolectric-sub-version> <output directory>" 16*e6ba1607SAndroid Build Coastguard Worker} 17*e6ba1607SAndroid Build Coastguard Worker 18*e6ba1607SAndroid Build Coastguard Workerif [[ $# -ne 4 ]]; then 19*e6ba1607SAndroid Build Coastguard Worker usage 20*e6ba1607SAndroid Build Coastguard Worker exit 1 21*e6ba1607SAndroid Build Coastguard Workerfi 22*e6ba1607SAndroid Build Coastguard Worker 23*e6ba1607SAndroid Build Coastguard WorkerbuildRoot=$1 24*e6ba1607SAndroid Build Coastguard Worker 25*e6ba1607SAndroid Build Coastguard Workerif [[ ! -d $buildRoot ]]; then 26*e6ba1607SAndroid Build Coastguard Worker echo $buildRoot is not a directory 27*e6ba1607SAndroid Build Coastguard Worker usage 28*e6ba1607SAndroid Build Coastguard Worker exit 1 29*e6ba1607SAndroid Build Coastguard Workerfi 30*e6ba1607SAndroid Build Coastguard Worker 31*e6ba1607SAndroid Build Coastguard Workerif [[ -z "${SIGNING_PASSWORD}" ]]; then 32*e6ba1607SAndroid Build Coastguard Worker echo "Please set the GPG passphrase as SIGNING_PASSWORD" 33*e6ba1607SAndroid Build Coastguard Worker exit 1 34*e6ba1607SAndroid Build Coastguard Workerfi 35*e6ba1607SAndroid Build Coastguard Worker 36*e6ba1607SAndroid Build Coastguard WorkerbuildRoot=$(cd $buildRoot; pwd) 37*e6ba1607SAndroid Build Coastguard Worker 38*e6ba1607SAndroid Build Coastguard WorkerANDROID_VERSION=$2 39*e6ba1607SAndroid Build Coastguard WorkerROBOLECTRIC_SUB_VERSION=$3 40*e6ba1607SAndroid Build Coastguard Worker 41*e6ba1607SAndroid Build Coastguard WorkerSCRIPT_DIR=$(cd $(dirname "$0"); pwd) 42*e6ba1607SAndroid Build Coastguard Worker 43*e6ba1607SAndroid Build Coastguard WorkerANDROID_SOURCES_BASE=${buildRoot} 44*e6ba1607SAndroid Build Coastguard WorkerFRAMEWORKS_BASE_DIR=${ANDROID_SOURCES_BASE}/frameworks/base 45*e6ba1607SAndroid Build Coastguard WorkerFRAMEWORKS_RAW_RES_DIR=${FRAMEWORKS_BASE_DIR}/core/res/ 46*e6ba1607SAndroid Build Coastguard WorkerROBOLECTRIC_VERSION=${ANDROID_VERSION}-robolectric-${ROBOLECTRIC_SUB_VERSION} 47*e6ba1607SAndroid Build Coastguard Worker 48*e6ba1607SAndroid Build Coastguard Worker# Intermediate artifacts 49*e6ba1607SAndroid Build Coastguard WorkerANDROID_RES=android-res-${ANDROID_VERSION}.apk 50*e6ba1607SAndroid Build Coastguard WorkerANDROID_EXT=android-ext-${ANDROID_VERSION}.jar 51*e6ba1607SAndroid Build Coastguard WorkerANDROID_CLASSES=android-classes-${ANDROID_VERSION}.jar 52*e6ba1607SAndroid Build Coastguard Worker 53*e6ba1607SAndroid Build Coastguard Worker# API specific paths 54*e6ba1607SAndroid Build Coastguard WorkerLIB_PHONE_NUMBERS_PKG="com/android/i18n/phonenumbers" 55*e6ba1607SAndroid Build Coastguard WorkerLIB_PHONE_NUMBERS_PATH="external/libphonenumber/java/src" 56*e6ba1607SAndroid Build Coastguard Worker 57*e6ba1607SAndroid Build Coastguard Worker# Final artifact names 58*e6ba1607SAndroid Build Coastguard WorkerANDROID_ALL=android-all-${ROBOLECTRIC_VERSION}.jar 59*e6ba1607SAndroid Build Coastguard WorkerANDROID_ALL_POM=android-all-${ROBOLECTRIC_VERSION}.pom 60*e6ba1607SAndroid Build Coastguard WorkerANDROID_ALL_SRC=android-all-${ROBOLECTRIC_VERSION}-sources.jar 61*e6ba1607SAndroid Build Coastguard WorkerANDROID_ALL_DOC=android-all-${ROBOLECTRIC_VERSION}-javadoc.jar 62*e6ba1607SAndroid Build Coastguard WorkerANDROID_BUNDLE=android-all-${ROBOLECTRIC_VERSION}-bundle.jar 63*e6ba1607SAndroid Build Coastguard Worker 64*e6ba1607SAndroid Build Coastguard WorkerTZDATA_ARCH="generic_x86" 65*e6ba1607SAndroid Build Coastguard Worker 66*e6ba1607SAndroid Build Coastguard Workerbuild_platform() { 67*e6ba1607SAndroid Build Coastguard Worker NATIVE_ARTIFACTS=() 68*e6ba1607SAndroid Build Coastguard Worker 69*e6ba1607SAndroid Build Coastguard Worker if [[ "${ANDROID_VERSION}" == "4.1.2_r1" ]]; then 70*e6ba1607SAndroid Build Coastguard Worker ARTIFACTS=("core" "services" "framework" "android.policy" "ext") 71*e6ba1607SAndroid Build Coastguard Worker SOURCES=(core/java graphics/java media/java location/java opengl/java policy/src sax/java services/java telephony/java wifi/java) 72*e6ba1607SAndroid Build Coastguard Worker elif [[ "${ANDROID_VERSION}" == "4.2.2_r1.2" ]]; then 73*e6ba1607SAndroid Build Coastguard Worker ARTIFACTS=("core" "services" "telephony-common" "framework" "android.policy" "ext") 74*e6ba1607SAndroid Build Coastguard Worker SOURCES=(core/java graphics/java media/java location/java opengl/java policy/src sax/java services/java telephony/java wifi/java) 75*e6ba1607SAndroid Build Coastguard Worker elif [[ "${ANDROID_VERSION}" == "4.3_r2" ]]; then 76*e6ba1607SAndroid Build Coastguard Worker ARTIFACTS=("core" "services" "telephony-common" "framework" "android.policy" "ext") 77*e6ba1607SAndroid Build Coastguard Worker SOURCES=(core/java graphics/java media/java location/java opengl/java policy/src sax/java services/java telephony/java wifi/java) 78*e6ba1607SAndroid Build Coastguard Worker elif [[ "${ANDROID_VERSION}" == "4.4_r1" ]]; then 79*e6ba1607SAndroid Build Coastguard Worker ARTIFACTS=("core" "services" "telephony-common" "framework" "framework2" "framework-base" "android.policy" "ext" "webviewchromium" "okhttp" "conscrypt") 80*e6ba1607SAndroid Build Coastguard Worker SOURCES=(core/java graphics/java media/java location/java opengl/java policy/src sax/java services/java telephony/java wifi/java) 81*e6ba1607SAndroid Build Coastguard Worker elif [[ "${ANDROID_VERSION}" == "5.0.2_r3" ]]; then 82*e6ba1607SAndroid Build Coastguard Worker ARTIFACTS=("core-libart" "services" "telephony-common" "framework" "android.policy" "ext" "okhttp" "conscrypt") 83*e6ba1607SAndroid Build Coastguard Worker SOURCES=(core/java graphics/java media/java location/java opengl/java policy/src sax/java services/java telephony/java wifi/java) 84*e6ba1607SAndroid Build Coastguard Worker TZDATA_ARCH="generic" 85*e6ba1607SAndroid Build Coastguard Worker elif [[ "${ANDROID_VERSION}" == "5.1.1_r9" ]]; then 86*e6ba1607SAndroid Build Coastguard Worker ARTIFACTS=("core-libart" "services" "telephony-common" "framework" "android.policy" "ext" "okhttp" "conscrypt") 87*e6ba1607SAndroid Build Coastguard Worker SOURCES=(core/java graphics/java media/java location/java opengl/java policy/src sax/java services/java telephony/java wifi/java) 88*e6ba1607SAndroid Build Coastguard Worker TZDATA_ARCH="generic" 89*e6ba1607SAndroid Build Coastguard Worker elif [[ "${ANDROID_VERSION}" == "6.0.1_r3" ]]; then 90*e6ba1607SAndroid Build Coastguard Worker ARTIFACTS=("core-libart" "services" "services.accessibility" "telephony-common" "framework" "ext" "icu4j-icudata-jarjar" "okhttp" "conscrypt") 91*e6ba1607SAndroid Build Coastguard Worker SOURCES=(core/java graphics/java media/java location/java opengl/java sax/java services/java telephony/java wifi/java) 92*e6ba1607SAndroid Build Coastguard Worker LIB_PHONE_NUMBERS_PKG="com/google/i18n/phonenumbers" 93*e6ba1607SAndroid Build Coastguard Worker LIB_PHONE_NUMBERS_PATH="external/libphonenumber/libphonenumber/src" 94*e6ba1607SAndroid Build Coastguard Worker TZDATA_ARCH="generic" 95*e6ba1607SAndroid Build Coastguard Worker elif [[ "${ANDROID_VERSION}" == "7.0.0_r1" ]]; then 96*e6ba1607SAndroid Build Coastguard Worker ARTIFACTS=("core-libart" "services" "services.accessibility" "telephony-common" "framework" "ext" "okhttp" "conscrypt") 97*e6ba1607SAndroid Build Coastguard Worker NATIVE_ARTIFACTS=("icu4j-icudata-host-jarjar" "icu4j-icutzdata-host-jarjar") 98*e6ba1607SAndroid Build Coastguard Worker SOURCES=(core/java graphics/java media/java location/java opengl/java sax/java services/java telephony/java wifi/java) 99*e6ba1607SAndroid Build Coastguard Worker LIB_PHONE_NUMBERS_PKG="com/google/i18n/phonenumbers" 100*e6ba1607SAndroid Build Coastguard Worker LIB_PHONE_NUMBERS_PATH="external/libphonenumber/libphonenumber/src" 101*e6ba1607SAndroid Build Coastguard Worker elif [[ "${ANDROID_VERSION}" == "7.1.0_r7" ]]; then 102*e6ba1607SAndroid Build Coastguard Worker ARTIFACTS=("core-libart" "services" "services.accessibility" "telephony-common" "framework" "ext" "okhttp" "conscrypt") 103*e6ba1607SAndroid Build Coastguard Worker NATIVE_ARTIFACTS=("icu4j-icudata-host-jarjar" "icu4j-icutzdata-host-jarjar") 104*e6ba1607SAndroid Build Coastguard Worker SOURCES=(core/java graphics/java media/java location/java opengl/java sax/java services/java telephony/java wifi/java) 105*e6ba1607SAndroid Build Coastguard Worker LIB_PHONE_NUMBERS_PKG="com/google/i18n/phonenumbers" 106*e6ba1607SAndroid Build Coastguard Worker LIB_PHONE_NUMBERS_PATH="external/libphonenumber/libphonenumber/src" 107*e6ba1607SAndroid Build Coastguard Worker elif [[ "${ANDROID_VERSION}" == "8.0.0_r4" ]]; then 108*e6ba1607SAndroid Build Coastguard Worker ARTIFACTS=("robolectric_android-all") 109*e6ba1607SAndroid Build Coastguard Worker NATIVE_ARTIFACTS=() 110*e6ba1607SAndroid Build Coastguard Worker SOURCES=(core/java graphics/java media/java location/java opengl/java sax/java services/java telephony/java wifi/java) 111*e6ba1607SAndroid Build Coastguard Worker else 112*e6ba1607SAndroid Build Coastguard Worker echo "Robolectric: No match for version: ${ANDROID_VERSION}" 113*e6ba1607SAndroid Build Coastguard Worker exit 1 114*e6ba1607SAndroid Build Coastguard Worker fi 115*e6ba1607SAndroid Build Coastguard Worker 116*e6ba1607SAndroid Build Coastguard Worker cd ${ANDROID_SOURCES_BASE} 117*e6ba1607SAndroid Build Coastguard Worker if [ ! -d out/target/common/obj/JAVA_LIBRARIES ]; then 118*e6ba1607SAndroid Build Coastguard Worker echo "Robolectric: You need to run 'sync-android.sh' first" 119*e6ba1607SAndroid Build Coastguard Worker exit 1 120*e6ba1607SAndroid Build Coastguard Worker fi 121*e6ba1607SAndroid Build Coastguard Worker} 122*e6ba1607SAndroid Build Coastguard Worker 123*e6ba1607SAndroid Build Coastguard Workerbuild_android_res() { 124*e6ba1607SAndroid Build Coastguard Worker echo "Robolectric: Building android-res..." 125*e6ba1607SAndroid Build Coastguard Worker cd ${FRAMEWORKS_BASE_DIR}/core/res; jar cf ${OUT}/${ANDROID_RES} . 126*e6ba1607SAndroid Build Coastguard Worker src=${ANDROID_SOURCES_BASE}/out/target/common/obj/APPS/framework-res_intermediates/package-export.apk 127*e6ba1607SAndroid Build Coastguard Worker cp $src ${OUT}/${ANDROID_RES} 128*e6ba1607SAndroid Build Coastguard Worker} 129*e6ba1607SAndroid Build Coastguard Worker 130*e6ba1607SAndroid Build Coastguard Workerbuild_android_ext() { 131*e6ba1607SAndroid Build Coastguard Worker echo "Robolectric: Building android-ext..." 132*e6ba1607SAndroid Build Coastguard Worker mkdir -p ${OUT}/ext-classes-modified/${LIB_PHONE_NUMBERS_PKG} 133*e6ba1607SAndroid Build Coastguard Worker cd ${OUT}/ext-classes-modified; jar xf ${ANDROID_SOURCES_BASE}/out/target/common/obj/JAVA_LIBRARIES/ext_intermediates/classes.jar 134*e6ba1607SAndroid Build Coastguard Worker cp -R ${ANDROID_SOURCES_BASE}/${LIB_PHONE_NUMBERS_PATH}/${LIB_PHONE_NUMBERS_PKG}/data ${OUT}/ext-classes-modified/${LIB_PHONE_NUMBERS_PKG} 135*e6ba1607SAndroid Build Coastguard Worker cd ${OUT}/ext-classes-modified; jar cf ${OUT}/${ANDROID_EXT} . 136*e6ba1607SAndroid Build Coastguard Worker rm -rf ${OUT}/ext-classes-modified 137*e6ba1607SAndroid Build Coastguard Worker} 138*e6ba1607SAndroid Build Coastguard Worker 139*e6ba1607SAndroid Build Coastguard Workerbuild_android_classes() { 140*e6ba1607SAndroid Build Coastguard Worker echo "Robolectric: Building android-classes..." 141*e6ba1607SAndroid Build Coastguard Worker mkdir ${OUT}/android-all-classes 142*e6ba1607SAndroid Build Coastguard Worker for artifact in "${ARTIFACTS[@]}"; do 143*e6ba1607SAndroid Build Coastguard Worker src=${ANDROID_SOURCES_BASE}/out/target/common/obj/JAVA_LIBRARIES/${artifact}_intermediates 144*e6ba1607SAndroid Build Coastguard Worker cd ${OUT}/android-all-classes 145*e6ba1607SAndroid Build Coastguard Worker if [[ -f ${src}/classes.jar ]]; then 146*e6ba1607SAndroid Build Coastguard Worker jar xf ${src}/classes.jar 147*e6ba1607SAndroid Build Coastguard Worker else 148*e6ba1607SAndroid Build Coastguard Worker echo "Couldn't find ${artifact} at ${src}/classes.jar" 149*e6ba1607SAndroid Build Coastguard Worker exit 1 150*e6ba1607SAndroid Build Coastguard Worker fi 151*e6ba1607SAndroid Build Coastguard Worker done 152*e6ba1607SAndroid Build Coastguard Worker 153*e6ba1607SAndroid Build Coastguard Worker for artifact in "${NATIVE_ARTIFACTS[@]}"; do 154*e6ba1607SAndroid Build Coastguard Worker jarPath=${ANDROID_SOURCES_BASE}/out/host/linux-x86/framework/${artifact}.jar 155*e6ba1607SAndroid Build Coastguard Worker cd ${OUT}/android-all-classes 156*e6ba1607SAndroid Build Coastguard Worker if [[ -f $jarPath ]]; then 157*e6ba1607SAndroid Build Coastguard Worker jar xf $jarPath 158*e6ba1607SAndroid Build Coastguard Worker else 159*e6ba1607SAndroid Build Coastguard Worker echo "Couldn't find ${artifact} at $jarPath" 160*e6ba1607SAndroid Build Coastguard Worker exit 1 161*e6ba1607SAndroid Build Coastguard Worker fi 162*e6ba1607SAndroid Build Coastguard Worker done 163*e6ba1607SAndroid Build Coastguard Worker build_tzdata 164*e6ba1607SAndroid Build Coastguard Worker build_prop 165*e6ba1607SAndroid Build Coastguard Worker cd ${OUT}/android-all-classes; jar cf ${OUT}/${ANDROID_CLASSES} . 166*e6ba1607SAndroid Build Coastguard Worker rm -rf ${OUT}/android-all-classes 167*e6ba1607SAndroid Build Coastguard Worker} 168*e6ba1607SAndroid Build Coastguard Worker 169*e6ba1607SAndroid Build Coastguard Workerbuild_tzdata() { 170*e6ba1607SAndroid Build Coastguard Worker echo "Robolectric: Building tzdata..." 171*e6ba1607SAndroid Build Coastguard Worker mkdir -p ${OUT}/android-all-classes/usr/share/zoneinfo 172*e6ba1607SAndroid Build Coastguard Worker cp ${ANDROID_SOURCES_BASE}/out/target/product/${TZDATA_ARCH}/system/usr/share/zoneinfo/tzdata ${OUT}/android-all-classes/usr/share/zoneinfo 173*e6ba1607SAndroid Build Coastguard Worker} 174*e6ba1607SAndroid Build Coastguard Worker 175*e6ba1607SAndroid Build Coastguard Workerbuild_prop() { 176*e6ba1607SAndroid Build Coastguard Worker cp ${ANDROID_SOURCES_BASE}/out/target/product/generic_x86/system/build.prop ${OUT}/android-all-classes 177*e6ba1607SAndroid Build Coastguard Worker} 178*e6ba1607SAndroid Build Coastguard Worker 179*e6ba1607SAndroid Build Coastguard Workerbuild_android_all_jar() { 180*e6ba1607SAndroid Build Coastguard Worker echo "Robolectric: Building android-all..." 181*e6ba1607SAndroid Build Coastguard Worker mkdir ${OUT}/android-all 182*e6ba1607SAndroid Build Coastguard Worker cd ${OUT}/android-all; unzip ${OUT}/${ANDROID_RES} 183*e6ba1607SAndroid Build Coastguard Worker # temporarily add raw resources too 184*e6ba1607SAndroid Build Coastguard Worker cd ${OUT}/android-all; rsync -a ${FRAMEWORKS_RAW_RES_DIR} raw-res 185*e6ba1607SAndroid Build Coastguard Worker cd ${OUT}/android-all; jar xf ${OUT}/${ANDROID_EXT} 186*e6ba1607SAndroid Build Coastguard Worker cd ${OUT}/android-all; jar xf ${OUT}/${ANDROID_CLASSES} 187*e6ba1607SAndroid Build Coastguard Worker 188*e6ba1607SAndroid Build Coastguard Worker # Remove unused files 189*e6ba1607SAndroid Build Coastguard Worker rm -rf ${OUT}/android-all/Android.mk 190*e6ba1607SAndroid Build Coastguard Worker rm -rf ${OUT}/android-all/raw-res/Android.mk 191*e6ba1607SAndroid Build Coastguard Worker rm -rf ${OUT}/android-all/AndroidManifest.xml 192*e6ba1607SAndroid Build Coastguard Worker rm -rf ${OUT}/android-all/raw-resAndroidManifest.xml 193*e6ba1607SAndroid Build Coastguard Worker rm -rf ${OUT}/android-all/META-INF 194*e6ba1607SAndroid Build Coastguard Worker rm -rf ${OUT}/android-all/MODULE_LICENSE_APACHE2 195*e6ba1607SAndroid Build Coastguard Worker rm -rf ${OUT}/android-all/raw-res/MODULE_LICENSE_APACHE2 196*e6ba1607SAndroid Build Coastguard Worker rm -rf ${OUT}/android-all/MakeJavaSymbols.sed 197*e6ba1607SAndroid Build Coastguard Worker rm -rf ${OUT}/android-all/raw-res/MakeJavaSymbols.sed 198*e6ba1607SAndroid Build Coastguard Worker rm -rf ${OUT}/android-all/NOTICE 199*e6ba1607SAndroid Build Coastguard Worker rm -rf ${OUT}/android-all/raw-res/NOTICE 200*e6ba1607SAndroid Build Coastguard Worker rm -rf ${OUT}/android-all/lint.xml 201*e6ba1607SAndroid Build Coastguard Worker rm -rf ${OUT}/android-all/raw-res/lint.xml 202*e6ba1607SAndroid Build Coastguard Worker rm -rf ${OUT}/android-all/java/lang 203*e6ba1607SAndroid Build Coastguard Worker 204*e6ba1607SAndroid Build Coastguard Worker # Build the new JAR file 205*e6ba1607SAndroid Build Coastguard Worker cd ${OUT}/android-all; jar cf ${OUT}/${ANDROID_ALL} . 206*e6ba1607SAndroid Build Coastguard Worker rm ${OUT}/${ANDROID_RES} ${OUT}/${ANDROID_EXT} ${OUT}/${ANDROID_CLASSES} 207*e6ba1607SAndroid Build Coastguard Worker} 208*e6ba1607SAndroid Build Coastguard Worker 209*e6ba1607SAndroid Build Coastguard Workercp_android_all_jar() { 210*e6ba1607SAndroid Build Coastguard Worker # function to use for android versions that support building the android all 211*e6ba1607SAndroid Build Coastguard Worker # jar directly 212*e6ba1607SAndroid Build Coastguard Worker # This will just copy the android all jar to the final name 213*e6ba1607SAndroid Build Coastguard Worker src=${ANDROID_SOURCES_BASE}/out/target/common/obj/JAVA_LIBRARIES/robolectric_android-all-stub_intermediates/classes-with-res.jar 214*e6ba1607SAndroid Build Coastguard Worker cp $src ${OUT}/${ANDROID_ALL} 215*e6ba1607SAndroid Build Coastguard Worker} 216*e6ba1607SAndroid Build Coastguard Worker 217*e6ba1607SAndroid Build Coastguard Workerbuild_android_src_jar() { 218*e6ba1607SAndroid Build Coastguard Worker echo "Robolectric: Building android-all-source..." 219*e6ba1607SAndroid Build Coastguard Worker local src=${ANDROID_SOURCES_BASE}/frameworks/base 220*e6ba1607SAndroid Build Coastguard Worker local tmp=${OUT}/sources 221*e6ba1607SAndroid Build Coastguard Worker mkdir ${tmp} 222*e6ba1607SAndroid Build Coastguard Worker 223*e6ba1607SAndroid Build Coastguard Worker for sourceSubDir in "${SOURCES[@]}"; do 224*e6ba1607SAndroid Build Coastguard Worker rsync -a ${src}/${sourceSubDir}/ ${tmp}/ 225*e6ba1607SAndroid Build Coastguard Worker done 226*e6ba1607SAndroid Build Coastguard Worker rsync -a ${ANDROID_SOURCES_BASE}/libcore/luni/src/main/java/ ${tmp}/ # this is new 227*e6ba1607SAndroid Build Coastguard Worker cd ${tmp}; jar cf ${OUT}/${ANDROID_ALL_SRC} . 228*e6ba1607SAndroid Build Coastguard Worker rm -rf ${tmp} 229*e6ba1607SAndroid Build Coastguard Worker} 230*e6ba1607SAndroid Build Coastguard Worker 231*e6ba1607SAndroid Build Coastguard Workerbuild_android_doc_jar() { 232*e6ba1607SAndroid Build Coastguard Worker # TODO: Actually build the docs 233*e6ba1607SAndroid Build Coastguard Worker echo "Robolectric: Building android-all-javadoc..." 234*e6ba1607SAndroid Build Coastguard Worker mkdir ${OUT}/javadoc 235*e6ba1607SAndroid Build Coastguard Worker cd ${OUT}/javadoc; jar cf ${OUT}/${ANDROID_ALL_DOC} . 236*e6ba1607SAndroid Build Coastguard Worker rm -rf ${OUT}/javadoc 237*e6ba1607SAndroid Build Coastguard Worker} 238*e6ba1607SAndroid Build Coastguard Worker 239*e6ba1607SAndroid Build Coastguard Workerbuild_signed_packages() { 240*e6ba1607SAndroid Build Coastguard Worker echo "Robolectric: Building android-all.pom..." 241*e6ba1607SAndroid Build Coastguard Worker sed s/VERSION/${ROBOLECTRIC_VERSION}/ ${SCRIPT_DIR}/pom_template.xml | sed s/ARTIFACT_ID/android-all/ > ${OUT}/${ANDROID_ALL_POM} 242*e6ba1607SAndroid Build Coastguard Worker 243*e6ba1607SAndroid Build Coastguard Worker echo "Robolectric: Signing files with gpg..." 244*e6ba1607SAndroid Build Coastguard Worker for ext in ".jar" "-javadoc.jar" "-sources.jar" ".pom"; do 245*e6ba1607SAndroid Build Coastguard Worker ( cd ${OUT} && gpg -ab --passphrase ${SIGNING_PASSWORD} android-all-${ROBOLECTRIC_VERSION}$ext ) 246*e6ba1607SAndroid Build Coastguard Worker done 247*e6ba1607SAndroid Build Coastguard Worker 248*e6ba1607SAndroid Build Coastguard Worker echo "Robolectric: Creating bundle for Sonatype upload..." 249*e6ba1607SAndroid Build Coastguard Worker cd ${OUT}; jar cf ${ANDROID_BUNDLE} *.jar *.pom *.asc 250*e6ba1607SAndroid Build Coastguard Worker} 251*e6ba1607SAndroid Build Coastguard Worker 252*e6ba1607SAndroid Build Coastguard Workercp_android_all_jar() { 253*e6ba1607SAndroid Build Coastguard Worker # function to use for android versions that support building the android all 254*e6ba1607SAndroid Build Coastguard Worker # jar directly 255*e6ba1607SAndroid Build Coastguard Worker # This will just copy the android all jar to the final name 256*e6ba1607SAndroid Build Coastguard Worker src=${ANDROID_SOURCES_BASE}/out/target/common/obj/JAVA_LIBRARIES/robolectric_android-all-stub_intermediates/classes-with-res.jar 257*e6ba1607SAndroid Build Coastguard Worker cp $src ${OUT}/${ANDROID_ALL} 258*e6ba1607SAndroid Build Coastguard Worker} 259*e6ba1607SAndroid Build Coastguard Worker 260*e6ba1607SAndroid Build Coastguard Workermavenize() { 261*e6ba1607SAndroid Build Coastguard Worker local FILE_NAME_BASE=android-all-${ROBOLECTRIC_VERSION} 262*e6ba1607SAndroid Build Coastguard Worker mvn install:install-file \ 263*e6ba1607SAndroid Build Coastguard Worker -Dfile=${OUT}/${FILE_NAME_BASE}.jar \ 264*e6ba1607SAndroid Build Coastguard Worker -DgroupId=org.robolectric \ 265*e6ba1607SAndroid Build Coastguard Worker -DartifactId=android-all \ 266*e6ba1607SAndroid Build Coastguard Worker -Dversion=${ROBOLECTRIC_VERSION} \ 267*e6ba1607SAndroid Build Coastguard Worker -Dpackaging=jar 268*e6ba1607SAndroid Build Coastguard Worker 269*e6ba1607SAndroid Build Coastguard Worker mvn install:install-file \ 270*e6ba1607SAndroid Build Coastguard Worker -Dfile=${OUT}/${FILE_NAME_BASE}-sources.jar \ 271*e6ba1607SAndroid Build Coastguard Worker -DgroupId=org.robolectric \ 272*e6ba1607SAndroid Build Coastguard Worker -DartifactId=android-all \ 273*e6ba1607SAndroid Build Coastguard Worker -Dversion=${ROBOLECTRIC_VERSION} \ 274*e6ba1607SAndroid Build Coastguard Worker -Dpackaging=jar \ 275*e6ba1607SAndroid Build Coastguard Worker -Dclassifier=sources 276*e6ba1607SAndroid Build Coastguard Worker 277*e6ba1607SAndroid Build Coastguard Worker mvn install:install-file \ 278*e6ba1607SAndroid Build Coastguard Worker -Dfile=${OUT}/${FILE_NAME_BASE}-javadoc.jar \ 279*e6ba1607SAndroid Build Coastguard Worker -DgroupId=org.robolectric \ 280*e6ba1607SAndroid Build Coastguard Worker -DartifactId=android-all \ 281*e6ba1607SAndroid Build Coastguard Worker -Dversion=${ROBOLECTRIC_VERSION} \ 282*e6ba1607SAndroid Build Coastguard Worker -Dpackaging=jar \ 283*e6ba1607SAndroid Build Coastguard Worker -Dclassifier=javadoc 284*e6ba1607SAndroid Build Coastguard Worker} 285*e6ba1607SAndroid Build Coastguard Worker 286*e6ba1607SAndroid Build Coastguard Workerif [[ ! -d "${4}" ]]; then 287*e6ba1607SAndroid Build Coastguard Worker echo "$4 is not a directory" 288*e6ba1607SAndroid Build Coastguard Worker exit 1 289*e6ba1607SAndroid Build Coastguard Workerfi 290*e6ba1607SAndroid Build Coastguard Worker 291*e6ba1607SAndroid Build Coastguard WorkerOUT=${4}/${ANDROID_VERSION} 292*e6ba1607SAndroid Build Coastguard Workermkdir -p ${OUT} 293*e6ba1607SAndroid Build Coastguard Worker 294*e6ba1607SAndroid Build Coastguard Workerbuild_platform 295*e6ba1607SAndroid Build Coastguard Workerif [[ "${ANDROID_VERSION}" == "8.0.0_r4" ]]; then 296*e6ba1607SAndroid Build Coastguard Worker cp_android_all_jar 297*e6ba1607SAndroid Build Coastguard Workerelse 298*e6ba1607SAndroid Build Coastguard Worker build_android_res 299*e6ba1607SAndroid Build Coastguard Worker build_android_ext 300*e6ba1607SAndroid Build Coastguard Worker build_android_classes 301*e6ba1607SAndroid Build Coastguard Worker build_android_all_jar 302*e6ba1607SAndroid Build Coastguard Workerfi 303*e6ba1607SAndroid Build Coastguard Worker 304*e6ba1607SAndroid Build Coastguard Workerbuild_android_src_jar 305*e6ba1607SAndroid Build Coastguard Workerbuild_android_doc_jar 306*e6ba1607SAndroid Build Coastguard Workerbuild_signed_packages 307*e6ba1607SAndroid Build Coastguard Workermavenize 308*e6ba1607SAndroid Build Coastguard Worker 309*e6ba1607SAndroid Build Coastguard Workerecho "DONE!!" 310*e6ba1607SAndroid Build Coastguard Workerecho "Your artifacts are located here: ${OUT}" 311