This commit is contained in:
1 file changed
+106
-137
+106
-137
@@ -630,6 +630,50 @@ jobs:
|
|||||||
# tag itself. The bridge checkout is disposable and separate.
|
# tag itself. The bridge checkout is disposable and separate.
|
||||||
# -----------------------------------------------------------------------
|
# -----------------------------------------------------------------------
|
||||||
|
|
||||||
|
- name: Build Android native dependencies
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
set -euxo pipefail
|
||||||
|
|
||||||
|
cd rustdesk
|
||||||
|
|
||||||
|
echo "VCPKG_ROOT=${VCPKG_ROOT}"
|
||||||
|
echo "ANDROID_NDK_HOME=${ANDROID_NDK_HOME}"
|
||||||
|
|
||||||
|
if ! ./flutter/build_android_deps.sh "${ANDROID_ABI}"; then
|
||||||
|
echo
|
||||||
|
echo "Android dependency build failed."
|
||||||
|
echo "Dumping vcpkg logs:"
|
||||||
|
echo
|
||||||
|
|
||||||
|
find "${VCPKG_ROOT}" \
|
||||||
|
-name "*.log" \
|
||||||
|
-type f \
|
||||||
|
| while read -r logfile; do
|
||||||
|
echo "===== ${logfile} ====="
|
||||||
|
cat "${logfile}" || true
|
||||||
|
echo
|
||||||
|
done
|
||||||
|
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
test -d \
|
||||||
|
"${VCPKG_ROOT}/installed/arm64-android"
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------
|
||||||
|
# Build Rust native Android library.
|
||||||
|
# -----------------------------------------------------------------------
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------
|
||||||
|
# Permanent Android release signing.
|
||||||
|
#
|
||||||
|
# Required Gitea Actions secrets:
|
||||||
|
# ANDROID_KEYSTORE_BASE64
|
||||||
|
# ANDROID_KEYSTORE_PASSWORD
|
||||||
|
# ANDROID_KEY_ALIAS
|
||||||
|
# -----------------------------------------------------------------------
|
||||||
|
|
||||||
- name: Generate Flutter Rust bridge
|
- name: Generate Flutter Rust bridge
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
@@ -834,17 +878,68 @@ jobs:
|
|||||||
echo
|
echo
|
||||||
echo "Flutter Rust bridge generated successfully"
|
echo "Flutter Rust bridge generated successfully"
|
||||||
|
|
||||||
- name: Upload generated bridge
|
# IMPORTANT:
|
||||||
uses: actions/upload-artifact@v7
|
# Keep the native Rust build in this SAME run step. On this Gitea
|
||||||
with:
|
# Docker runner, generated/untracked files are not reliably visible
|
||||||
name: rustdesk-android-bridge-${{ env.RUSTDESK_VERSION }}
|
# after crossing a run/uses step boundary.
|
||||||
path: |
|
|
||||||
rustdesk-bridge/src/bridge_generated.rs
|
cd ../rustdesk
|
||||||
rustdesk-bridge/src/bridge_generated.io.rs
|
|
||||||
rustdesk-bridge/flutter/lib/generated_bridge.dart
|
echo
|
||||||
rustdesk-bridge/flutter/lib/generated_bridge.freezed.dart
|
echo "Copying generated bridge into main checkout..."
|
||||||
if-no-files-found: error
|
|
||||||
retention-days: 1
|
cp \
|
||||||
|
../rustdesk-bridge/src/bridge_generated.rs \
|
||||||
|
src/bridge_generated.rs
|
||||||
|
|
||||||
|
cp \
|
||||||
|
../rustdesk-bridge/src/bridge_generated.io.rs \
|
||||||
|
src/bridge_generated.io.rs
|
||||||
|
|
||||||
|
cp \
|
||||||
|
../rustdesk-bridge/flutter/lib/generated_bridge.dart \
|
||||||
|
flutter/lib/generated_bridge.dart
|
||||||
|
|
||||||
|
cp \
|
||||||
|
../rustdesk-bridge/flutter/lib/generated_bridge.freezed.dart \
|
||||||
|
flutter/lib/generated_bridge.freezed.dart
|
||||||
|
|
||||||
|
test -s src/bridge_generated.rs
|
||||||
|
test -s src/bridge_generated.io.rs
|
||||||
|
test -s flutter/lib/generated_bridge.dart
|
||||||
|
test -s flutter/lib/generated_bridge.freezed.dart
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "Bridge files immediately before native build:"
|
||||||
|
ls -lh \
|
||||||
|
src/bridge_generated.rs \
|
||||||
|
src/bridge_generated.io.rs \
|
||||||
|
flutter/lib/generated_bridge.dart \
|
||||||
|
flutter/lib/generated_bridge.freezed.dart
|
||||||
|
|
||||||
|
export RUSTUP_TOOLCHAIN="${RUST_VERSION}"
|
||||||
|
export PATH="${CARGO_HOME}/bin:${PATH}"
|
||||||
|
|
||||||
|
if ! rustup \
|
||||||
|
target list \
|
||||||
|
--installed \
|
||||||
|
--toolchain "${RUST_VERSION}" \
|
||||||
|
| grep -qx "${RUST_TARGET}"; then
|
||||||
|
|
||||||
|
echo "ERROR: ${RUST_TARGET} Rust target is missing"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "Building RustDesk native Android library..."
|
||||||
|
|
||||||
|
./flutter/ndk_arm64.sh
|
||||||
|
|
||||||
|
test -f \
|
||||||
|
"target/${RUST_TARGET}/release/liblibrustdesk.so"
|
||||||
|
|
||||||
|
ls -lh \
|
||||||
|
"target/${RUST_TARGET}/release/liblibrustdesk.so"
|
||||||
|
|
||||||
# -----------------------------------------------------------------------
|
# -----------------------------------------------------------------------
|
||||||
# Apply Flutter SDK compatibility patch(es) shipped by the selected tag.
|
# Apply Flutter SDK compatibility patch(es) shipped by the selected tag.
|
||||||
@@ -884,132 +979,6 @@ jobs:
|
|||||||
# Android native dependencies.
|
# Android native dependencies.
|
||||||
# -----------------------------------------------------------------------
|
# -----------------------------------------------------------------------
|
||||||
|
|
||||||
- name: Build Android native dependencies
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
set -euxo pipefail
|
|
||||||
|
|
||||||
cd rustdesk
|
|
||||||
|
|
||||||
echo "VCPKG_ROOT=${VCPKG_ROOT}"
|
|
||||||
echo "ANDROID_NDK_HOME=${ANDROID_NDK_HOME}"
|
|
||||||
|
|
||||||
if ! ./flutter/build_android_deps.sh "${ANDROID_ABI}"; then
|
|
||||||
echo
|
|
||||||
echo "Android dependency build failed."
|
|
||||||
echo "Dumping vcpkg logs:"
|
|
||||||
echo
|
|
||||||
|
|
||||||
find "${VCPKG_ROOT}" \
|
|
||||||
-name "*.log" \
|
|
||||||
-type f \
|
|
||||||
| while read -r logfile; do
|
|
||||||
echo "===== ${logfile} ====="
|
|
||||||
cat "${logfile}" || true
|
|
||||||
echo
|
|
||||||
done
|
|
||||||
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
test -d \
|
|
||||||
"${VCPKG_ROOT}/installed/arm64-android"
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------
|
|
||||||
# Restore generated bridge from Actions artifact.
|
|
||||||
#
|
|
||||||
# Using an artifact here avoids relying on filesystem persistence
|
|
||||||
# between run steps in the Gitea Docker runner.
|
|
||||||
# -----------------------------------------------------------------------
|
|
||||||
|
|
||||||
- name: Download generated bridge
|
|
||||||
uses: actions/download-artifact@v8
|
|
||||||
with:
|
|
||||||
name: rustdesk-android-bridge-${{ env.RUSTDESK_VERSION }}
|
|
||||||
path: bridge-download
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------
|
|
||||||
# Build Rust native Android library.
|
|
||||||
# -----------------------------------------------------------------------
|
|
||||||
|
|
||||||
- name: Build RustDesk native library
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
set -euxo pipefail
|
|
||||||
|
|
||||||
export RUSTUP_TOOLCHAIN="${RUST_VERSION}"
|
|
||||||
|
|
||||||
cd rustdesk
|
|
||||||
|
|
||||||
if ! rustup \
|
|
||||||
target list \
|
|
||||||
--installed \
|
|
||||||
--toolchain "${RUST_VERSION}" \
|
|
||||||
| grep -qx "${RUST_TARGET}"; then
|
|
||||||
|
|
||||||
echo "ERROR: ${RUST_TARGET} Rust target is missing"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo
|
|
||||||
echo "Restoring generated Flutter/Rust bridge before native build..."
|
|
||||||
|
|
||||||
test -f ../bridge-download/src/bridge_generated.rs
|
|
||||||
test -f ../bridge-download/src/bridge_generated.io.rs
|
|
||||||
test -f ../bridge-download/flutter/lib/generated_bridge.dart
|
|
||||||
test -f ../bridge-download/flutter/lib/generated_bridge.freezed.dart
|
|
||||||
|
|
||||||
cp \
|
|
||||||
../bridge-download/src/bridge_generated.rs \
|
|
||||||
src/bridge_generated.rs
|
|
||||||
|
|
||||||
cp \
|
|
||||||
../bridge-download/src/bridge_generated.io.rs \
|
|
||||||
src/bridge_generated.io.rs
|
|
||||||
|
|
||||||
cp \
|
|
||||||
../bridge-download/flutter/lib/generated_bridge.dart \
|
|
||||||
flutter/lib/generated_bridge.dart
|
|
||||||
|
|
||||||
cp \
|
|
||||||
../bridge-download/flutter/lib/generated_bridge.freezed.dart \
|
|
||||||
flutter/lib/generated_bridge.freezed.dart
|
|
||||||
|
|
||||||
test -s src/bridge_generated.rs
|
|
||||||
test -s src/bridge_generated.io.rs
|
|
||||||
test -s flutter/lib/generated_bridge.dart
|
|
||||||
test -s flutter/lib/generated_bridge.freezed.dart
|
|
||||||
|
|
||||||
echo "Bridge files immediately before cargo ndk:"
|
|
||||||
ls -lh \
|
|
||||||
src/bridge_generated.rs \
|
|
||||||
src/bridge_generated.io.rs \
|
|
||||||
flutter/lib/generated_bridge.dart \
|
|
||||||
flutter/lib/generated_bridge.freezed.dart
|
|
||||||
|
|
||||||
sha256sum \
|
|
||||||
src/bridge_generated.rs \
|
|
||||||
src/bridge_generated.io.rs \
|
|
||||||
flutter/lib/generated_bridge.dart \
|
|
||||||
flutter/lib/generated_bridge.freezed.dart
|
|
||||||
|
|
||||||
./flutter/ndk_arm64.sh
|
|
||||||
|
|
||||||
test -f \
|
|
||||||
"target/${RUST_TARGET}/release/liblibrustdesk.so"
|
|
||||||
|
|
||||||
ls -lh \
|
|
||||||
"target/${RUST_TARGET}/release/liblibrustdesk.so"
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------
|
|
||||||
# Permanent Android release signing.
|
|
||||||
#
|
|
||||||
# Required Gitea Actions secrets:
|
|
||||||
# ANDROID_KEYSTORE_BASE64
|
|
||||||
# ANDROID_KEYSTORE_PASSWORD
|
|
||||||
# ANDROID_KEY_ALIAS
|
|
||||||
# -----------------------------------------------------------------------
|
|
||||||
|
|
||||||
- name: Configure Android release signing
|
- name: Configure Android release signing
|
||||||
shell: bash
|
shell: bash
|
||||||
env:
|
env:
|
||||||
|
|||||||
Reference in new issue
Block a user