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:
@@ -84,6 +84,22 @@ else
|
||||
printf '⚠ 未设置 ANDROID_NDK_HOME / ANDROID_HOME,gomobile init 可能失败\n' >&2
|
||||
fi
|
||||
|
||||
# ── JDK(gomobile bind 末段要 javac/jar 编译 Java 绑定)─────────────────────────
|
||||
# macOS 的 /usr/bin/javac 仅为桩(无系统 JDK 时报 "Unable to locate a Java Runtime")。
|
||||
# 若未显式设 JAVA_HOME,优先用 Android Studio 自带 JBR(OpenJDK 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: %s(Android Studio JBR)\n' "${JAVA_HOME}"
|
||||
else
|
||||
printf '⚠ 未设 JAVA_HOME 且未找到 Android Studio JBR,gomobile bind 末段 javac 可能失败\n' >&2
|
||||
fi
|
||||
else
|
||||
printf ' JDK: %s(JAVA_HOME)\n' "${JAVA_HOME}"
|
||||
fi
|
||||
|
||||
# ── 安装 gomobile(SagerNet 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:linkname(Go 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}" \
|
||||
|
||||
Reference in New Issue
Block a user