57 lines
1.6 KiB
Bash
Executable File
57 lines
1.6 KiB
Bash
Executable File
#!/bin/zsh
|
|
set -euo pipefail
|
|
|
|
ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
|
|
ANDROID_DIR="$ROOT_DIR/android"
|
|
SIGNING_DIR="$ANDROID_DIR/signing"
|
|
KEYSTORE_DIR="$ANDROID_DIR/keystores"
|
|
PROPS_FILE="$SIGNING_DIR/release-signing.properties"
|
|
KEYSTORE_FILE="$KEYSTORE_DIR/boss-release.keystore"
|
|
KEY_ALIAS="${BOSS_ANDROID_KEY_ALIAS:-bossrelease}"
|
|
KEY_DNAME="${BOSS_ANDROID_KEY_DNAME:-CN=Boss Release, OU=Boss, O=HYZQ, L=Shenzhen, ST=Guangdong, C=CN}"
|
|
VALIDITY_DAYS="${BOSS_ANDROID_KEY_VALIDITY_DAYS:-3650}"
|
|
|
|
mkdir -p "$SIGNING_DIR" "$KEYSTORE_DIR"
|
|
|
|
generate_secret() {
|
|
python3 - <<'PY'
|
|
import secrets
|
|
print(secrets.token_urlsafe(24))
|
|
PY
|
|
}
|
|
|
|
if [[ ! -f "$PROPS_FILE" ]]; then
|
|
STORE_PASSWORD="${BOSS_ANDROID_STORE_PASSWORD:-$(generate_secret)}"
|
|
KEY_PASSWORD="${BOSS_ANDROID_KEY_PASSWORD:-$STORE_PASSWORD}"
|
|
cat > "$PROPS_FILE" <<EOF
|
|
storeFile=../keystores/boss-release.keystore
|
|
storePassword=$STORE_PASSWORD
|
|
keyAlias=$KEY_ALIAS
|
|
keyPassword=$KEY_PASSWORD
|
|
EOF
|
|
chmod 600 "$PROPS_FILE"
|
|
else
|
|
STORE_PASSWORD="$(sed -n 's/^storePassword=//p' "$PROPS_FILE" | head -n 1)"
|
|
KEY_PASSWORD="$(sed -n 's/^keyPassword=//p' "$PROPS_FILE" | head -n 1)"
|
|
KEY_ALIAS="$(sed -n 's/^keyAlias=//p' "$PROPS_FILE" | head -n 1)"
|
|
fi
|
|
|
|
if [[ ! -f "$KEYSTORE_FILE" ]]; then
|
|
keytool -genkeypair \
|
|
-storetype PKCS12 \
|
|
-keystore "$KEYSTORE_FILE" \
|
|
-storepass "$STORE_PASSWORD" \
|
|
-keypass "$KEY_PASSWORD" \
|
|
-alias "$KEY_ALIAS" \
|
|
-keyalg RSA \
|
|
-keysize 4096 \
|
|
-validity "$VALIDITY_DAYS" \
|
|
-dname "$KEY_DNAME"
|
|
chmod 600 "$KEYSTORE_FILE"
|
|
fi
|
|
|
|
echo "Prepared Android release signing:"
|
|
echo " properties: $PROPS_FILE"
|
|
echo " keystore: $KEYSTORE_FILE"
|
|
echo " alias: $KEY_ALIAS"
|