xref: /aosp_15_r20/external/robolectric/scripts/install-android-prebuilt.sh (revision e6ba16074e6af37d123cb567d575f496bf0a58ee)
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