Files
boss/scripts/prepare-android-signing.sh
2026-03-26 23:16:56 +08:00

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"