#!/usr/bin/env bash # 03-stavba.sh – stavba appky (podľa oficiálneho CI RustDesku 1.5.0). # Použitie: bash 03-stavba.sh apk-test – testovacie APK arm64 (podpísané testovacím kľúčom) # bash 03-stavba.sh aab – .aab pre Google Play (arm64 + armv7 + x86_64, podpísané naším kľúčom) set -euo pipefail MODE="${1:-apk-test}" E=/opt/edr; RD=$E/rustdesk; W=/mnt/c/Apps/ecommerce_edigiroot/android export RUSTUP_HOME=$E/rustup CARGO_HOME=$E/cargo export PATH=$E/cargo/bin:$E/flutter/bin:/usr/lib/jvm/java-17-openjdk-amd64/bin:$PATH export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 export ANDROID_HOME=$E/android-sdk ANDROID_SDK_ROOT=$E/android-sdk export ANDROID_NDK_HOME=$E/android-ndk-r28c ANDROID_NDK_ROOT=$E/android-ndk-r28c export VCPKG_ROOT=$E/vcpkg step() { printf '\n==== %s %s\n' "$(date +%H:%M:%S)" "$*"; } cd "$RD" step "flutter_rust_bridge (generated_bridge.dart)" if [ ! -f flutter/lib/generated_bridge.dart ] || [ src/flutter_ffi.rs -nt flutter/lib/generated_bridge.dart ]; then [ -f flutter/.dart_tool/package_config.json ] || (cd flutter && timeout 900 flutter pub get $E/vcpkg-$ABI.log 2>&1 || { tail -40 $E/vcpkg-$ABI.log; exit 1; } fi step "Rust knižnica pre $T" # ako flutter/$NDKS, ale iba knižnica (--lib) – binárka rustdesk sa pre Android nepoužíva a s API 21 sa nezlinkuje cargo ndk --platform 21 --target $T build --locked --release --lib --features flutter,hwcodec mkdir -p flutter/android/app/src/main/jniLibs/$ABI cp target/$T/release/liblibrustdesk.so flutter/android/app/src/main/jniLibs/$ABI/librustdesk.so cp $ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/$LIBCPP/libc++_shared.so flutter/android/app/src/main/jniLibs/$ABI/ done sed -i "s/org.gradle.jvmargs=-Xmx1024M/org.gradle.jvmargs=-Xmx4g/g" flutter/android/gradle.properties mkdir -p $W/vystup cd flutter if [ "$MODE" = aab ]; then [ -f android/key.properties ] || { echo "CHYBA: chýba android/key.properties (podpisový kľúč) – spusti 04-kluc.sh"; exit 1; } step "flutter build appbundle" flutter build appbundle --release --target-platform android-arm64,android-arm,android-x64 cp build/app/outputs/bundle/release/app-release.aab $W/vystup/e-digiroot-podpora.aab ls -la $W/vystup/e-digiroot-podpora.aab else step "flutter build apk (test, arm64)" sed -i "s/signingConfig signingConfigs.release/signingConfig signingConfigs.debug/" android/app/build.gradle flutter build apk --release --target-platform android-arm64 --split-per-abi sed -i "s/signingConfig signingConfigs.debug/signingConfig signingConfigs.release/" android/app/build.gradle cp build/app/outputs/flutter-apk/app-arm64-v8a-release.apk $W/vystup/e-digiroot-podpora-TEST-arm64.apk ls -la $W/vystup/e-digiroot-podpora-TEST-arm64.apk fi step "HOTOVO"