• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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!!"