#!/usr/bin/env bash # 01-nastroje.sh – nástroje na stavbu RustDesk pre Android (WSL Ubuntu 24.04, spúšťa sa ako root). # Verzie podľa oficiálneho CI RustDesku 1.5.0 (.github/workflows/flutter-build.yml, bridge.yml). # Dá sa spustiť opakovane – hotové kroky preskočí. set -euo pipefail E=/opt/edr mkdir -p "$E" export RUSTUP_HOME=$E/rustup CARGO_HOME=$E/cargo export PATH=$E/cargo/bin:$E/flutter/bin:$PATH 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)" "$*"; } step "apt" export DEBIAN_FRONTEND=noninteractive apt-get install -y -qq gcc-multilib g++-multilib libgtk-3-dev libasound2-dev libpulse-dev libva-dev \ libxcb-randr0-dev libxcb-shape0-dev libxcb-xfixes0-dev libxdo-dev libxfixes-dev libunwind-dev \ libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libayatana-appindicator3-dev >/dev/null step "Rust 1.75" if [ ! -x $E/cargo/bin/rustup ]; then curl -sSf https://sh.rustup.rs | sh -s -- -y --no-modify-path --default-toolchain 1.75 --profile minimal -c rustfmt fi rustup default 1.75 rustup target add aarch64-linux-android armv7-linux-androideabi x86_64-linux-android x86_64-unknown-linux-gnu step "Android NDK r28c" if [ ! -d $ANDROID_NDK_HOME ]; then wget -q -O /tmp/ndk.zip https://dl.google.com/android/repository/android-ndk-r28c-linux.zip unzip -q /tmp/ndk.zip -d $E && rm /tmp/ndk.zip fi step "Android SDK (cmdline-tools, platform 36, build-tools)" if [ ! -x $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager ]; then wget -q -O /tmp/cmd.zip https://dl.google.com/android/repository/commandlinetools-linux-13114758_latest.zip mkdir -p $ANDROID_HOME/cmdline-tools && unzip -q /tmp/cmd.zip -d $ANDROID_HOME/cmdline-tools mv $ANDROID_HOME/cmdline-tools/cmdline-tools $ANDROID_HOME/cmdline-tools/latest && rm /tmp/cmd.zip fi yes | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager --licenses >/dev/null || true $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager "platform-tools" "platforms;android-36" "platforms;android-35" "build-tools;36.0.0" "build-tools;35.0.0" >/dev/null step "Flutter 3.24.5 (+ patch z CI)" if [ ! -d $E/flutter ]; then git clone -q --depth 1 --branch 3.24.5 https://github.com/flutter/flutter.git $E/flutter (cd $E/flutter && git apply $E/rustdesk/.github/patches/flutter_3.24.4_dropdown_menu_enableFilter.diff) fi git config --global --add safe.directory '*' flutter config --no-analytics >/dev/null flutter config --android-sdk $ANDROID_HOME >/dev/null flutter precache --android >/dev/null flutter --version | head -1 step "vcpkg" if [ ! -d $VCPKG_ROOT ]; then git clone -q https://github.com/microsoft/vcpkg.git $VCPKG_ROOT (cd $VCPKG_ROOT && git checkout -q 9e593bb18ea69cc5095e012465dcd675a822ed0d && ./bootstrap-vcpkg.sh -disableMetrics >/dev/null) fi step "cargo-ndk, cargo-expand, flutter_rust_bridge_codegen" command -v cargo-ndk >/dev/null || cargo install -q cargo-ndk --version 3.1.2 --locked command -v cargo-expand >/dev/null || cargo install -q cargo-expand --version 1.0.95 --locked command -v flutter_rust_bridge_codegen >/dev/null || cargo install -q flutter_rust_bridge_codegen --version 1.80.1 --features uuid --locked step "HOTOVO – nástroje pripravené" df -h / | tail -1