1#!/bin/bash 2# 3# This script signs already built AOSP Android jars, and installs them in your local 4# Maven repository. See: http://source.android.com/source/building.html for 5# more information on building AOSP. 6# 7# Usage: 8# build-android-prebuilt.sh <jar directory path> <android version> <robolectric version> 9# 10 11set -ex 12 13function usage() { 14 echo "Usage: ${0} <jar dir path> <android-version> <robolectric-sub-version>" 15} 16 17if [[ $# -ne 3 ]]; then 18 usage 19 exit 1 20fi 21 22JAR_DIR=$(readlink -e "$1") 23ANDROID_VERSION="$2" 24ROBOLECTRIC_SUB_VERSION="$3" 25 26SCRIPT_DIR=$(cd $(dirname "$0"); pwd) 27 28ROBOLECTRIC_VERSION=${ANDROID_VERSION}-robolectric-${ROBOLECTRIC_SUB_VERSION} 29 30# Final artifact names 31ANDROID_ALL=android-all-${ROBOLECTRIC_VERSION}.jar 32ANDROID_ALL_POM=android-all-${ROBOLECTRIC_VERSION}.pom 33ANDROID_ALL_SRC=android-all-${ROBOLECTRIC_VERSION}-sources.jar 34ANDROID_ALL_DOC=android-all-${ROBOLECTRIC_VERSION}-javadoc.jar 35ANDROID_BUNDLE=android-all-${ROBOLECTRIC_VERSION}-bundle.jar 36 37generate_empty_javadoc() { 38 TMP=`mktemp --directory` 39 cd ${TMP} 40 jar cf ${JAR_DIR}/${ANDROID_ALL_DOC} . 41 cd ${JAR_DIR}; rm -rf ${TMP} 42} 43 44build_signed_packages() { 45 echo "Robolectric: Building android-all.pom..." 46 sed s/VERSION/${ROBOLECTRIC_VERSION}/ ${SCRIPT_DIR}/pom_template.xml | sed s/ARTIFACT_ID/android-all/ > ${JAR_DIR}/${ANDROID_ALL_POM} 47 48 echo "Robolectric: Signing files with gpg..." 49 for ext in ".jar" "-javadoc.jar" "-sources.jar" ".pom"; do 50 ( cd ${JAR_DIR} && gpg -ab android-all-${ROBOLECTRIC_VERSION}$ext ) 51 done 52 53 echo "Robolectric: Creating bundle for Sonatype upload..." 54 cd ${JAR_DIR}; jar cf ${ANDROID_BUNDLE} *.jar *.pom *.asc 55} 56 57mavenize() { 58 local FILE_NAME_BASE=android-all-${ROBOLECTRIC_VERSION} 59 mvn install:install-file \ 60 -Dfile=${JAR_DIR}/${FILE_NAME_BASE}.jar \ 61 -DgroupId=org.robolectric \ 62 -DartifactId=android-all \ 63 -Dversion=${ROBOLECTRIC_VERSION} \ 64 -Dpackaging=jar 65 66 mvn install:install-file \ 67 -Dfile=${JAR_DIR}/${FILE_NAME_BASE}-sources.jar \ 68 -DgroupId=org.robolectric \ 69 -DartifactId=android-all \ 70 -Dversion=${ROBOLECTRIC_VERSION} \ 71 -Dpackaging=jar \ 72 -Dclassifier=sources 73 74 mvn install:install-file \ 75 -Dfile=${JAR_DIR}/${FILE_NAME_BASE}-javadoc.jar \ 76 -DgroupId=org.robolectric \ 77 -DartifactId=android-all \ 78 -Dversion=${ROBOLECTRIC_VERSION} \ 79 -Dpackaging=jar \ 80 -Dclassifier=javadoc 81} 82 83generate_empty_javadoc 84build_signed_packages 85mavenize 86 87echo "DONE!!" 88