fix:完全无法使用termux的方式直接嵌入二进制文件执行,只能打包自带依赖

This commit is contained in:
spiritlhl
2025-11-02 17:52:09 +08:00
parent 87424fecc1
commit ed478bc5f3
21 changed files with 561 additions and 1211 deletions

View File

@@ -92,62 +92,6 @@ jobs:
- name: Verify dependencies
run: go mod verify
- name: Download ECS binaries and prepare for Android
run: |
REPO="oneclickvirt/ecs"
# 使用 gh CLI 获取最新版本
echo "获取最新版本信息..."
ECS_VERSION=$(gh release view --repo "$REPO" --json tagName --jq '.tagName')
if [ -z "$ECS_VERSION" ]; then
echo "错误: 无法获取最新版本"
exit 1
fi
echo "ECS 版本: $ECS_VERSION"
# 创建 jniLibs 目录
mkdir -p jniLibs/arm64-v8a
mkdir -p jniLibs/x86_64
# 下载 Linux ARM64用于 Android ARM64
echo "下载 Linux ARM64..."
gh release download "$ECS_VERSION" --repo "$REPO" --pattern "goecs_linux_arm64.zip" --output "/tmp/goecs_linux_arm64.zip"
unzip -q -o "/tmp/goecs_linux_arm64.zip" -d /tmp/
mv /tmp/goecs jniLibs/arm64-v8a/libgoecs.so
chmod 755 jniLibs/arm64-v8a/libgoecs.so
# 下载 Linux AMD64用于 Android x86_64
echo "下载 Linux AMD64..."
gh release download "$ECS_VERSION" --repo "$REPO" --pattern "goecs_linux_amd64.zip" --output "/tmp/goecs_linux_amd64.zip"
unzip -q -o "/tmp/goecs_linux_amd64.zip" -d /tmp/
mv /tmp/goecs jniLibs/x86_64/libgoecs.so
chmod 755 jniLibs/x86_64/libgoecs.so
# 下载 proot用于在 Android 上运行 Linux 二进制文件)
echo "下载 proot..."
PROOT_VERSION="5.4.0"
# ARM64 proot
curl -L "https://github.com/proot-me/proot/releases/download/v${PROOT_VERSION}/proot-v${PROOT_VERSION}-aarch64-static" \
-o jniLibs/arm64-v8a/libproot.so
chmod 755 jniLibs/arm64-v8a/libproot.so
# x86_64 proot
curl -L "https://github.com/proot-me/proot/releases/download/v${PROOT_VERSION}/proot-v${PROOT_VERSION}-x86_64-static" \
-o jniLibs/x86_64/libproot.so
chmod 755 jniLibs/x86_64/libproot.so
echo ""
echo "jniLibs 文件列表:"
ls -lh jniLibs/*/*.so
echo ""
echo "文件大小:"
du -sh jniLibs/*/*.so
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Update FyneApp.toml version
run: |
sed -i "s/Version = .*/Version = \"${{ needs.prepare.outputs.version }}\"/" FyneApp.toml
@@ -280,62 +224,6 @@ jobs:
- name: Verify dependencies
run: go mod verify
- name: Download ECS binaries for embed
shell: bash
run: |
REPO="oneclickvirt/ecs"
BINARIES_DIR="embedding/binaries"
TARGET_OS="${{ matrix.platform }}"
TARGET_ARCH="${{ matrix.arch }}"
mkdir -p "$BINARIES_DIR"
# 使用 gh CLI 获取最新版本(更简单可靠)
echo "获取最新版本信息..."
ECS_VERSION=$(gh release view --repo "$REPO" --json tagName --jq '.tagName')
if [ -z "$ECS_VERSION" ]; then
echo "错误: 无法获取最新版本"
exit 1
fi
echo "ECS 版本: $ECS_VERSION"
echo "目标平台: $TARGET_OS/$TARGET_ARCH"
# Windows 需要 .exe 后缀
if [ "$TARGET_OS" == "windows" ]; then
OUTPUT_FILE="${BINARIES_DIR}/goecs-${TARGET_OS}-${TARGET_ARCH}.exe"
else
OUTPUT_FILE="${BINARIES_DIR}/goecs-${TARGET_OS}-${TARGET_ARCH}"
fi
PATTERN="goecs_${TARGET_OS}_${TARGET_ARCH}.zip"
echo "下载 ${TARGET_OS}/${TARGET_ARCH}..."
echo "Pattern: $PATTERN"
echo "Output: $OUTPUT_FILE"
# 下载到临时文件
gh release download "$ECS_VERSION" --repo "$REPO" --pattern "$PATTERN" --output "/tmp/goecs.zip"
unzip -q -o "/tmp/goecs.zip" -d /tmp/
if [ -f "/tmp/goecs.exe" ]; then
mv /tmp/goecs.exe "$OUTPUT_FILE"
elif [ -f "/tmp/goecs" ]; then
mv /tmp/goecs "$OUTPUT_FILE"
chmod +x "$OUTPUT_FILE"
else
echo "错误: 找不到解压后的二进制文件"
exit 1
fi
echo ""
echo "二进制文件列表:"
ls -lh "${BINARIES_DIR}/"
echo ""
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Update FyneApp.toml version
shell: bash
run: |