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_sources() { 38 TMP=`mktemp --directory` 39 cd ${TMP} 40 jar cf ${JAR_DIR}/${ANDROID_ALL_SRC} . 41 cd ${JAR_DIR}; rm -rf ${TMP} 42} 43 44generate_empty_javadoc() { 45 TMP=`mktemp --directory` 46 cd ${TMP} 47 jar cf ${JAR_DIR}/${ANDROID_ALL_DOC} . 48 cd ${JAR_DIR}; rm -rf ${TMP} 49} 50 51build_signed_packages() { 52 echo "Robolectric: Building android-all.pom..." 53 sed s/VERSION/${ROBOLECTRIC_VERSION}/ ${SCRIPT_DIR}/pom_template.xml | sed s/ARTIFACT_ID/android-all/ > ${JAR_DIR}/${ANDROID_ALL_POM} 54 55 echo "Robolectric: Signing files with gpg..." 56 for ext in ".jar" "-javadoc.jar" "-sources.jar" ".pom"; do 57 ( cd ${JAR_DIR} && gpg -ab android-all-${ROBOLECTRIC_VERSION}$ext ) 58 done 59 60 echo "Robolectric: Creating bundle for Sonatype upload..." 61 cd ${JAR_DIR}; jar cf ${ANDROID_BUNDLE} *.jar *.pom *.asc 62} 63 64mavenize() { 65 local FILE_NAME_BASE=android-all-${ROBOLECTRIC_VERSION} 66 mvn install:install-file \ 67 -Dfile=${JAR_DIR}/${FILE_NAME_BASE}.jar \ 68 -DgroupId=org.robolectric \ 69 -DartifactId=android-all \ 70 -Dversion=${ROBOLECTRIC_VERSION} \ 71 -Dpackaging=jar 72 73 mvn install:install-file \ 74 -Dfile=${JAR_DIR}/${FILE_NAME_BASE}-sources.jar \ 75 -DgroupId=org.robolectric \ 76 -DartifactId=android-all \ 77 -Dversion=${ROBOLECTRIC_VERSION} \ 78 -Dpackaging=jar \ 79 -Dclassifier=sources 80 81 mvn install:install-file \ 82 -Dfile=${JAR_DIR}/${FILE_NAME_BASE}-javadoc.jar \ 83 -DgroupId=org.robolectric \ 84 -DartifactId=android-all \ 85 -Dversion=${ROBOLECTRIC_VERSION} \ 86 -Dpackaging=jar \ 87 -Dclassifier=javadoc 88} 89 90generate_empty_javadoc 91generate_empty_sources 92build_signed_packages 93mavenize 94 95echo "DONE!!" 96