Compare commits

..

No commits in common. "patch-android-package-name-change" and "master" have entirely different histories.

13 changed files with 0 additions and 672 deletions

View file

@ -1,512 +0,0 @@
name: Build RustDesk Android
on:
workflow_dispatch:
inputs:
upload-release:
type: boolean
default: true
description: "Upload APKs to release"
upload-tag:
type: string
default: "nightly"
description: "Release tag name"
env:
RUST_VERSION: "1.75"
CARGO_NDK_VERSION: "3.1.2"
FLUTTER_VERSION: "3.24.5"
ANDROID_FLUTTER_VERSION: "3.24.5"
TAG_NAME: "${{ inputs.upload-tag }}"
VCPKG_BINARY_SOURCES: "clear;files,/opt/vcpkg-cache,readwrite"
VCPKG_COMMIT_ID: "120deac3062162151622ca4860575a33844ba10b"
NDK_VERSION: "r27c"
ANDROID_SIGNING_KEY: "${{ secrets.ANDROID_SIGNING_KEY }}"
UPLOAD_RELEASE: "${{ inputs.upload-release }}"
jobs:
# -------------------------------------------------------
# Step 1: Generate flutter-rust bridge bindings
# Runs on: ubuntu-22.04
# -------------------------------------------------------
generate-bridge:
uses: ./.github/workflows/custom-bridge.yml
runs-on: ubuntu-22.04
# -------------------------------------------------------
# Step 2: Build per-arch Android APKs
# Runs on: ubuntu-24.04
# Targets: aarch64, armv7, x86_64
# -------------------------------------------------------
build-rustdesk-android:
needs: [generate-bridge]
name: build rustdesk android apk ${{ matrix.job.target }}
runs-on: ${{ matrix.job.os }}
strategy:
fail-fast: false
matrix:
job:
- { arch: aarch64, target: aarch64-linux-android, os: ubuntu-24.04, reltype: release, suffix: "" }
- { arch: armv7, target: armv7-linux-androideabi, os: ubuntu-24.04, reltype: release, suffix: "" }
- { arch: x86_64, target: x86_64-linux-android, os: ubuntu-24.04, reltype: release, suffix: "" }
steps:
- name: Free Disk Space (Ubuntu)
uses: https://github.com/jlumbroso/free-disk-space@main
with:
tool-cache: false
android: false
dotnet: true
haskell: true
large-packages: false
docker-images: true
swap-storage: false
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
clang \
cmake \
curl \
gcc-multilib \
git \
g++ \
g++-multilib \
libayatana-appindicator3-dev \
libasound2-dev \
libc6-dev \
libclang-dev \
libunwind-dev \
libgstreamer1.0-dev \
libgstreamer-plugins-base1.0-dev \
libgtk-3-dev \
libpam0g-dev \
libpulse-dev \
libva-dev \
libxcb-randr0-dev \
libxcb-shape0-dev \
libxcb-xfixes0-dev \
libxdo-dev \
libxfixes-dev \
llvm-dev \
nasm \
ninja-build \
openjdk-17-jdk-headless \
pkg-config \
tree \
wget
- name: Checkout source code
uses: actions/checkout@v4
with:
submodules: recursive
- name: Install flutter
uses: https://github.com/subosito/flutter-action@v2
with:
channel: "stable"
flutter-version: ${{ env.ANDROID_FLUTTER_VERSION }}
- name: Patch flutter
run: |
cd $(dirname $(dirname $(which flutter)))
[[ "3.24.5" == ${{env.ANDROID_FLUTTER_VERSION}} ]] && git apply ${{ github.workspace }}/.github/patches/flutter_3.24.4_dropdown_menu_enableFilter.diff
- uses: https://github.com/nttld/setup-ndk@v1
id: setup-ndk
with:
ndk-version: ${{ env.NDK_VERSION }}
add-to-path: true
# vcpkg 빌드 바이너리 캐시 — 첫 실행 이후 수시간 절약
# 캐시 키: VCPKG_COMMIT_ID + target arch 조합 → arch별 독립 캐시
- name: Cache vcpkg binary cache
uses: actions/cache@v3
with:
path: /opt/vcpkg-cache
key: vcpkg-android-${{ matrix.job.target }}-${{ env.VCPKG_COMMIT_ID }}
- name: Setup vcpkg
uses: https://github.com/lukka/run-vcpkg@v11
with:
vcpkgDirectory: /opt/artifacts/vcpkg
vcpkgGitCommitId: ${{ env.VCPKG_COMMIT_ID }}
doNotCache: false
- name: Install vcpkg dependencies
shell: bash
env:
ANDROID_NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }}
ANDROID_NDK_ROOT: ${{ steps.setup-ndk.outputs.ndk-path }}
run: |
mkdir -p /opt/vcpkg-cache
case ${{ matrix.job.target }} in
aarch64-linux-android) ANDROID_TARGET=arm64-v8a ;;
armv7-linux-androideabi) ANDROID_TARGET=armeabi-v7a ;;
x86_64-linux-android) ANDROID_TARGET=x86_64 ;;
i686-linux-android) ANDROID_TARGET=x86 ;;
esac
if ! ./flutter/build_android_deps.sh "${ANDROID_TARGET}"; then
find "${VCPKG_ROOT}/" -name "*.log" | while read -r _1; do
echo "$_1:"; echo "======"; cat "$_1"; echo "======"; echo ""
done
exit 1
fi
- name: Restore bridge files
uses: https://code.forgejo.org/forgejo/download-artifact@v4
with:
name: bridge-artifact
path: ./
- name: Install Rust toolchain
uses: https://github.com/dtolnay/rust-toolchain@v1
with:
toolchain: ${{ env.RUST_VERSION }}
components: "rustfmt"
- uses: https://github.com/Swatinem/rust-cache@v2
with:
prefix-key: rustdesk-lib-cache-android
key: ${{ matrix.job.target }}
# cargo-ndk 바이너리 캐시 — 버전 고정이므로 거의 항상 hit
- name: Cache cargo-ndk binary
uses: actions/cache@v3
with:
path: ~/.cargo/bin/cargo-ndk
key: cargo-ndk-${{ env.CARGO_NDK_VERSION }}-${{ runner.os }}
- name: Build rustdesk lib
env:
ANDROID_NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }}
ANDROID_NDK_ROOT: ${{ steps.setup-ndk.outputs.ndk-path }}
run: |
rustup target add ${{ matrix.job.target }}
# 캐시 hit 시 재설치 생략
command -v cargo-ndk &>/dev/null || cargo install cargo-ndk --version ${{ env.CARGO_NDK_VERSION }} --locked
case ${{ matrix.job.target }} in
aarch64-linux-android)
./flutter/ndk_arm64.sh
mkdir -p ./flutter/android/app/src/main/jniLibs/arm64-v8a
cp ./target/${{ matrix.job.target }}/release/liblibrustdesk.so ./flutter/android/app/src/main/jniLibs/arm64-v8a/librustdesk.so
;;
armv7-linux-androideabi)
./flutter/ndk_arm.sh
mkdir -p ./flutter/android/app/src/main/jniLibs/armeabi-v7a
cp ./target/${{ matrix.job.target }}/release/liblibrustdesk.so ./flutter/android/app/src/main/jniLibs/armeabi-v7a/librustdesk.so
;;
x86_64-linux-android)
./flutter/ndk_x64.sh
mkdir -p ./flutter/android/app/src/main/jniLibs/x86_64
cp ./target/${{ matrix.job.target }}/release/liblibrustdesk.so ./flutter/android/app/src/main/jniLibs/x86_64/librustdesk.so
;;
esac
- name: Upload Rustdesk library to Artifacts
uses: https://code.forgejo.org/forgejo/upload-artifact@v4
with:
name: librustdesk.so.${{ matrix.job.target }}
path: ./target/${{ matrix.job.target }}/release/liblibrustdesk.so
- name: Setup Android SDK
uses: https://github.com/android-actions/setup-android@v3
- name: Patch Android package name
run: bash ./patch_package_name.sh
- name: Build rustdesk APK
shell: bash
env:
JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64
ANDROID_NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }}
run: |
export PATH=/usr/lib/jvm/java-17-openjdk-amd64/bin:$PATH
# Increase Gradle JVM memory for CI builds
sed -i "s/org.gradle.jvmargs=-Xmx1024M/org.gradle.jvmargs=-Xmx2g/g" ./flutter/android/gradle.properties
# temporary use debug sign config
sed -i "s/signingConfigs.release/signingConfigs.debug/g" ./flutter/android/app/build.gradle
case ${{ matrix.job.target }} in
aarch64-linux-android)
mkdir -p ./flutter/android/app/src/main/jniLibs/arm64-v8a
cp ${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/libc++_shared.so ./flutter/android/app/src/main/jniLibs/arm64-v8a/
cp ./target/${{ matrix.job.target }}/release/liblibrustdesk.so ./flutter/android/app/src/main/jniLibs/arm64-v8a/librustdesk.so
# build flutter
pushd flutter
flutter build apk "--${{ matrix.job.reltype }}" --target-platform android-arm64 --split-per-abi
mv build/app/outputs/flutter-apk/app-arm64-v8a-${{ matrix.job.reltype }}.apk ../rustdesk-${{ env.TAG_NAME }}-${{ matrix.job.arch }}${{ matrix.job.suffix }}.apk
;;
armv7-linux-androideabi)
mkdir -p ./flutter/android/app/src/main/jniLibs/armeabi-v7a
cp ${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/arm-linux-androideabi/libc++_shared.so ./flutter/android/app/src/main/jniLibs/armeabi-v7a/
cp ./target/${{ matrix.job.target }}/release/liblibrustdesk.so ./flutter/android/app/src/main/jniLibs/armeabi-v7a/librustdesk.so
# build flutter
pushd flutter
flutter build apk "--${{ matrix.job.reltype }}" --target-platform android-arm --split-per-abi
mv build/app/outputs/flutter-apk/app-armeabi-v7a-${{ matrix.job.reltype }}.apk ../rustdesk-${{ env.TAG_NAME }}-${{ matrix.job.arch }}${{ matrix.job.suffix }}.apk
;;
x86_64-linux-android)
mkdir -p ./flutter/android/app/src/main/jniLibs/x86_64
cp ${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/x86_64-linux-android/libc++_shared.so ./flutter/android/app/src/main/jniLibs/x86_64/
cp ./target/${{ matrix.job.target }}/release/liblibrustdesk.so ./flutter/android/app/src/main/jniLibs/x86_64/librustdesk.so
# build flutter
pushd flutter
flutter build apk "--${{ matrix.job.reltype }}" --target-platform android-x64 --split-per-abi
mv build/app/outputs/flutter-apk/app-x86_64-${{ matrix.job.reltype }}.apk ../rustdesk-${{ env.TAG_NAME }}-${{ matrix.job.arch }}${{ matrix.job.suffix }}.apk
;;
esac
popd
mkdir -p signed-apk
mv ../rustdesk-${{ env.TAG_NAME }}-${{ matrix.job.arch }}${{ matrix.job.suffix }}.apk signed-apk/ 2>/dev/null || \
mv ./rustdesk-${{ env.TAG_NAME }}-${{ matrix.job.arch }}${{ matrix.job.suffix }}.apk signed-apk/
- name: Setup sign tool version variable
shell: bash
run: |
BUILD_TOOL_VERSION=$(ls "$ANDROID_SDK_ROOT/build-tools/" | tail -n 1)
echo "ANDROID_SIGN_TOOL_VERSION=$BUILD_TOOL_VERSION" >> $GITHUB_ENV
- uses: https://github.com/r0adkll/sign-android-release@v1
name: Sign app APK
if: env.ANDROID_SIGNING_KEY != ''
id: sign-rustdesk
with:
releaseDirectory: ./signed-apk
signingKeyBase64: ${{ secrets.ANDROID_SIGNING_KEY }}
alias: ${{ secrets.ANDROID_ALIAS }}
keyStorePassword: ${{ secrets.ANDROID_KEY_STORE_PASSWORD }}
keyPassword: ${{ secrets.ANDROID_KEY_PASSWORD }}
env:
BUILD_TOOLS_VERSION: ${{ env.ANDROID_SIGN_TOOL_VERSION }}
- name: Copy APK to artifact dir
if: env.UPLOAD_RELEASE == 'true'
shell: bash
env:
SIGNED_RELEASE_FILE: ${{ steps.sign-rustdesk.outputs.signedReleaseFile }}
run: |
mkdir -p dist/apk
if [[ -n "${ANDROID_SIGNING_KEY}" ]]; then
cp "${SIGNED_RELEASE_FILE}" "dist/apk/rustdesk-${{ env.TAG_NAME }}-${{ matrix.job.arch }}.apk"
else
cp "signed-apk/rustdesk-${{ env.TAG_NAME }}-${{ matrix.job.arch }}${{ matrix.job.suffix }}.apk" \
"dist/apk/rustdesk-${{ env.TAG_NAME }}-${{ matrix.job.arch }}.apk"
fi
- name: Upload APK for release
if: env.UPLOAD_RELEASE == 'true'
uses: https://code.forgejo.org/forgejo/upload-artifact@v4
with:
name: rustdesk-apk-${{ matrix.job.arch }}
path: dist/apk/rustdesk-${{ env.TAG_NAME }}-${{ matrix.job.arch }}.apk
# -------------------------------------------------------
# Step 3: Build universal APK (all ABIs combined)
# Runs on: ubuntu-24.04
# Needs: build-rustdesk-android (all 3 arch .so files)
# -------------------------------------------------------
build-rustdesk-android-universal:
needs: [build-rustdesk-android]
name: build rustdesk android universal apk
runs-on: ubuntu-24.04
env:
reltype: release
suffix: ""
steps:
- name: Free Disk Space (Ubuntu)
uses: https://github.com/jlumbroso/free-disk-space@main
with:
tool-cache: false
android: false
dotnet: true
haskell: true
large-packages: false
docker-images: true
swap-storage: false
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
clang cmake curl gcc-multilib git g++ g++-multilib \
libayatana-appindicator3-dev libasound2-dev libc6-dev \
libclang-dev libunwind-dev libgstreamer1.0-dev \
libgstreamer-plugins-base1.0-dev libgtk-3-dev \
libpam0g-dev libpulse-dev libva-dev \
libxcb-randr0-dev libxcb-shape0-dev libxcb-xfixes0-dev \
libxdo-dev libxfixes-dev llvm-dev nasm ninja-build \
openjdk-17-jdk-headless pkg-config tree wget
- name: Checkout source code
uses: actions/checkout@v4
with:
submodules: recursive
- name: Install flutter
uses: https://github.com/subosito/flutter-action@v2
with:
channel: "stable"
flutter-version: ${{ env.ANDROID_FLUTTER_VERSION }}
- name: Patch flutter
run: |
cd $(dirname $(dirname $(which flutter)))
[[ "3.24.5" == ${{env.ANDROID_FLUTTER_VERSION}} ]] && git apply ${{ github.workspace }}/.github/patches/flutter_3.24.4_dropdown_menu_enableFilter.diff
- uses: https://github.com/nttld/setup-ndk@v1
id: setup-ndk
with:
ndk-version: ${{ env.NDK_VERSION }}
add-to-path: true
- name: Restore bridge files
uses: https://code.forgejo.org/forgejo/download-artifact@v4
with:
name: bridge-artifact
path: ./
- name: Install Rust toolchain
uses: https://github.com/dtolnay/rust-toolchain@v1
with:
toolchain: ${{ env.RUST_VERSION }}
- name: Download arm64 library
uses: https://code.forgejo.org/forgejo/download-artifact@v4
with:
name: librustdesk.so.aarch64-linux-android
path: ./flutter/android/app/src/main/jniLibs/arm64-v8a
- name: Download armv7 library
uses: https://code.forgejo.org/forgejo/download-artifact@v4
with:
name: librustdesk.so.armv7-linux-androideabi
path: ./flutter/android/app/src/main/jniLibs/armeabi-v7a
- name: Download x86_64 library
uses: https://code.forgejo.org/forgejo/download-artifact@v4
with:
name: librustdesk.so.x86_64-linux-android
path: ./flutter/android/app/src/main/jniLibs/x86_64
- name: Setup Android SDK
uses: https://github.com/android-actions/setup-android@v3
- name: Patch Android package name
run: bash ./patch_package_name.sh
- name: Build universal APK
shell: bash
env:
JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64
ANDROID_NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }}
run: |
export PATH=/usr/lib/jvm/java-17-openjdk-amd64/bin:$PATH
sed -i "s/org.gradle.jvmargs=-Xmx1024M/org.gradle.jvmargs=-Xmx2g/g" ./flutter/android/gradle.properties
sed -i "s/signingConfigs.release/signingConfigs.debug/g" ./flutter/android/app/build.gradle
mv ./flutter/android/app/src/main/jniLibs/arm64-v8a/liblibrustdesk.so \
./flutter/android/app/src/main/jniLibs/arm64-v8a/librustdesk.so
cp ${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/libc++_shared.so \
./flutter/android/app/src/main/jniLibs/arm64-v8a/
mv ./flutter/android/app/src/main/jniLibs/armeabi-v7a/liblibrustdesk.so \
./flutter/android/app/src/main/jniLibs/armeabi-v7a/librustdesk.so
cp ${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/arm-linux-androideabi/libc++_shared.so \
./flutter/android/app/src/main/jniLibs/armeabi-v7a/
mv ./flutter/android/app/src/main/jniLibs/x86_64/liblibrustdesk.so \
./flutter/android/app/src/main/jniLibs/x86_64/librustdesk.so
cp ${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/x86_64-linux-android/libc++_shared.so \
./flutter/android/app/src/main/jniLibs/x86_64/
pushd flutter
flutter build apk "--${{ env.reltype }}" --target-platform android-arm64,android-arm,android-x64
popd
mkdir -p signed-apk
mv ./flutter/build/app/outputs/flutter-apk/app-${{ env.reltype }}.apk \
signed-apk/rustdesk-${{ env.TAG_NAME }}-universal${{ env.suffix }}.apk
- name: Setup sign tool version variable
shell: bash
run: |
BUILD_TOOL_VERSION=$(ls "$ANDROID_SDK_ROOT/build-tools/" | tail -n 1)
echo "ANDROID_SIGN_TOOL_VERSION=$BUILD_TOOL_VERSION" >> $GITHUB_ENV
- uses: https://github.com/r0adkll/sign-android-release@v1
name: Sign universal APK
if: env.ANDROID_SIGNING_KEY != ''
id: sign-rustdesk
with:
releaseDirectory: ./signed-apk
signingKeyBase64: ${{ secrets.ANDROID_SIGNING_KEY }}
alias: ${{ secrets.ANDROID_ALIAS }}
keyStorePassword: ${{ secrets.ANDROID_KEY_STORE_PASSWORD }}
keyPassword: ${{ secrets.ANDROID_KEY_PASSWORD }}
env:
BUILD_TOOLS_VERSION: ${{ env.ANDROID_SIGN_TOOL_VERSION }}
- name: Copy universal APK to artifact dir
if: env.UPLOAD_RELEASE == 'true'
shell: bash
env:
SIGNED_RELEASE_FILE: ${{ steps.sign-rustdesk.outputs.signedReleaseFile }}
run: |
mkdir -p dist/apk
if [[ -n "${ANDROID_SIGNING_KEY}" ]]; then
cp "${SIGNED_RELEASE_FILE}" "dist/apk/rustdesk-${{ env.TAG_NAME }}-universal.apk"
else
cp "signed-apk/rustdesk-${{ env.TAG_NAME }}-universal${{ env.suffix }}.apk" \
"dist/apk/rustdesk-${{ env.TAG_NAME }}-universal.apk"
fi
- name: Upload universal APK for release
if: env.UPLOAD_RELEASE == 'true'
uses: https://code.forgejo.org/forgejo/upload-artifact@v4
with:
name: rustdesk-apk-universal
path: dist/apk/rustdesk-${{ env.TAG_NAME }}-universal.apk
# -------------------------------------------------------
# Step 4: Publish all APKs to a single Forgejo release
# Runs on: ubuntu-24.04
# Needs: build-rustdesk-android-universal (all APK artifacts ready)
# -------------------------------------------------------
publish-android-release:
needs: [build-rustdesk-android-universal]
if: ${{ inputs['upload-release'] }}
name: publish rustdesk android release
runs-on: ubuntu-24.04
steps:
- name: Download arm64 APK
uses: https://code.forgejo.org/forgejo/download-artifact@v4
with:
name: rustdesk-apk-aarch64
path: dist/release
- name: Download armv7 APK
uses: https://code.forgejo.org/forgejo/download-artifact@v4
with:
name: rustdesk-apk-armv7
path: dist/release
- name: Download x86_64 APK
uses: https://code.forgejo.org/forgejo/download-artifact@v4
with:
name: rustdesk-apk-x86_64
path: dist/release
- name: Download universal APK
uses: https://code.forgejo.org/forgejo/download-artifact@v4
with:
name: rustdesk-apk-universal
path: dist/release
- name: Create Release
uses: actions/forgejo-release@v2.12.1
with:
direction: upload
token: ${{ secrets.FORGEJO_TOKEN }}
tag: ${{ env.TAG_NAME }}
title: Release ${{ env.TAG_NAME }}
release-dir: dist/release
override: true

View file

@ -1,89 +0,0 @@
# This yaml shares the build bridge steps with ci and nightly.
name: Build flutter-rust-bridge
# 2023-11-23 18:00:00+00:00
on:
workflow_call:
env:
CARGO_EXPAND_VERSION: "1.0.95"
FLUTTER_VERSION: "3.22.3"
FLUTTER_RUST_BRIDGE_VERSION: "1.80.1"
RUST_VERSION: "1.75" # https://github.com/rustdesk/rustdesk/discussions/7503
jobs:
generate_bridge:
runs-on: ubuntu-22.04
steps:
- name: Checkout source code
uses: actions/checkout@v4
with:
submodules: recursive
- name: Install prerequisites
run: |
sudo apt-get install ca-certificates -y
sudo apt-get update -y
sudo apt-get install -y \
clang \
cmake \
curl \
gcc \
git \
g++ \
libclang-dev \
libgtk-3-dev \
llvm-dev \
nasm \
ninja-build \
pkg-config \
wget
- name: Install Rust toolchain
uses: https://github.com/dtolnay/rust-toolchain@v1
with:
toolchain: ${{ env.RUST_VERSION }}
targets: ${{ matrix.job.target }}
components: "rustfmt"
- uses: https://github.com/Swatinem/rust-cache@v2
with:
prefix-key: bridge-${{ matrix.job.os }}
- name: Cache Bridge
id: cache-bridge
uses: actions/cache@v3
with:
path: /tmp/flutter_rust_bridge
key: vcpkg-${{ matrix.job.arch }}
- name: Install flutter
uses: https://github.com/subosito/flutter-action@v2
with:
channel: "stable"
flutter-version: ${{ env.FLUTTER_VERSION }}
cache: true
- name: Install flutter rust bridge deps
shell: bash
run: |
cargo install cargo-expand --version ${{ env.CARGO_EXPAND_VERSION }} --locked
cargo install flutter_rust_bridge_codegen --version ${{ env.FLUTTER_RUST_BRIDGE_VERSION }} --features "uuid" --locked
pushd flutter && sed -i -e 's/extended_text: 14.0.0/extended_text: 13.0.0/g' pubspec.yaml && flutter pub get && popd
- name: Run flutter rust bridge
run: |
~/.cargo/bin/flutter_rust_bridge_codegen --rust-input ./src/flutter_ffi.rs --dart-output ./flutter/lib/generated_bridge.dart --c-output ./flutter/macos/Runner/bridge_generated.h
cp ./flutter/macos/Runner/bridge_generated.h ./flutter/ios/Runner/bridge_generated.h
- name: Upload Artifact
uses: https://code.forgejo.org/forgejo/upload-artifact@v4
with:
name: bridge-artifact
path: |
./src/bridge_generated.rs
./src/bridge_generated.io.rs
./flutter/lib/generated_bridge.dart
./flutter/lib/generated_bridge.freezed.dart
./flutter/macos/Runner/bridge_generated.h
./flutter/ios/Runner/bridge_generated.h

View file

@ -1,71 +0,0 @@
#!/usr/bin/env bash
# patch_package_name.sh
# Patches Android package name from com.carriez.flutter_hbb to sh.kyu.undercover
# Also patches app display name from RustDesk to Undercover
# Revert: git reset --hard HEAD && git clean -fd flutter/android/
set -e
OLD_PKG="com.carriez.flutter_hbb"
NEW_PKG="sh.kyu.undercover"
OLD_APP_NAME="RustDesk"
NEW_APP_NAME="Undercover"
OLD_PATH="com/carriez/flutter_hbb"
NEW_PATH="sh/kyu/undercover"
KOTLIN_BASE="flutter/android/app/src/main/kotlin"
OLD_DIR="$KOTLIN_BASE/$OLD_PATH"
NEW_DIR="$KOTLIN_BASE/$NEW_PATH"
echo "[1/4] Patching build.gradle and AndroidManifest files..."
FILES=(
"flutter/android/app/build.gradle"
"flutter/android/app/src/main/AndroidManifest.xml"
"flutter/android/app/src/debug/AndroidManifest.xml"
"flutter/android/app/src/profile/AndroidManifest.xml"
"flutter/android/app/src/main/kotlin/ffi.kt"
)
for f in "${FILES[@]}"; do
if grep -q "$OLD_PKG" "$f" 2>/dev/null; then
sed -i "s|$OLD_PKG|$NEW_PKG|g" "$f"
echo " Patched: $f"
fi
done
echo "[2/4] Creating new Kotlin package directory: $NEW_DIR"
mkdir -p "$NEW_DIR"
echo "[3/4] Moving and patching Kotlin source files..."
for kt in "$OLD_DIR"/*.kt; do
filename=$(basename "$kt")
dest="$NEW_DIR/$filename"
cp "$kt" "$dest"
sed -i "s|package $OLD_PKG|package $NEW_PKG|g" "$dest"
sed -i "s|import $OLD_PKG|import $NEW_PKG|g" "$dest"
echo " Moved & patched: $filename"
done
echo "[4/4] Removing old Kotlin package directory..."
rm -rf "$KOTLIN_BASE/com"
echo "[5/5] Patching app display name..."
STRINGS_XML="flutter/android/app/src/main/res/values/strings.xml"
if grep -q "$OLD_APP_NAME" "$STRINGS_XML" 2>/dev/null; then
sed -i "s|>$OLD_APP_NAME<|>$NEW_APP_NAME<|g" "$STRINGS_XML"
echo " Patched: $STRINGS_XML"
fi
if grep -q "android:label=\"$OLD_APP_NAME\"" "flutter/android/app/src/main/AndroidManifest.xml" 2>/dev/null; then
sed -i "s|android:label=\"$OLD_APP_NAME\"|android:label=\"$NEW_APP_NAME\"|g" "flutter/android/app/src/main/AndroidManifest.xml"
echo " Patched: flutter/android/app/src/main/AndroidManifest.xml (android:label)"
fi
echo ""
echo "Done! Package name changed: $OLD_PKG -> $NEW_PKG"
echo " App display name changed: $OLD_APP_NAME -> $NEW_APP_NAME"
echo ""
echo "To revert all changes:"
echo " git reset --hard HEAD && git clean -fd flutter/android/"