feat: add release build with signing

Made-with: Cursor
This commit is contained in:
cottongin
2026-03-11 04:30:50 -04:00
parent ec21256ca5
commit 1e5ba4e4fa

View File

@@ -184,8 +184,80 @@ manage_keystore() {
create_keystore create_keystore
} }
copy_apk() {
local build_type="$1"
local version
version="$(get_version_name)"
local source_apk="app/build/outputs/apk/$build_type/app-$build_type.apk"
if [[ ! -f "$source_apk" ]]; then
error "APK not found at $source_apk"
return 1
fi
ensure_dist_dir
local dest_name="radio247-v${version}-${build_type}.apk"
local dest_path="$DIST_DIR/$dest_name"
cp "$source_apk" "$dest_path"
local size
size="$(du -h "$dest_path" | cut -f1 | xargs)"
echo ""
success "Build complete!"
echo ""
echo -e " ${BOLD}APK:${NC} $dest_path"
echo -e " ${BOLD}Size:${NC} $size"
echo ""
echo -e " ${DIM}Share this file with anyone — they can install it${NC}"
echo -e " ${DIM}on Android 9+ by opening the APK on their device.${NC}"
}
build_release() {
info "Preparing release build..."
echo ""
if [[ ! -f "$KEYSTORE_FILE" ]]; then
warn "No keystore found. You need one to sign a release APK."
echo ""
local yn
read -rp "Create one now? (y/n) " yn
case $yn in
[Yy]*) create_keystore || return 1 ;;
*) return 0 ;;
esac
echo ""
fi
local password
read -rsp "Keystore password: " password
echo ""
echo ""
info "Building release APK... (this may take a minute)"
echo ""
local store_file
store_file="$(cd "$(dirname "$KEYSTORE_FILE")" && pwd)/$(basename "$KEYSTORE_FILE")"
if ./gradlew assembleRelease \
-Pandroid.injected.signing.store.file="$store_file" \
-Pandroid.injected.signing.store.password="$password" \
-Pandroid.injected.signing.key.alias="$KEY_ALIAS" \
-Pandroid.injected.signing.key.password="$password"; then
copy_apk "release"
else
echo ""
error "Build failed. Check the output above for details."
return 1
fi
}
# Placeholder functions — implemented in subsequent tasks # Placeholder functions — implemented in subsequent tasks
build_release() { warn "Not yet implemented"; }
build_debug() { warn "Not yet implemented"; } build_debug() { warn "Not yet implemented"; }
clean_build() { warn "Not yet implemented"; } clean_build() { warn "Not yet implemented"; }