73 lines
2.0 KiB
Bash
Executable File
73 lines
2.0 KiB
Bash
Executable File
#!/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
|