更新编译脚本与说明书

This commit is contained in:
2026-01-17 13:47:53 +08:00
parent 1827f6ed3a
commit 302b9b6339
4 changed files with 78 additions and 49 deletions

View File

@@ -1,61 +1,82 @@
#!/bin/bash
# AuthCenter 编译脚本Termux专属适配
# 目录脚本放AuthCenterConsoleApp根目录同目录含src/、libs/、runtime/
# 解决Termux下jar包classpath拼接报错问题
# AuthCenter 编译+启动一体化脚本Termux专属
# 特性任意目录可执行、自动定位项目根、清空旧class、全日志输出
# 放置位置AuthCenterConsoleApp/bash/ 下(任意位置也能跑)
# 锚定AuthCenterConsoleApp根目录脚本所在目录
BASE_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)
# 核心:自动定位项目根目录(无论脚本放哪/在哪执行都能精准找到src上级
find_project_root() {
local current_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
# 向上查找直到找到src目录即为项目根
while [ ! -d "${current_dir}/src" ] && [ "${current_dir}" != "/" ]; do
current_dir=$(dirname "${current_dir}")
done
if [ "${current_dir}" = "/" ]; then
echo "❌ 未找到项目根目录无src文件夹"
exit 1
fi
echo "${current_dir}"
}
# 锚定项目根+防呆
BASE_DIR=$(find_project_root)
SRC_DIR="${BASE_DIR}/src"
LIB_DIR="${BASE_DIR}/libs"
OUT_DIR="${BASE_DIR}/runtime"
LOG_DIR="${BASE_DIR}/logs"
MAIN_CLASS="Main" # 主类名
# 前置校验必须有src目录
# 前置校验
if [ ! -d "${SRC_DIR}" ]; then
echo "错误:根目录[${BASE_DIR}]下无src目录请核对结构"
echo "项目根目录[${BASE_DIR}]下无src目录请核对结构"
exit 1
fi
# 查找所有Java源文件
# 查找Java源文件
JAVA_FILES=$(find "${SRC_DIR}" -name "*.java")
if [ -z "${JAVA_FILES}" ]; then
echo "❌ 错误:src目录下无.java文件"
echo "❌ src目录下无.java文件"
exit 1
fi
# 核心修正Termux兼容的classpath拼接用循环拼接避免空格/路径解析问题)
# 1. 清空旧文件+建目录
echo "🧹 清理旧编译文件..."
rm -rf "${OUT_DIR}"/*
mkdir -p "${OUT_DIR}" "${LOG_DIR}"
# 2. 拼接classpathTermux兼容含依赖+输出目录)
CP_PARAM=""
if [ -d "${LIB_DIR}" ]; then
JAR_LIST=("${LIB_DIR}"/*.jar)
# 排除目录本身无jar时不拼接
if [ -f "${JAR_LIST[0]}" ]; then
CP=$(IFS=:; echo "${JAR_LIST[*]}")
CP="${OUT_DIR}:$(IFS=:; echo "${JAR_LIST[*]}")"
CP_PARAM="-cp ${CP}"
else
echo " 提示:libs目录无jar包无依赖编译"
echo " libs目录无jar包无依赖编译"
CP_PARAM="-cp ${OUT_DIR}"
fi
else
echo " 提示:无libs目录无依赖编译"
echo " 无libs目录无依赖编译"
CP_PARAM="-cp ${OUT_DIR}"
fi
# 创建输出目录
mkdir -p "${OUT_DIR}"
# 打印目录信息
echo "📌 编译目录信息"
# 3. 打印目录信息
echo "📌 项目目录信息"
echo " 根目录 ${BASE_DIR}"
echo " 源码目录:${SRC_DIR}$(echo "${JAVA_FILES}" | wc -l | tr -d ' ')个文件)"
echo " 源码$(echo "${JAVA_FILES}" | wc -l | tr -d ' ')"
echo " 输出目录:${OUT_DIR}"
echo "------------------------------------------------------------------------"
# 执行编译Java7标准+UTF-8适配Termux
echo "开始编译(适配Termux+Java7..."
# 4. 编译源码
echo "开始编译Termux+Java7兼容..."
javac -encoding UTF-8 -source 1.7 -target 1.7 ${CP_PARAM} -d "${OUT_DIR}" ${JAVA_FILES}
# 结果校验
if [ $? -eq 0 ]; then
echo -e "\n✅ 编译成功class文件在 runtime 目录"
else
echo -e "\n❌ 编译失败排查方向1.JDK≥1.7 2.源码语法 3.jar包是否有效"
if [ $? -ne 0 ]; then
echo -e "\n❌ 编译失败排查JDK版本、源码语法、libs依赖包"
exit 1
fi
echo -e "\n✅ 编译成功!"
# 5. 启动程序全日志输出到logs目录
echo "------------------------------------------------------------------------"
echo "🚀 启动程序...日志输出至 ${LOG_DIR}/winboll_all.log"
java -cp "${OUT_DIR}:${LIB_DIR}/*" ${MAIN_CLASS} > "${LOG_DIR}/winboll_all.log" 2>&1