#!/bin/bash set -e echo "安装构建依赖..." apt-get update -qq apt-get install -y -qq wget unzip openjdk-17-jdk build-essential npm echo "创建Android SDK目录结构..." mkdir -p /opt/android-sdk/cmdline-tools echo "下载Android SDK命令行工具..." cd /tmp wget -q https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip unzip -q commandlinetools-linux-11076708_latest.zip mv cmdline-tools /opt/android-sdk/cmdline-tools/latest export ANDROID_HOME=/opt/android-sdk export PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools echo "接受Android SDK许可..." yes | sdkmanager --licenses > /dev/null 2>&1 || true echo "安装Android SDK Platform 21和Build Tools..." sdkmanager "platforms;android-21" "build-tools;30.0.3" "platform-tools" echo "安装Android NDK..." cd /tmp wget -q https://dl.google.com/android/repository/android-ndk-r26c-linux.zip unzip -q android-ndk-r26c-linux.zip export ANDROID_NDK_HOME=/tmp/android-ndk-r26c echo "安装gomobile..." go install -v github.com/sagernet/gomobile/cmd/gomobile@v0.1.1 go install -v github.com/sagernet/gomobile/cmd/gobind@v0.1.1 export PATH=$PATH:/root/go/bin echo "安装npm依赖..." npm install --silent echo "初始化gomobile..." gomobile init -ndk $ANDROID_NDK_HOME cd /workspace echo "开始使用gomobile编译..." gomobile bind -v \ -androidapi=21 \ -javapkg=io.nekohasekai \ -libname=box \ -tags="with_gvisor,with_quic,with_wireguard,with_ech,with_utls,with_clash_api,with_grpc" \ -trimpath \ -target=android/arm64 \ -o libcore.aar \ github.com/sagernet/sing-box/experimental/libbox ./mobile if [ ! -f libcore.aar ]; then echo "❌ 编译失败: libcore.aar未生成" exit 1 fi echo "提取libbox.so..." unzip -j libcore.aar jni/arm64-v8a/libbox.so -d /tmp/ if [ -f /tmp/libbox.so ]; then cp /tmp/libbox.so /workspace/libbox-new.so echo "✅ 编译成功!" ls -lh /workspace/libbox-new.so md5sum /workspace/libbox-new.so else echo "❌ 提取失败: libbox.so未找到" exit 1 fi