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