Fix F-Droid build and bump Android NDK to r27c (#10105)
* Fix fdroid build * Refactor recent @fufesou edits to reflect the fact that .gclient file is needed only on x86 to build jit-release version of flutter-engine and `flutter-sdk` directory is not affected by flutter version checkouts * Install cargo-ndk and flutter-rust-codegen with `--locked` argument to avoid bumping `cargo-platform` to require newer Rust toolchain Signed-off-by: Vasyl Gello <vasek.gello@gmail.com> * Bump Android NDK to r27c Signed-off-by: Vasyl Gello <vasek.gello@gmail.com> --------- Signed-off-by: Vasyl Gello <vasek.gello@gmail.com>
This commit is contained in:
parent
d3f0c80e94
commit
e0ed6ee986
2
.github/workflows/flutter-build.yml
vendored
2
.github/workflows/flutter-build.yml
vendored
@ -34,7 +34,7 @@ env:
|
|||||||
# vcpkg version: 2024.07.12
|
# vcpkg version: 2024.07.12
|
||||||
VCPKG_COMMIT_ID: "1de2026f28ead93ff1773e6e680387643e914ea1"
|
VCPKG_COMMIT_ID: "1de2026f28ead93ff1773e6e680387643e914ea1"
|
||||||
VERSION: "1.3.3"
|
VERSION: "1.3.3"
|
||||||
NDK_VERSION: "r27b"
|
NDK_VERSION: "r27c"
|
||||||
#signing keys env variable checks
|
#signing keys env variable checks
|
||||||
ANDROID_SIGNING_KEY: "${{ secrets.ANDROID_SIGNING_KEY }}"
|
ANDROID_SIGNING_KEY: "${{ secrets.ANDROID_SIGNING_KEY }}"
|
||||||
MACOS_P12_BASE64: "${{ secrets.MACOS_P12_BASE64 }}"
|
MACOS_P12_BASE64: "${{ secrets.MACOS_P12_BASE64 }}"
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
set -x
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Script to build F-Droid release of RustDesk
|
# Script to build F-Droid release of RustDesk
|
||||||
#
|
#
|
||||||
@ -23,6 +21,43 @@ set -x
|
|||||||
# + build: perform actual build of APK file
|
# + build: perform actual build of APK file
|
||||||
#
|
#
|
||||||
|
|
||||||
|
# Start of functions
|
||||||
|
|
||||||
|
# Install Flutter of version `VERSION` from Github repository
|
||||||
|
# into directory `FLUTTER_DIR` and apply patches if needed
|
||||||
|
|
||||||
|
prepare_flutter() {
|
||||||
|
VERSION="${1}"
|
||||||
|
FLUTTER_DIR="${2}"
|
||||||
|
|
||||||
|
if [ ! -f "${FLUTTER_DIR}/bin/flutter" ]; then
|
||||||
|
git clone https://github.com/flutter/flutter "${FLUTTER_DIR}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
pushd "${FLUTTER_DIR}"
|
||||||
|
|
||||||
|
git restore .
|
||||||
|
git checkout "${VERSION}"
|
||||||
|
|
||||||
|
# Patch flutter
|
||||||
|
|
||||||
|
if dpkg --compare-versions "${VERSION}" ge "3.24.4"; then
|
||||||
|
git apply "${ROOTDIR}/.github/patches/flutter_3.24.4_dropdown_menu_enableFilter.diff"
|
||||||
|
fi
|
||||||
|
|
||||||
|
flutter config --no-analytics
|
||||||
|
|
||||||
|
popd # ${FLUTTER_DIR}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Start of script
|
||||||
|
|
||||||
|
set -x
|
||||||
|
|
||||||
|
# Note current working directory as root dir for patches
|
||||||
|
|
||||||
|
ROOTDIR="${PWD}"
|
||||||
|
|
||||||
# Parse command-line arguments
|
# Parse command-line arguments
|
||||||
|
|
||||||
VERNAME="${1}"
|
VERNAME="${1}"
|
||||||
@ -82,21 +117,6 @@ export PATH="${PATH}:${HOME}/flutter/bin:${HOME}/depot_tools"
|
|||||||
|
|
||||||
export VCPKG_ROOT="${HOME}/vcpkg"
|
export VCPKG_ROOT="${HOME}/vcpkg"
|
||||||
|
|
||||||
prepare_Flutter() {
|
|
||||||
version="${1}"
|
|
||||||
|
|
||||||
pushd "${HOME}"
|
|
||||||
if [ ! -f "${HOME}/flutter/bin/flutter" ]; then
|
|
||||||
git clone https://github.com/flutter/flutter
|
|
||||||
fi
|
|
||||||
pushd flutter
|
|
||||||
git restore .
|
|
||||||
git checkout "${version}"
|
|
||||||
flutter config --no-analytics
|
|
||||||
popd # flutter
|
|
||||||
popd # ${HOME}
|
|
||||||
}
|
|
||||||
|
|
||||||
# Now act depending on build step
|
# Now act depending on build step
|
||||||
|
|
||||||
# NOTE: F-Droid maintainers require explicit declaration of dependencies
|
# NOTE: F-Droid maintainers require explicit declaration of dependencies
|
||||||
@ -116,15 +136,20 @@ prebuild)
|
|||||||
.env.CARGO_NDK_VERSION \
|
.env.CARGO_NDK_VERSION \
|
||||||
.github/workflows/flutter-build.yml)"
|
.github/workflows/flutter-build.yml)"
|
||||||
|
|
||||||
|
# Flutter used to compile main Rustdesk library
|
||||||
|
|
||||||
FLUTTER_VERSION="$(yq -r \
|
FLUTTER_VERSION="$(yq -r \
|
||||||
.env.ANDROID_FLUTTER_VERSION \
|
.env.ANDROID_FLUTTER_VERSION \
|
||||||
.github/workflows/flutter-build.yml)"
|
.github/workflows/flutter-build.yml)"
|
||||||
|
|
||||||
if [ -z "${FLUTTER_VERSION}" ]; then
|
if [ -z "${FLUTTER_VERSION}" ]; then
|
||||||
FLUTTER_VERSION="$(yq -r \
|
FLUTTER_VERSION="$(yq -r \
|
||||||
.env.FLUTTER_VERSION \
|
.env.FLUTTER_VERSION \
|
||||||
.github/workflows/flutter-build.yml)"
|
.github/workflows/flutter-build.yml)"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Flutter used to compile Flutter<->Rust bridge files
|
||||||
|
|
||||||
FLUTTER_BRIDGE_VERSION="$(yq -r \
|
FLUTTER_BRIDGE_VERSION="$(yq -r \
|
||||||
.env.FLUTTER_VERSION \
|
.env.FLUTTER_VERSION \
|
||||||
.github/workflows/bridge.yml)"
|
.github/workflows/bridge.yml)"
|
||||||
@ -207,14 +232,16 @@ prebuild)
|
|||||||
|
|
||||||
cargo install \
|
cargo install \
|
||||||
cargo-ndk \
|
cargo-ndk \
|
||||||
--version "${CARGO_NDK_VERSION}"
|
--version "${CARGO_NDK_VERSION}" \
|
||||||
|
--locked
|
||||||
|
|
||||||
# Install rust bridge generator
|
# Install rust bridge generator
|
||||||
|
|
||||||
cargo install cargo-expand
|
cargo install cargo-expand
|
||||||
cargo install flutter_rust_bridge_codegen \
|
cargo install flutter_rust_bridge_codegen \
|
||||||
--version "${FLUTTER_RUST_BRIDGE_VERSION}" \
|
--version "${FLUTTER_RUST_BRIDGE_VERSION}" \
|
||||||
--features "uuid"
|
--features "uuid" \
|
||||||
|
--locked
|
||||||
|
|
||||||
# Populate native vcpkg dependencies
|
# Populate native vcpkg dependencies
|
||||||
|
|
||||||
@ -277,46 +304,66 @@ prebuild)
|
|||||||
|
|
||||||
git apply res/fdroid/patches/*.patch
|
git apply res/fdroid/patches/*.patch
|
||||||
|
|
||||||
# Backup .gclient file, for later restore
|
# If Flutter version used to generate bridge files differs from Flutter
|
||||||
|
# version used to compile Rustdesk library, generate bridge using the
|
||||||
|
# `FLUTTER_BRIDGE_VERSION` an restore the pubspec later
|
||||||
|
|
||||||
cp flutter-sdk/.gclient flutter-sdk/.gclient.bak
|
if [ "${FLUTTER_VERSION}" != "${FLUTTER_BRIDGE_VERSION}" ]; then
|
||||||
|
# Install Flutter bridge version
|
||||||
|
|
||||||
# For FLUTTER_BRIDGE_VERSION
|
prepare_flutter "${FLUTTER_BRIDGE_VERSION}" "${HOME}/flutter"
|
||||||
sed \
|
|
||||||
-i \
|
|
||||||
-e 's/extended_text: 14.0.0/extended_text: 13.0.0/g' \
|
|
||||||
flutter/pubspec.yaml
|
|
||||||
|
|
||||||
# Install Flutter bridge version
|
# Save changes
|
||||||
prepare_Flutter "${FLUTTER_BRIDGE_VERSION}"
|
|
||||||
cp flutter-sdk/.gclient.bak flutter-sdk/.gclient
|
|
||||||
sed -i "s/FLUTTER_VERSION_PLACEHOLDER/${FLUTTER_BRIDGE_VERSION}/" flutter-sdk/.gclient
|
|
||||||
|
|
||||||
# Download Flutter dependencies
|
git add .
|
||||||
pushd flutter
|
|
||||||
flutter clean && flutter packages pub get
|
|
||||||
popd # flutter
|
|
||||||
|
|
||||||
# Generate FFI bindings
|
# Edit pubspec to make flutter bridge version work
|
||||||
flutter_rust_bridge_codegen \
|
|
||||||
--rust-input ./src/flutter_ffi.rs \
|
|
||||||
--dart-output ./flutter/lib/generated_bridge.dart
|
|
||||||
|
|
||||||
git restore flutter/pubspec.*
|
sed \
|
||||||
|
-i \
|
||||||
|
-e 's/extended_text: 14.0.0/extended_text: 13.0.0/g' \
|
||||||
|
flutter/pubspec.yaml
|
||||||
|
|
||||||
# Install Flutter
|
# Download Flutter dependencies
|
||||||
prepare_Flutter "${FLUTTER_VERSION}"
|
|
||||||
cp flutter-sdk/.gclient.bak flutter-sdk/.gclient
|
pushd flutter
|
||||||
sed -i "s/FLUTTER_VERSION_PLACEHOLDER/${FLUTTER_VERSION}/" flutter-sdk/.gclient
|
|
||||||
|
flutter clean
|
||||||
|
flutter packages pub get
|
||||||
|
|
||||||
|
popd # flutter
|
||||||
|
|
||||||
|
# Generate FFI bindings
|
||||||
|
|
||||||
|
flutter_rust_bridge_codegen \
|
||||||
|
--rust-input ./src/flutter_ffi.rs \
|
||||||
|
--dart-output ./flutter/lib/generated_bridge.dart
|
||||||
|
|
||||||
|
# Add bridge files to save-list
|
||||||
|
|
||||||
|
git add -f ./flutter/lib/generated_bridge.* ./src/bridge_generated.*
|
||||||
|
|
||||||
|
# Restore everything
|
||||||
|
|
||||||
|
git checkout '*'
|
||||||
|
git clean -dffx
|
||||||
|
git reset
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Install Flutter version for RustDesk library build
|
||||||
|
|
||||||
|
prepare_flutter "${FLUTTER_VERSION}" "${HOME}/flutter"
|
||||||
|
|
||||||
# gms is not in thoes files now, but we still keep the following line for future reference(maybe).
|
# gms is not in thoes files now, but we still keep the following line for future reference(maybe).
|
||||||
|
|
||||||
sed \
|
sed \
|
||||||
-i \
|
-i \
|
||||||
-e '/gms/d' \
|
-e '/gms/d' \
|
||||||
flutter/android/build.gradle \
|
flutter/android/build.gradle \
|
||||||
flutter/android/app/build.gradle
|
flutter/android/app/build.gradle
|
||||||
|
|
||||||
# `firebase_analytics`` is not in thoes files now, but we still keep the following lines.
|
# `firebase_analytics` is not in these files now, but we still keep the following lines.
|
||||||
|
|
||||||
sed \
|
sed \
|
||||||
-i \
|
-i \
|
||||||
-e '/firebase_analytics/d' \
|
-e '/firebase_analytics/d' \
|
||||||
@ -343,9 +390,12 @@ build)
|
|||||||
# '.github/workflows/flutter-build.yml'
|
# '.github/workflows/flutter-build.yml'
|
||||||
#
|
#
|
||||||
|
|
||||||
|
# Flutter used to compile main Rustdesk library
|
||||||
|
|
||||||
FLUTTER_VERSION="$(yq -r \
|
FLUTTER_VERSION="$(yq -r \
|
||||||
.env.ANDROID_FLUTTER_VERSION \
|
.env.ANDROID_FLUTTER_VERSION \
|
||||||
.github/workflows/flutter-build.yml)"
|
.github/workflows/flutter-build.yml)"
|
||||||
|
|
||||||
if [ -z "${FLUTTER_VERSION}" ]; then
|
if [ -z "${FLUTTER_VERSION}" ]; then
|
||||||
FLUTTER_VERSION="$(yq -r \
|
FLUTTER_VERSION="$(yq -r \
|
||||||
.env.FLUTTER_VERSION \
|
.env.FLUTTER_VERSION \
|
||||||
@ -381,7 +431,8 @@ build)
|
|||||||
|
|
||||||
pushd flutter
|
pushd flutter
|
||||||
|
|
||||||
flutter clean && flutter packages pub get
|
flutter clean
|
||||||
|
flutter packages pub get
|
||||||
|
|
||||||
popd # flutter
|
popd # flutter
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user