forked from firka/firka
131 lines
3.9 KiB
Bash
Executable File
131 lines
3.9 KiB
Bash
Executable File
#!/bin/bash
|
|
cd firka
|
|
set -e
|
|
SHORT_SHA=$(git rev-parse --short HEAD)
|
|
COMMIT_COUNT=$(git rev-list --count HEAD)
|
|
BASE_BUILD_NUMBER=$((1000 + COMMIT_COUNT))
|
|
ORIGINAL_VERSION=$(grep "^version:" pubspec.yaml | sed 's/version: *//' | sed 's/+.*//')
|
|
|
|
update_version_for_abi() {
|
|
local build_offset=$1
|
|
local target_dir=$2
|
|
local new_build_number=$((BASE_BUILD_NUMBER + build_offset))
|
|
local new_version="${ORIGINAL_VERSION}-${SHORT_SHA}+${new_build_number}"
|
|
sed -i "s/^version: .*/version: ${new_version}/" "${target_dir}/pubspec.yaml"
|
|
echo "Updated version to: ${new_version} in ${target_dir}"
|
|
}
|
|
|
|
build_abi() {
|
|
local abi=$1
|
|
local build_offset=$2
|
|
local engine_name=$3
|
|
local platform=$4
|
|
local temp_dir="build/temp_${abi}"
|
|
|
|
echo "Starting build for ${abi}..."
|
|
|
|
# Create temp directory and copy project files
|
|
mkdir -p "${temp_dir}"
|
|
mkdir -pv build/secrets
|
|
cp -v ../secrets/* build/secrets/ || true
|
|
rsync -a --exclude='build/' --exclude='.dart_tool/' --exclude='.git/' . "${temp_dir}/"
|
|
|
|
cd "${temp_dir}"
|
|
|
|
BUNDLE_FILE="lib/helpers/firka_bundle.dart"
|
|
|
|
if [ -f "$BUNDLE_FILE" ]; then
|
|
echo "Modifying $BUNDLE_FILE"
|
|
sed -i 's/final bool _compressedBundle = false;/final bool _compressedBundle = Platform.isAndroid;/' "$BUNDLE_FILE"
|
|
echo "Modified _compressedBundle setting"
|
|
|
|
grep "_compressedBundle" "$BUNDLE_FILE" || echo "Warning: _compressedBundle line not found after modification"
|
|
else
|
|
echo "$BUNDLE_FILE not found"
|
|
exit 1
|
|
fi
|
|
|
|
# Update version for this ABI
|
|
update_version_for_abi ${build_offset} "."
|
|
|
|
# Generate localization files
|
|
flutter gen-l10n --template-arb-file app_hu.arb
|
|
|
|
# Build APK
|
|
sdk_path="$(cat $HOME/.flutter_path)"
|
|
TRANSFORM_APK=true flutter build apk --release --tree-shake-icons \
|
|
--local-engine-src-path "$sdk_path/engine/src" \
|
|
--local-engine=${engine_name} --local-engine-host=host_release \
|
|
--split-per-abi \
|
|
--target-platform ${platform}
|
|
|
|
# Move built APK to main build directory
|
|
mkdir -p "../app/outputs/flutter-apk/"
|
|
cp build/app/outputs/flutter-apk/*.apk "../app/outputs/flutter-apk/"
|
|
|
|
cd - > /dev/null
|
|
echo "Completed build for ${abi}"
|
|
}
|
|
|
|
flutter gen-l10n --template-arb-file app_hu.arb
|
|
|
|
if [ "$1" = "main" ]; then
|
|
if [ -f "$HOME/.flutter_path" ]; then
|
|
sdk_path="$(cat $HOME/.flutter_path)"
|
|
echo "Using flutter sdk from: $sdk_path"
|
|
|
|
# Clean up any existing temp directories and create main build directory
|
|
rm -rf build/temp_*
|
|
mkdir -p build/app/outputs/flutter-apk
|
|
|
|
# Start parallel builds
|
|
build_abi "arm" 1000 "android_release" "android-arm" &
|
|
ARM_PID=$!
|
|
|
|
build_abi "arm64" 2000 "android_release_arm64" "android-arm64" &
|
|
ARM64_PID=$!
|
|
|
|
build_abi "x64" 3000 "android_release_x64" "android-x64" &
|
|
X64_PID=$!
|
|
|
|
# Wait for all builds to complete
|
|
echo "Waiting for ARM build (PID: $ARM_PID)..."
|
|
wait $ARM_PID
|
|
ARM_EXIT=$?
|
|
|
|
echo "Waiting for ARM64 build (PID: $ARM64_PID)..."
|
|
wait $ARM64_PID
|
|
ARM64_EXIT=$?
|
|
|
|
echo "Waiting for X64 build (PID: $X64_PID)..."
|
|
wait $X64_PID
|
|
X64_EXIT=$?
|
|
|
|
# Check if any builds failed
|
|
if [ $ARM_EXIT -ne 0 ] || [ $ARM64_EXIT -ne 0 ] || [ $X64_EXIT -ne 0 ]; then
|
|
echo "One or more builds failed!"
|
|
echo "ARM exit code: $ARM_EXIT"
|
|
echo "ARM64 exit code: $ARM64_EXIT"
|
|
echo "X64 exit code: $X64_EXIT"
|
|
exit 1
|
|
fi
|
|
|
|
rm -rf build/temp_* build/secrets
|
|
|
|
echo "All builds completed successfully!"
|
|
ls -la build/app/outputs/flutter-apk/
|
|
|
|
update_version_for_abi 0 "."
|
|
|
|
echo "Building aab for playstore"
|
|
flutter build appbundle
|
|
|
|
else
|
|
echo "$HOME/.flutter_path not found!"
|
|
exit 1
|
|
fi
|
|
else
|
|
update_version_for_abi 0 "."
|
|
TRANSFORM_APK=true flutter build apk --debug --target-platform android-arm,android-arm64,android-x64
|
|
fi
|