move to prebuild docker image
Build RustDesk Android / Build RustDesk Android ARM64 (push) Successful in 13m13s
Build RustDesk Android / Build RustDesk Android ARM64 (push) Successful in 13m13s
This commit is contained in:
1 file changed
+117
-318
+117
-318
@@ -10,71 +10,63 @@ on:
|
|||||||
|
|
||||||
env:
|
env:
|
||||||
RUSTDESK_VERSION: "1.4.9"
|
RUSTDESK_VERSION: "1.4.9"
|
||||||
|
ANDROID_BUILD_TOOLS_VERSION: "34.0.0"
|
||||||
RUST_VERSION: "1.75"
|
|
||||||
CARGO_NDK_VERSION: "3.1.2"
|
|
||||||
|
|
||||||
CARGO_EXPAND_VERSION: "1.0.95"
|
|
||||||
FLUTTER_RUST_BRIDGE_VERSION: "1.80.1"
|
|
||||||
|
|
||||||
BRIDGE_FLUTTER_VERSION: "3.22.3"
|
|
||||||
ANDROID_FLUTTER_VERSION: "3.24.5"
|
|
||||||
|
|
||||||
ANDROID_NDK_VERSION: "28.2.13676358"
|
|
||||||
|
|
||||||
VCPKG_COMMIT_ID: "120deac3062162151622ca4860575a33844ba10b"
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-android:
|
build-android:
|
||||||
name: Build RustDesk Android ARM64
|
name: Build RustDesk Android ARM64
|
||||||
runs-on: ubuntu-24.04
|
runs-on: rustdesk-android
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
# -----------------------------------------------------------------------
|
# -----------------------------------------------------------------------
|
||||||
# System dependencies
|
# Verify prebuilt builder image
|
||||||
# -----------------------------------------------------------------------
|
# -----------------------------------------------------------------------
|
||||||
|
|
||||||
- name: Install system dependencies
|
- name: Verify builder environment
|
||||||
run: |
|
run: |
|
||||||
set -euxo pipefail
|
set -euxo pipefail
|
||||||
|
|
||||||
sudo apt-get update
|
echo "=== Java ==="
|
||||||
|
java -version
|
||||||
|
|
||||||
sudo apt-get install -y \
|
echo
|
||||||
ca-certificates \
|
echo "=== Rust ==="
|
||||||
clang \
|
rustc --version
|
||||||
cmake \
|
cargo --version
|
||||||
curl \
|
rustup target list --installed
|
||||||
gcc \
|
|
||||||
gcc-multilib \
|
echo
|
||||||
g++ \
|
echo "=== Cargo tools ==="
|
||||||
g++-multilib \
|
cargo ndk --version
|
||||||
git \
|
cargo expand --version
|
||||||
libayatana-appindicator3-dev \
|
flutter_rust_bridge_codegen --version
|
||||||
libasound2-dev \
|
|
||||||
libc6-dev \
|
echo
|
||||||
libclang-dev \
|
echo "=== Android SDK / NDK ==="
|
||||||
libunwind-dev \
|
echo "ANDROID_SDK_ROOT=${ANDROID_SDK_ROOT}"
|
||||||
libgstreamer1.0-dev \
|
echo "ANDROID_NDK_HOME=${ANDROID_NDK_HOME}"
|
||||||
libgstreamer-plugins-base1.0-dev \
|
sdkmanager --version
|
||||||
libgtk-3-dev \
|
test -d "${ANDROID_NDK_HOME}"
|
||||||
libpam0g-dev \
|
test -x "${ANDROID_SDK_ROOT}/build-tools/${ANDROID_BUILD_TOOLS_VERSION}/apksigner"
|
||||||
libpulse-dev \
|
|
||||||
libva-dev \
|
echo
|
||||||
libxcb-randr0-dev \
|
echo "=== Flutter bridge ==="
|
||||||
libxcb-shape0-dev \
|
test -x "${FLUTTER_BRIDGE_HOME}/bin/flutter"
|
||||||
libxcb-xfixes0-dev \
|
"${FLUTTER_BRIDGE_HOME}/bin/flutter" --version
|
||||||
libxdo-dev \
|
|
||||||
libxfixes-dev \
|
echo
|
||||||
llvm-dev \
|
echo "=== Flutter Android ==="
|
||||||
nasm \
|
test -x "${FLUTTER_ANDROID_HOME}/bin/flutter"
|
||||||
ninja-build \
|
"${FLUTTER_ANDROID_HOME}/bin/flutter" --version
|
||||||
openjdk-17-jdk-headless \
|
|
||||||
pkg-config \
|
echo
|
||||||
tree \
|
echo "=== vcpkg ==="
|
||||||
unzip \
|
test -x "${VCPKG_ROOT}/vcpkg"
|
||||||
wget \
|
"${VCPKG_ROOT}/vcpkg" version
|
||||||
xz-utils
|
test -d "${VCPKG_ROOT}/installed/arm64-android"
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "Builder environment OK"
|
||||||
|
|
||||||
# -----------------------------------------------------------------------
|
# -----------------------------------------------------------------------
|
||||||
# RustDesk source
|
# RustDesk source
|
||||||
@@ -84,6 +76,8 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
set -euxo pipefail
|
set -euxo pipefail
|
||||||
|
|
||||||
|
rm -rf rustdesk
|
||||||
|
|
||||||
git clone \
|
git clone \
|
||||||
--branch "${RUSTDESK_VERSION}" \
|
--branch "${RUSTDESK_VERSION}" \
|
||||||
--depth 1 \
|
--depth 1 \
|
||||||
@@ -97,6 +91,7 @@ jobs:
|
|||||||
echo "RustDesk commit:"
|
echo "RustDesk commit:"
|
||||||
git rev-parse HEAD
|
git rev-parse HEAD
|
||||||
|
|
||||||
|
echo
|
||||||
echo "RustDesk tag:"
|
echo "RustDesk tag:"
|
||||||
git describe --tags --always
|
git describe --tags --always
|
||||||
|
|
||||||
@@ -106,7 +101,6 @@ jobs:
|
|||||||
|
|
||||||
# -----------------------------------------------------------------------
|
# -----------------------------------------------------------------------
|
||||||
# Custom RustDesk ID server + public key
|
# Custom RustDesk ID server + public key
|
||||||
#
|
|
||||||
# Relay is NOT modified.
|
# Relay is NOT modified.
|
||||||
# -----------------------------------------------------------------------
|
# -----------------------------------------------------------------------
|
||||||
|
|
||||||
@@ -130,6 +124,7 @@ jobs:
|
|||||||
cd rustdesk
|
cd rustdesk
|
||||||
|
|
||||||
python3 <<'PY'
|
python3 <<'PY'
|
||||||
|
import json
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
@@ -153,16 +148,21 @@ jobs:
|
|||||||
if not server_key:
|
if not server_key:
|
||||||
raise SystemExit("RUSTDESK_KEY is empty")
|
raise SystemExit("RUSTDESK_KEY is empty")
|
||||||
|
|
||||||
|
# json.dumps() produces a correctly escaped quoted string which is
|
||||||
|
# also valid as a Rust string literal for these values.
|
||||||
|
id_server_literal = json.dumps(id_server)
|
||||||
|
server_key_literal = json.dumps(server_key)
|
||||||
|
|
||||||
text, id_count = re.subn(
|
text, id_count = re.subn(
|
||||||
r'pub const RENDEZVOUS_SERVERS:\s*&\[&str\]\s*=\s*&\[[^\n]*\];',
|
r'pub const RENDEZVOUS_SERVERS:\s*&\[&str\]\s*=\s*&\[[^\n]*\];',
|
||||||
f'pub const RENDEZVOUS_SERVERS: &[&str] = &["{id_server}"];',
|
f'pub const RENDEZVOUS_SERVERS: &[&str] = &[{id_server_literal}];',
|
||||||
text,
|
text,
|
||||||
count=1,
|
count=1,
|
||||||
)
|
)
|
||||||
|
|
||||||
text, key_count = re.subn(
|
text, key_count = re.subn(
|
||||||
r'pub const RS_PUB_KEY:\s*&str\s*=\s*"[^"]*";',
|
r'pub const RS_PUB_KEY:\s*&str\s*=\s*"[^"]*";',
|
||||||
f'pub const RS_PUB_KEY: &str = "{server_key}";',
|
f'pub const RS_PUB_KEY: &str = {server_key_literal};',
|
||||||
text,
|
text,
|
||||||
count=1,
|
count=1,
|
||||||
)
|
)
|
||||||
@@ -193,14 +193,12 @@ jobs:
|
|||||||
|
|
||||||
if grep -q 'rs-ny\.rustdesk\.com' \
|
if grep -q 'rs-ny\.rustdesk\.com' \
|
||||||
libs/hbb_common/src/config.rs; then
|
libs/hbb_common/src/config.rs; then
|
||||||
|
|
||||||
echo "ERROR: Default RustDesk ID server is still present"
|
echo "ERROR: Default RustDesk ID server is still present"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! grep -q 'pub const RS_PUB_KEY' \
|
if ! grep -q 'pub const RS_PUB_KEY' \
|
||||||
libs/hbb_common/src/config.rs; then
|
libs/hbb_common/src/config.rs; then
|
||||||
|
|
||||||
echo "ERROR: RS_PUB_KEY was not found"
|
echo "ERROR: RS_PUB_KEY was not found"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
@@ -209,149 +207,39 @@ jobs:
|
|||||||
echo "Relay configuration untouched: yes"
|
echo "Relay configuration untouched: yes"
|
||||||
|
|
||||||
# -----------------------------------------------------------------------
|
# -----------------------------------------------------------------------
|
||||||
# Rust
|
# Generate Flutter/Rust bridge with Flutter 3.22.3.
|
||||||
# -----------------------------------------------------------------------
|
#
|
||||||
|
# RustDesk 1.4.9 temporarily needs extended_text 13.0.0 for this stage.
|
||||||
- name: Install Rust
|
# We restore 14.0.0 immediately afterwards for the Android build.
|
||||||
run: |
|
|
||||||
set -euxo pipefail
|
|
||||||
|
|
||||||
curl \
|
|
||||||
--proto '=https' \
|
|
||||||
--tlsv1.2 \
|
|
||||||
-sSf \
|
|
||||||
https://sh.rustup.rs \
|
|
||||||
| sh -s -- \
|
|
||||||
-y \
|
|
||||||
--default-toolchain "${RUST_VERSION}"
|
|
||||||
|
|
||||||
source "${HOME}/.cargo/env"
|
|
||||||
|
|
||||||
rustc --version
|
|
||||||
cargo --version
|
|
||||||
|
|
||||||
rustup target add aarch64-linux-android
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------
|
|
||||||
# Android SDK + NDK
|
|
||||||
# -----------------------------------------------------------------------
|
|
||||||
|
|
||||||
- name: Install Android SDK
|
|
||||||
uses: android-actions/setup-android@v3
|
|
||||||
|
|
||||||
- name: Install Android packages
|
|
||||||
run: |
|
|
||||||
set -euxo pipefail
|
|
||||||
|
|
||||||
yes | sdkmanager --licenses >/dev/null || true
|
|
||||||
|
|
||||||
sdkmanager \
|
|
||||||
"platform-tools" \
|
|
||||||
"platforms;android-34" \
|
|
||||||
"build-tools;34.0.0" \
|
|
||||||
"ndk;${ANDROID_NDK_VERSION}"
|
|
||||||
|
|
||||||
echo \
|
|
||||||
"ANDROID_NDK_HOME=${ANDROID_SDK_ROOT}/ndk/${ANDROID_NDK_VERSION}" \
|
|
||||||
>> "${GITHUB_ENV}"
|
|
||||||
|
|
||||||
echo \
|
|
||||||
"ANDROID_NDK_ROOT=${ANDROID_SDK_ROOT}/ndk/${ANDROID_NDK_VERSION}" \
|
|
||||||
>> "${GITHUB_ENV}"
|
|
||||||
|
|
||||||
echo \
|
|
||||||
"ANDROID_NDK=${ANDROID_SDK_ROOT}/ndk/${ANDROID_NDK_VERSION}" \
|
|
||||||
>> "${GITHUB_ENV}"
|
|
||||||
|
|
||||||
echo "Android SDK:"
|
|
||||||
echo "${ANDROID_SDK_ROOT}"
|
|
||||||
|
|
||||||
echo
|
|
||||||
echo "Android NDK:"
|
|
||||||
ls -la \
|
|
||||||
"${ANDROID_SDK_ROOT}/ndk/${ANDROID_NDK_VERSION}"
|
|
||||||
|
|
||||||
echo
|
|
||||||
echo "Android build tools:"
|
|
||||||
ls -la \
|
|
||||||
"${ANDROID_SDK_ROOT}/build-tools/34.0.0"
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------
|
|
||||||
# Flutter 3.22.3 for flutter-rust-bridge generation
|
|
||||||
# -----------------------------------------------------------------------
|
|
||||||
|
|
||||||
- name: Install Flutter for bridge generation
|
|
||||||
run: |
|
|
||||||
set -euxo pipefail
|
|
||||||
|
|
||||||
mkdir -p "${HOME}/flutter-sdks"
|
|
||||||
|
|
||||||
curl \
|
|
||||||
-L \
|
|
||||||
"https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_${BRIDGE_FLUTTER_VERSION}-stable.tar.xz" \
|
|
||||||
-o /tmp/flutter-bridge.tar.xz
|
|
||||||
|
|
||||||
tar \
|
|
||||||
-xf /tmp/flutter-bridge.tar.xz \
|
|
||||||
-C "${HOME}/flutter-sdks"
|
|
||||||
|
|
||||||
mv \
|
|
||||||
"${HOME}/flutter-sdks/flutter" \
|
|
||||||
"${HOME}/flutter-sdks/flutter-${BRIDGE_FLUTTER_VERSION}"
|
|
||||||
|
|
||||||
"${HOME}/flutter-sdks/flutter-${BRIDGE_FLUTTER_VERSION}/bin/flutter" \
|
|
||||||
config \
|
|
||||||
--no-analytics
|
|
||||||
|
|
||||||
"${HOME}/flutter-sdks/flutter-${BRIDGE_FLUTTER_VERSION}/bin/flutter" \
|
|
||||||
--version
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------
|
|
||||||
# Generate Flutter/Rust bridge
|
|
||||||
# -----------------------------------------------------------------------
|
# -----------------------------------------------------------------------
|
||||||
|
|
||||||
- name: Generate Flutter Rust bridge
|
- name: Generate Flutter Rust bridge
|
||||||
run: |
|
run: |
|
||||||
set -euxo pipefail
|
set -euxo pipefail
|
||||||
|
|
||||||
source "${HOME}/.cargo/env"
|
export PATH="${FLUTTER_BRIDGE_HOME}/bin:${CARGO_HOME}/bin:${PATH}"
|
||||||
|
|
||||||
export PATH="${HOME}/flutter-sdks/flutter-${BRIDGE_FLUTTER_VERSION}/bin:${PATH}"
|
echo "Bridge Flutter:"
|
||||||
|
flutter --version
|
||||||
cargo install \
|
|
||||||
cargo-expand \
|
|
||||||
--version "${CARGO_EXPAND_VERSION}" \
|
|
||||||
--locked
|
|
||||||
|
|
||||||
cargo install \
|
|
||||||
flutter_rust_bridge_codegen \
|
|
||||||
--version "${FLUTTER_RUST_BRIDGE_VERSION}" \
|
|
||||||
--features uuid \
|
|
||||||
--locked
|
|
||||||
|
|
||||||
cd rustdesk
|
cd rustdesk
|
||||||
|
|
||||||
# -------------------------------------------------------------------
|
if ! grep -q 'extended_text: 14.0.0' flutter/pubspec.yaml; then
|
||||||
# Flutter 3.22.3 cannot resolve extended_text 14.0.0.
|
echo "ERROR: Expected extended_text 14.0.0 before bridge generation"
|
||||||
#
|
grep -n "extended_text:" flutter/pubspec.yaml || true
|
||||||
# Upstream RustDesk downgrades it to 13.0.0 ONLY while generating
|
exit 1
|
||||||
# flutter-rust-bridge files.
|
fi
|
||||||
#
|
|
||||||
# Android itself is built with Flutter 3.24.5 and MUST use
|
|
||||||
# extended_text 14.0.0.
|
|
||||||
# -------------------------------------------------------------------
|
|
||||||
|
|
||||||
sed -i \
|
sed -i \
|
||||||
's/extended_text: 14.0.0/extended_text: 13.0.0/g' \
|
's/extended_text: 14.0.0/extended_text: 13.0.0/g' \
|
||||||
flutter/pubspec.yaml
|
flutter/pubspec.yaml
|
||||||
|
|
||||||
|
echo
|
||||||
echo "Bridge dependency:"
|
echo "Bridge dependency:"
|
||||||
grep -n "extended_text:" flutter/pubspec.yaml
|
grep -n "extended_text:" flutter/pubspec.yaml
|
||||||
|
|
||||||
pushd flutter
|
pushd flutter
|
||||||
|
|
||||||
flutter pub get
|
flutter pub get
|
||||||
|
|
||||||
popd
|
popd
|
||||||
|
|
||||||
flutter_rust_bridge_codegen \
|
flutter_rust_bridge_codegen \
|
||||||
@@ -370,15 +258,9 @@ jobs:
|
|||||||
test -f flutter/macos/Runner/bridge_generated.h
|
test -f flutter/macos/Runner/bridge_generated.h
|
||||||
test -f flutter/ios/Runner/bridge_generated.h
|
test -f flutter/ios/Runner/bridge_generated.h
|
||||||
|
|
||||||
# -------------------------------------------------------------------
|
# Restore the original Android dependency versions. Upstream performs
|
||||||
# IMPORTANT:
|
# bridge and Android builds from separate checkouts; we reproduce that
|
||||||
# Restore original RustDesk Flutter dependencies after bridge
|
# behaviour inside one job.
|
||||||
# generation.
|
|
||||||
#
|
|
||||||
# This reproduces upstream RustDesk CI behaviour where bridge and
|
|
||||||
# Android builds run in separate jobs/checkouts.
|
|
||||||
# -------------------------------------------------------------------
|
|
||||||
|
|
||||||
git checkout -- \
|
git checkout -- \
|
||||||
flutter/pubspec.yaml \
|
flutter/pubspec.yaml \
|
||||||
flutter/pubspec.lock
|
flutter/pubspec.lock
|
||||||
@@ -396,105 +278,31 @@ jobs:
|
|||||||
|
|
||||||
echo
|
echo
|
||||||
echo "Flutter Rust bridge generated successfully"
|
echo "Flutter Rust bridge generated successfully"
|
||||||
echo "extended_text restored to 14.0.0 for Android build"
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------
|
# -----------------------------------------------------------------------
|
||||||
# Flutter 3.24.5 for Android build
|
# Android native dependencies.
|
||||||
|
#
|
||||||
|
# They are prebuilt in rustdesk-android-builder:1.4.9-r1. Running the
|
||||||
|
# upstream manifest command here verifies the exact RustDesk 1.4.9 state
|
||||||
|
# and should reuse /opt/vcpkg/installed/arm64-android.
|
||||||
# -----------------------------------------------------------------------
|
# -----------------------------------------------------------------------
|
||||||
|
|
||||||
- name: Install Android Flutter
|
- name: Verify Android native dependencies
|
||||||
run: |
|
run: |
|
||||||
set -euxo pipefail
|
set -euxo pipefail
|
||||||
|
|
||||||
curl \
|
|
||||||
-L \
|
|
||||||
"https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_${ANDROID_FLUTTER_VERSION}-stable.tar.xz" \
|
|
||||||
-o /tmp/flutter-android.tar.xz
|
|
||||||
|
|
||||||
tar \
|
|
||||||
-xf /tmp/flutter-android.tar.xz \
|
|
||||||
-C "${HOME}/flutter-sdks"
|
|
||||||
|
|
||||||
mv \
|
|
||||||
"${HOME}/flutter-sdks/flutter" \
|
|
||||||
"${HOME}/flutter-sdks/flutter-${ANDROID_FLUTTER_VERSION}"
|
|
||||||
|
|
||||||
export PATH="${HOME}/flutter-sdks/flutter-${ANDROID_FLUTTER_VERSION}/bin:${PATH}"
|
|
||||||
|
|
||||||
flutter config \
|
|
||||||
--no-analytics
|
|
||||||
|
|
||||||
flutter config \
|
|
||||||
--android-sdk "${ANDROID_SDK_ROOT}"
|
|
||||||
|
|
||||||
flutter --version
|
|
||||||
|
|
||||||
flutter doctor -v || true
|
|
||||||
|
|
||||||
cd \
|
|
||||||
"${HOME}/flutter-sdks/flutter-${ANDROID_FLUTTER_VERSION}"
|
|
||||||
|
|
||||||
git apply \
|
|
||||||
"${GITHUB_WORKSPACE}/rustdesk/.github/patches/flutter_3.24.4_dropdown_menu_enableFilter.diff"
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------
|
|
||||||
# vcpkg
|
|
||||||
# -----------------------------------------------------------------------
|
|
||||||
|
|
||||||
- name: Install vcpkg
|
|
||||||
run: |
|
|
||||||
set -euxo pipefail
|
|
||||||
|
|
||||||
sudo rm -rf /opt/vcpkg
|
|
||||||
|
|
||||||
sudo git clone \
|
|
||||||
https://github.com/microsoft/vcpkg.git \
|
|
||||||
/opt/vcpkg
|
|
||||||
|
|
||||||
sudo git \
|
|
||||||
-C /opt/vcpkg \
|
|
||||||
checkout "${VCPKG_COMMIT_ID}"
|
|
||||||
|
|
||||||
sudo chown \
|
|
||||||
-R "$(id -u):$(id -g)" \
|
|
||||||
/opt/vcpkg
|
|
||||||
|
|
||||||
/opt/vcpkg/bootstrap-vcpkg.sh \
|
|
||||||
-disableMetrics
|
|
||||||
|
|
||||||
echo \
|
|
||||||
"VCPKG_ROOT=/opt/vcpkg" \
|
|
||||||
>> "${GITHUB_ENV}"
|
|
||||||
|
|
||||||
/opt/vcpkg/vcpkg version
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------
|
|
||||||
# Android native dependencies
|
|
||||||
# -----------------------------------------------------------------------
|
|
||||||
|
|
||||||
- name: Build Android dependencies
|
|
||||||
run: |
|
|
||||||
set -euxo pipefail
|
|
||||||
|
|
||||||
source "${HOME}/.cargo/env"
|
|
||||||
|
|
||||||
export PATH="${HOME}/flutter-sdks/flutter-${ANDROID_FLUTTER_VERSION}/bin:${PATH}"
|
|
||||||
|
|
||||||
export VCPKG_ROOT=/opt/vcpkg
|
|
||||||
|
|
||||||
export ANDROID_NDK_HOME="${ANDROID_SDK_ROOT}/ndk/${ANDROID_NDK_VERSION}"
|
|
||||||
export ANDROID_NDK_ROOT="${ANDROID_NDK_HOME}"
|
|
||||||
export ANDROID_NDK="${ANDROID_NDK_HOME}"
|
|
||||||
|
|
||||||
cd rustdesk
|
cd rustdesk
|
||||||
|
|
||||||
|
echo "VCPKG_ROOT=${VCPKG_ROOT}"
|
||||||
|
echo "ANDROID_NDK_HOME=${ANDROID_NDK_HOME}"
|
||||||
|
|
||||||
if ! ./flutter/build_android_deps.sh arm64-v8a; then
|
if ! ./flutter/build_android_deps.sh arm64-v8a; then
|
||||||
echo
|
echo
|
||||||
echo "Android dependency build failed."
|
echo "Android dependency verification/build failed."
|
||||||
echo "Dumping vcpkg logs:"
|
echo "Dumping vcpkg logs:"
|
||||||
echo
|
echo
|
||||||
|
|
||||||
find "${VCPKG_ROOT}/" \
|
find "${VCPKG_ROOT}" \
|
||||||
-name "*.log" \
|
-name "*.log" \
|
||||||
-type f \
|
-type f \
|
||||||
| while read -r logfile; do
|
| while read -r logfile; do
|
||||||
@@ -506,32 +314,30 @@ jobs:
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
test -d "${VCPKG_ROOT}/installed/arm64-android"
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "Android native dependencies OK"
|
||||||
|
|
||||||
# -----------------------------------------------------------------------
|
# -----------------------------------------------------------------------
|
||||||
# Rust native Android library
|
# Build Rust native Android library
|
||||||
# -----------------------------------------------------------------------
|
# -----------------------------------------------------------------------
|
||||||
|
|
||||||
- name: Build RustDesk native library
|
- name: Build RustDesk native library
|
||||||
run: |
|
run: |
|
||||||
set -euxo pipefail
|
set -euxo pipefail
|
||||||
|
|
||||||
source "${HOME}/.cargo/env"
|
|
||||||
|
|
||||||
export VCPKG_ROOT=/opt/vcpkg
|
|
||||||
|
|
||||||
export ANDROID_NDK_HOME="${ANDROID_SDK_ROOT}/ndk/${ANDROID_NDK_VERSION}"
|
|
||||||
export ANDROID_NDK_ROOT="${ANDROID_NDK_HOME}"
|
|
||||||
export ANDROID_NDK="${ANDROID_NDK_HOME}"
|
|
||||||
|
|
||||||
cargo install \
|
|
||||||
cargo-ndk \
|
|
||||||
--version "${CARGO_NDK_VERSION}" \
|
|
||||||
--locked
|
|
||||||
|
|
||||||
rustup target add \
|
|
||||||
aarch64-linux-android
|
|
||||||
|
|
||||||
cd rustdesk
|
cd rustdesk
|
||||||
|
|
||||||
|
rustc --version
|
||||||
|
cargo --version
|
||||||
|
cargo ndk --version
|
||||||
|
|
||||||
|
if ! rustup target list --installed | grep -qx 'aarch64-linux-android'; then
|
||||||
|
echo "ERROR: aarch64-linux-android Rust target is missing from builder image"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
./flutter/ndk_arm64.sh
|
./flutter/ndk_arm64.sh
|
||||||
|
|
||||||
test -f \
|
test -f \
|
||||||
@@ -545,13 +351,13 @@ jobs:
|
|||||||
# -----------------------------------------------------------------------
|
# -----------------------------------------------------------------------
|
||||||
# Permanent Android release signing
|
# Permanent Android release signing
|
||||||
#
|
#
|
||||||
# key.properties:
|
# Required Gitea Actions secrets:
|
||||||
# flutter/android/key.properties
|
# ANDROID_KEYSTORE_BASE64
|
||||||
|
# ANDROID_KEYSTORE_PASSWORD
|
||||||
|
# ANDROID_KEY_ALIAS
|
||||||
#
|
#
|
||||||
# keystore:
|
# key.properties: flutter/android/key.properties
|
||||||
# flutter/android/app/rustdesk-release.jks
|
# keystore: flutter/android/app/rustdesk-release.jks
|
||||||
#
|
|
||||||
# RustDesk's app/build.gradle resolves storeFile relative to app/.
|
|
||||||
# -----------------------------------------------------------------------
|
# -----------------------------------------------------------------------
|
||||||
|
|
||||||
- name: Configure Android release signing
|
- name: Configure Android release signing
|
||||||
@@ -585,18 +391,16 @@ jobs:
|
|||||||
| base64 --decode \
|
| base64 --decode \
|
||||||
> app/rustdesk-release.jks
|
> app/rustdesk-release.jks
|
||||||
|
|
||||||
chmod 600 \
|
chmod 600 app/rustdesk-release.jks
|
||||||
app/rustdesk-release.jks
|
|
||||||
|
|
||||||
cat > key.properties <<EOF
|
cat > key.properties <<EOF2
|
||||||
storePassword=${ANDROID_KEYSTORE_PASSWORD}
|
storePassword=${ANDROID_KEYSTORE_PASSWORD}
|
||||||
keyPassword=${ANDROID_KEYSTORE_PASSWORD}
|
keyPassword=${ANDROID_KEYSTORE_PASSWORD}
|
||||||
keyAlias=${ANDROID_KEY_ALIAS}
|
keyAlias=${ANDROID_KEY_ALIAS}
|
||||||
storeFile=rustdesk-release.jks
|
storeFile=rustdesk-release.jks
|
||||||
EOF
|
EOF2
|
||||||
|
|
||||||
chmod 600 \
|
chmod 600 key.properties
|
||||||
key.properties
|
|
||||||
|
|
||||||
if [ ! -s app/rustdesk-release.jks ]; then
|
if [ ! -s app/rustdesk-release.jks ]; then
|
||||||
echo "ERROR: Restored keystore is empty"
|
echo "ERROR: Restored keystore is empty"
|
||||||
@@ -616,25 +420,17 @@ jobs:
|
|||||||
echo "Android release signing configured successfully."
|
echo "Android release signing configured successfully."
|
||||||
|
|
||||||
# -----------------------------------------------------------------------
|
# -----------------------------------------------------------------------
|
||||||
# Flutter Android APK
|
# Build signed ARM64 APK with Flutter 3.24.5 from builder image
|
||||||
# -----------------------------------------------------------------------
|
# -----------------------------------------------------------------------
|
||||||
|
|
||||||
- name: Build signed APK
|
- name: Build signed APK
|
||||||
run: |
|
run: |
|
||||||
set -euxo pipefail
|
set -euxo pipefail
|
||||||
|
|
||||||
source "${HOME}/.cargo/env"
|
export PATH="${FLUTTER_ANDROID_HOME}/bin:${CARGO_HOME}/bin:${PATH}"
|
||||||
|
|
||||||
export PATH="${HOME}/flutter-sdks/flutter-${ANDROID_FLUTTER_VERSION}/bin:${PATH}"
|
echo "Android Flutter:"
|
||||||
|
flutter --version
|
||||||
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
|
|
||||||
export PATH="${JAVA_HOME}/bin:${PATH}"
|
|
||||||
|
|
||||||
export VCPKG_ROOT=/opt/vcpkg
|
|
||||||
|
|
||||||
export ANDROID_NDK_HOME="${ANDROID_SDK_ROOT}/ndk/${ANDROID_NDK_VERSION}"
|
|
||||||
export ANDROID_NDK_ROOT="${ANDROID_NDK_HOME}"
|
|
||||||
export ANDROID_NDK="${ANDROID_NDK_HOME}"
|
|
||||||
|
|
||||||
cd rustdesk
|
cd rustdesk
|
||||||
|
|
||||||
@@ -666,6 +462,7 @@ jobs:
|
|||||||
|
|
||||||
pushd flutter
|
pushd flutter
|
||||||
|
|
||||||
|
echo
|
||||||
echo "Checking Android Flutter dependencies..."
|
echo "Checking Android Flutter dependencies..."
|
||||||
|
|
||||||
if ! grep -q 'extended_text: 14.0.0' pubspec.yaml; then
|
if ! grep -q 'extended_text: 14.0.0' pubspec.yaml; then
|
||||||
@@ -675,9 +472,12 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
flutter clean
|
flutter clean
|
||||||
|
|
||||||
flutter pub get
|
flutter pub get
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "Resolved extended_text:"
|
||||||
|
flutter pub deps | grep -A2 -B2 extended_text || true
|
||||||
|
|
||||||
flutter build apk \
|
flutter build apk \
|
||||||
--release \
|
--release \
|
||||||
--target-platform android-arm64 \
|
--target-platform android-arm64 \
|
||||||
@@ -713,8 +513,7 @@ jobs:
|
|||||||
set -euxo pipefail
|
set -euxo pipefail
|
||||||
|
|
||||||
APK="rustdesk/output/rustdesk-${RUSTDESK_VERSION}-custom-arm64.apk"
|
APK="rustdesk/output/rustdesk-${RUSTDESK_VERSION}-custom-arm64.apk"
|
||||||
|
APKSIGNER="${ANDROID_SDK_ROOT}/build-tools/${ANDROID_BUILD_TOOLS_VERSION}/apksigner"
|
||||||
APKSIGNER="${ANDROID_SDK_ROOT}/build-tools/34.0.0/apksigner"
|
|
||||||
|
|
||||||
if [ ! -x "${APKSIGNER}" ]; then
|
if [ ! -x "${APKSIGNER}" ]; then
|
||||||
echo "ERROR: apksigner not found:"
|
echo "ERROR: apksigner not found:"
|
||||||
|
|||||||
Reference in new issue
Block a user