Files
busylight-buddy/android/flutter-build-apk.sh
T
iGoX a0b3adc288 [Android|Windows|macOS|iOS] Rework flutter build helpers (#5)
Rework flutter build command helpers for platforms:
- Android
- Windows
- macOS
- iOS

Reviewed-on: #5
2026-03-25 18:55:28 +01:00

90 lines
2.7 KiB
Bash
Executable File

#!/bin/bash
# Default values
buildType="release"
buildName="0.0.0"
buildsRef="builds.json"
# Help message
show_help() {
echo "Usage: $0 [-t buildType] [-n buildName]"
echo "Builds a Flutter APK with versioning support."
echo ""
echo "Options:"
echo " -t, --buildType Build type (release or debug). Default: release"
echo " -n, --buildName Build name (version). Default: 0.0.0"
echo " -h, --help Show this help message"
exit 0
}
# Parse command-line arguments
while [[ "$#" -gt 0 ]]; do
case $1 in
-t|--buildType) buildType="$2"; shift ;;
-n|--buildName) buildName="$2"; shift ;;
-h|--help) show_help ;;
*) echo "Unknown parameter: $1"; show_help; exit 1 ;;
esac
shift
done
# Check if builds.json exists
if [ ! -f "$buildsRef" ]; then
echo "File created: $buildsRef"
echo "{\"$buildName\": 0}" > "$buildsRef"
else
echo "File already exists: $buildsRef"
fi
# Read the JSON file
buildsMap=$(cat "$buildsRef")
# Check if buildName exists in the JSON
if jq -e --arg key "$buildName" 'has($key)' <<< "$buildsMap" > /dev/null; then
echo "Build exists: $buildName"
buildNumber=$(jq --arg key "$buildName" '.[$key]' <<< "$buildsMap")
buildNumber=$((buildNumber + 1))
echo "Next build number for $buildName: $buildNumber"
buildsMap=$(jq --arg key "$buildName" --argjson value "$buildNumber" '.[$key] = $value' <<< "$buildsMap")
else
echo "New build: $buildName, starting at build number: 1"
buildNumber=1
buildsMap=$(jq --arg key "$buildName" --argjson value "$buildNumber" '.[$key] = $value' <<< "$buildsMap")
fi
# Save the updated JSON back to the file
echo "$buildsMap" > "$buildsRef"
# Define paths
apkDir="../build/app/outputs/flutter-apk"
baseName="org.igox.apps.android.busylight-buddy"
# Build APK
echo "Building APK with arguments: --$buildType --build-name=$buildName --build-number=$buildNumber --target-platform=android-arm,android-arm64,android-x64"
flutter build apk --"$buildType" --build-name="$buildName" --build-number="$buildNumber" --target-platform=android-arm,android-arm64,android-x64
# Rename APK
oldApk="$apkDir/app-$buildType.apk"
newApk="$apkDir/$baseName-$buildType.apk"
if [ -f "$oldApk" ]; then
if [ -f "$newApk" ]; then
rm -f "$newApk"
fi
mv "$oldApk" "$newApk"
echo "APK renamed to: $baseName-$buildType.apk"
else
echo "Warning: APK not found at $oldApk"
fi
# Rename SHA1 (if exists)
oldSha1="$apkDir/app-$buildType.apk.sha1"
newSha1="$apkDir/$baseName-$buildType.apk.sha1"
if [ -f "$oldSha1" ]; then
if [ -f "$newSha1" ]; then
rm -f "$newSha1"
fi
mv "$oldSha1" "$newSha1"
echo "SHA1 renamed to: $baseName-$buildType.apk.sha1"
else
echo "Warning: SHA1 not found at $oldSha1"
fi