fix(android/kernel): 补 -checklinkname=0 ldflags + JDK 自动探测,构建出 40MB libbox.aar

对齐 sing-box build_libbox sharedFlags 的 -ldflags(含 -checklinkname=0 放行

badlinkname 的 //go:linkname;-trimpath/-buildvcs=false/版本戳);

JDK 自动选 Android Studio JBR(macOS /usr/bin/javac 仅桩)。Task 2 完成:

三 ABI(arm64/armeabi-v7a/x86_64) libgojni.so 齐。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
wangjia
2026-06-22 18:59:14 +08:00
parent f298b207fe
commit 2a8426c357
+28
View File
@@ -84,6 +84,22 @@ else
printf '⚠ 未设置 ANDROID_NDK_HOME / ANDROID_HOMEgomobile init 可能失败\n' >&2
fi
# ── JDKgomobile bind 末段要 javac/jar 编译 Java 绑定)─────────────────────────
# macOS 的 /usr/bin/javac 仅为桩(无系统 JDK 时报 "Unable to locate a Java Runtime")。
# 若未显式设 JAVA_HOME,优先用 Android Studio 自带 JBROpenJDK 21)。
if [[ -z "${JAVA_HOME:-}" ]]; then
AS_JBR="/Applications/Android Studio.app/Contents/jbr/Contents/Home"
if [[ -x "${AS_JBR}/bin/javac" ]]; then
export JAVA_HOME="${AS_JBR}"
export PATH="${JAVA_HOME}/bin:${PATH}"
printf ' JDK: %sAndroid Studio JBR\n' "${JAVA_HOME}"
else
printf '⚠ 未设 JAVA_HOME 且未找到 Android Studio JBRgomobile bind 末段 javac 可能失败\n' >&2
fi
else
printf ' JDK: %sJAVA_HOME\n' "${JAVA_HOME}"
fi
# ── 安装 gomobileSagerNet fork,见 VERSION 注释)────────────────────────────
printf '==> 安装 %s/cmd/gomobile@%s…\n' "${GOMOBILE_MODULE}" "${GOMOBILE_VERSION}"
go install "${GOMOBILE_MODULE}/cmd/gomobile@${GOMOBILE_VERSION}"
@@ -120,10 +136,22 @@ printf ' tags : %s\n' "${BUILD_TAGS}"
mkdir -p "${DIST_DIR}"
# ldflags 对齐 sing-box cmd/internal/build_libbox 的 sharedFlags
# -checklinkname=0 放行 badlinkname 的 //go:linknameGo 1.23+ 默认 checklinkname=1
# 会拒 os.checkPidfdOnce 等内部符号引用,缺则链接失败)
# defaultGODEBUG=multipathtcp=0 关 MPTCP(与官方一致)
# -X ...constant.Version 版本戳
# -s -w -buildid= 裁剪符号表,产物更小
LDFLAGS="-X github.com/sagernet/sing-box/constant.Version=${SINGBOX_VERSION} -X internal/godebug.defaultGODEBUG=multipathtcp=0 -s -w -buildid= -checklinkname=0"
(
cd "${BUILD_SRC}"
go mod download
gomobile bind \
-v \
-trimpath \
-buildvcs=false \
-ldflags "${LDFLAGS}" \
-target android/arm64,android/arm,android/amd64 \
-androidapi 21 \
-tags "${BUILD_TAGS}" \