Compare commits
5 Commits
dailystamp
...
winboll-de
| Author | SHA1 | Date | |
|---|---|---|---|
| 8006a05749 | |||
| 3c9a6ec884 | |||
| 8b47043053 | |||
| 202eeed72b | |||
| 4511bf8730 |
34
.gitignore
vendored
@@ -100,3 +100,37 @@ lint-results.html
|
|||||||
/settings.gradle
|
/settings.gradle
|
||||||
/gradle.properties
|
/gradle.properties
|
||||||
|
|
||||||
|
## WinBoLL-Demo 项目配置
|
||||||
|
#.git
|
||||||
|
#.gitignore
|
||||||
|
#.gitmodules
|
||||||
|
#.winboll
|
||||||
|
#GenKeyStore
|
||||||
|
#LICENSE
|
||||||
|
#LICENSE-Private-Demo
|
||||||
|
#LICENSE-Private-Demo_docs
|
||||||
|
#README.md
|
||||||
|
#aes
|
||||||
|
#appbase
|
||||||
|
autonfc
|
||||||
|
#build.gradle
|
||||||
|
contacts
|
||||||
|
#debugtemp
|
||||||
|
gallery
|
||||||
|
gpsrelaysentinel
|
||||||
|
#gradle
|
||||||
|
#gradle.properties-android-demo
|
||||||
|
#gradle.properties-androidx-demo
|
||||||
|
#gradlew
|
||||||
|
#libaes
|
||||||
|
#libappbase
|
||||||
|
#libdebugtemp
|
||||||
|
libgpsrelaysentinel
|
||||||
|
libwinboll
|
||||||
|
#local.properties-demo
|
||||||
|
mymessagemanager
|
||||||
|
positions
|
||||||
|
powerbell
|
||||||
|
#settings.gradle-demo
|
||||||
|
winboll
|
||||||
|
#winboll.properties-demo
|
||||||
|
|||||||
@@ -1,192 +0,0 @@
|
|||||||
#!/system/bin/sh
|
|
||||||
## 合并其他项目分支的模块源码到projects-keeper分支。
|
|
||||||
|
|
||||||
# ====================== 0. 进入目标目录 ======================
|
|
||||||
TARGET_DIR="/sdcard/AppProjects/Projects_Keeper"
|
|
||||||
|
|
||||||
echo "切换工作目录到:$TARGET_DIR"
|
|
||||||
if ! cd "$TARGET_DIR"; then
|
|
||||||
echo "=============================================="
|
|
||||||
echo "错误:无法进入目标目录 $TARGET_DIR"
|
|
||||||
echo "=============================================="
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# ====================== 1. 拉取远程最新源码(失败直接退出) ======================
|
|
||||||
echo "=============================================="
|
|
||||||
echo "正在拉取远程最新源码..."
|
|
||||||
echo "=============================================="
|
|
||||||
if ! git pull; then
|
|
||||||
echo "=============================================="
|
|
||||||
echo "错误:拉取远程源码失败!"
|
|
||||||
echo "请检查网络、仓库冲突或手动处理 git 状态后再执行脚本。"
|
|
||||||
echo "=============================================="
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
echo "✅ 源码已拉取为最新状态"
|
|
||||||
echo ""
|
|
||||||
|
|
||||||
# ====================== 2. 目录路径检查 ======================
|
|
||||||
CUR_DIR=$(pwd)
|
|
||||||
if [ "$CUR_DIR" != "$TARGET_DIR" ]; then
|
|
||||||
echo "错误:当前目录不是项目根目录!"
|
|
||||||
echo "请先进入目录:$TARGET_DIR"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# ====================== 3. Git 分支检查 ======================
|
|
||||||
CUR_BRANCH=$(git symbolic-ref --short HEAD 2>/dev/null)
|
|
||||||
TARGET_BRANCH="projects-keeper"
|
|
||||||
|
|
||||||
if [ "$CUR_BRANCH" != "$TARGET_BRANCH" ]; then
|
|
||||||
echo "错误:当前不在 $TARGET_BRANCH 分支!"
|
|
||||||
echo "当前分支:$CUR_BRANCH"
|
|
||||||
echo "请先执行:git checkout $TARGET_BRANCH"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# ====================== 4. 预设标准模块列表 ======================
|
|
||||||
MERGE_OBJECTS_LIST=(
|
|
||||||
.git
|
|
||||||
.gitignore
|
|
||||||
.gitmodules
|
|
||||||
.winboll
|
|
||||||
GenKeyStore
|
|
||||||
LICENSE
|
|
||||||
LICENSE-Private-Demo
|
|
||||||
LICENSE-Private-Demo_docs
|
|
||||||
README.md
|
|
||||||
aes
|
|
||||||
appbase
|
|
||||||
autonfc
|
|
||||||
build.gradle
|
|
||||||
contacts
|
|
||||||
debugtemp
|
|
||||||
gallery
|
|
||||||
gpsrelaysentinel
|
|
||||||
gradle
|
|
||||||
gradle.properties-android-demo
|
|
||||||
gradle.properties-androidx-demo
|
|
||||||
gradlew
|
|
||||||
libaes
|
|
||||||
libappbase
|
|
||||||
libdebugtemp
|
|
||||||
libgpsrelaysentinel
|
|
||||||
libwinboll
|
|
||||||
local.properties-demo
|
|
||||||
mymessagemanager
|
|
||||||
positions
|
|
||||||
powerbell
|
|
||||||
settings.gradle-demo
|
|
||||||
winboll
|
|
||||||
winboll.properties-demo
|
|
||||||
)
|
|
||||||
|
|
||||||
# ====================== 5. 获取当前目录真实文件列表 ======================
|
|
||||||
REAL_ITEMS=()
|
|
||||||
while IFS= read -r line; do
|
|
||||||
if [[ "$line" != "." && "$line" != ".." ]]; then
|
|
||||||
REAL_ITEMS+=("$line")
|
|
||||||
fi
|
|
||||||
done < <(ls -a)
|
|
||||||
|
|
||||||
# ====================== 6. 差异比对函数 ======================
|
|
||||||
check_diff() {
|
|
||||||
local missing=()
|
|
||||||
local extra=()
|
|
||||||
|
|
||||||
for item in "${MERGE_OBJECTS_LIST[@]}"; do
|
|
||||||
local found=0
|
|
||||||
for r in "${REAL_ITEMS[@]}"; do
|
|
||||||
if [[ "$item" == "$r" ]]; then
|
|
||||||
found=1
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
if (( found == 0 )); then
|
|
||||||
missing+=("$item")
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
for r in "${REAL_ITEMS[@]}"; do
|
|
||||||
local found=0
|
|
||||||
for item in "${MERGE_OBJECTS_LIST[@]}"; do
|
|
||||||
if [[ "$item" == "$r" ]]; then
|
|
||||||
found=1
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
if (( found == 0 )); then
|
|
||||||
extra+=("$r")
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
if [[ ${#missing[@]} -gt 0 || ${#extra[@]} -gt 0 ]]; then
|
|
||||||
echo "=============================================="
|
|
||||||
echo "【错误】合并环境与脚本预设列表不匹配!"
|
|
||||||
echo "请手动核对并修改合并脚本。"
|
|
||||||
echo "=============================================="
|
|
||||||
|
|
||||||
if [[ ${#missing[@]} -gt 0 ]]; then
|
|
||||||
echo -e "\n👉 本地缺失项目:"
|
|
||||||
for m in "${missing[@]}"; do echo " $m"; done
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ ${#extra[@]} -gt 0 ]]; then
|
|
||||||
echo -e "\n👉 本地多余项目:"
|
|
||||||
for e in "${extra[@]}"; do echo " $e"; done
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo -e "\n=============================================="
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# 执行差异校验
|
|
||||||
check_diff
|
|
||||||
|
|
||||||
# ====================== 全部校验通过,继续执行合并 ======================
|
|
||||||
echo -e "#@@@ 开始合并模块源码 @@@#
|
|
||||||
## 目标合并对象列表:"
|
|
||||||
|
|
||||||
for item in "${MERGE_OBJECTS_LIST[@]}"; do
|
|
||||||
echo "$item"
|
|
||||||
done
|
|
||||||
|
|
||||||
echo -e "## 对象列表结束
|
|
||||||
"
|
|
||||||
|
|
||||||
## 合并 APP 项目
|
|
||||||
MERGE_APP_PROJECT_LIST=(
|
|
||||||
DemoAPP
|
|
||||||
)
|
|
||||||
echo -e "#@@@ 开始合并应用型模块源码 @@@#
|
|
||||||
## 目标合并对象列表:"
|
|
||||||
|
|
||||||
for item in "${MERGE_APP_PROJECT_LIST[@]}"; do
|
|
||||||
echo "正在合并 $item 项目 ..."
|
|
||||||
item_lower=$(echo "$item" | tr 'A-Z' 'a-z')
|
|
||||||
git checkout origin/$item_lower $item_lower
|
|
||||||
git add .
|
|
||||||
git commit -m "合并 $item 项目"
|
|
||||||
done
|
|
||||||
|
|
||||||
## 合并 LIB 项目
|
|
||||||
MERGE_LIB_PROJECT_LIST=(
|
|
||||||
WinBoLL
|
|
||||||
APPBase
|
|
||||||
AES
|
|
||||||
)
|
|
||||||
echo -e "#@@@ 开始合并类库型模块源码 @@@#
|
|
||||||
## 目标合并对象列表:"
|
|
||||||
|
|
||||||
for item in "${MERGE_LIB_PROJECT_LIST[@]}"; do
|
|
||||||
echo "正在合并 $item 项目 ..."
|
|
||||||
item_lower=$(echo "$item" | tr 'A-Z' 'a-z')
|
|
||||||
git checkout origin/$item_lower $item_lower lib$item_lower
|
|
||||||
git add .
|
|
||||||
git commit -m "合并 $item 项目"
|
|
||||||
done
|
|
||||||
|
|
||||||
echo '正在推送 Projects_Keeper 项目'
|
|
||||||
git push
|
|
||||||
@@ -1,145 +0,0 @@
|
|||||||
#!/system/bin/sh
|
|
||||||
## 逻辑:按时间取最新标签 → 拉取该标签目录合并
|
|
||||||
|
|
||||||
# 按创建时间取模块最新标签(最新打的标签排最后)
|
|
||||||
get_latest_module_tag(){
|
|
||||||
local mod=$1
|
|
||||||
git for-each-ref --sort=-creatordate --format='%(refname)' refs/tags/${mod}-* \
|
|
||||||
| grep -v '\^{}' \
|
|
||||||
| head -1 \
|
|
||||||
| sed 's/refs\/tags\///'
|
|
||||||
}
|
|
||||||
|
|
||||||
# 通过标签获取commit
|
|
||||||
get_commit_from_tag(){
|
|
||||||
local tag=$1
|
|
||||||
git rev-parse --short "${tag}^{commit}"
|
|
||||||
}
|
|
||||||
|
|
||||||
# 工作目录
|
|
||||||
TARGET_DIR="/sdcard/AppProjects/Projects_Keeper_Tag"
|
|
||||||
echo "进入目录:${TARGET_DIR}"
|
|
||||||
cd "${TARGET_DIR}" || exit 1
|
|
||||||
|
|
||||||
# 同步远程
|
|
||||||
echo "========================================"
|
|
||||||
echo "同步远程分支与全部版本标签"
|
|
||||||
echo "========================================"
|
|
||||||
git fetch origin --prune
|
|
||||||
git fetch origin --tags
|
|
||||||
echo "同步完成"
|
|
||||||
echo ""
|
|
||||||
|
|
||||||
# 校验目标分支
|
|
||||||
NOW_BRANCH=$(git symbolic-ref --short HEAD)
|
|
||||||
TARGET_BRANCH="projects_keeper_tag"
|
|
||||||
if [ "${NOW_BRANCH}" != "${TARGET_BRANCH}" ];then
|
|
||||||
echo "错误:请先切换到 ${TARGET_BRANCH} 分支"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 目录结构校验
|
|
||||||
MERGE_OBJECTS_LIST=(
|
|
||||||
.git
|
|
||||||
.gitignore
|
|
||||||
.gitmodules
|
|
||||||
.winboll
|
|
||||||
GenKeyStore
|
|
||||||
LICENSE
|
|
||||||
LICENSE-Private-Demo
|
|
||||||
LICENSE-Private-Demo_docs
|
|
||||||
README.md
|
|
||||||
aes
|
|
||||||
appbase
|
|
||||||
autonfc
|
|
||||||
build.gradle
|
|
||||||
contacts
|
|
||||||
debugtemp
|
|
||||||
gallery
|
|
||||||
gpsrelaysentinel
|
|
||||||
gradle
|
|
||||||
gradle.properties-android-demo
|
|
||||||
gradle.properties-androidx-demo
|
|
||||||
gradlew
|
|
||||||
libaes
|
|
||||||
libappbase
|
|
||||||
libdebugtemp
|
|
||||||
libgpsrelaysentinel
|
|
||||||
libwinboll
|
|
||||||
local.properties-demo
|
|
||||||
mymessagemanager
|
|
||||||
positions
|
|
||||||
powerbell
|
|
||||||
settings.gradle-demo
|
|
||||||
winboll
|
|
||||||
winboll.properties-demo
|
|
||||||
)
|
|
||||||
|
|
||||||
REAL_ITEMS=()
|
|
||||||
while IFS= read -r line; do
|
|
||||||
[[ $line != "." && $line != ".." ]] && REAL_ITEMS+=("$line")
|
|
||||||
done < <(ls -a)
|
|
||||||
|
|
||||||
check_diff(){
|
|
||||||
local miss=() extra=()
|
|
||||||
for i in "${MERGE_OBJECTS_LIST[@]}";do
|
|
||||||
[[ ! " ${REAL_ITEMS[@]} " =~ " ${i} " ]] && miss+=("$i")
|
|
||||||
done
|
|
||||||
for i in "${REAL_ITEMS[@]}";do
|
|
||||||
[[ ! " ${MERGE_OBJECTS_LIST[@]} " =~ " ${i} " ]] && extra+=("$i")
|
|
||||||
done
|
|
||||||
if [[ ${#miss[@]} -gt 0 || ${#extra[@]} -gt 0 ]];then
|
|
||||||
echo "本地目录结构不一致,终止运行"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
check_diff
|
|
||||||
|
|
||||||
echo -e "#@@@ 按时间获取最新标签合并模块源码 @@@#"
|
|
||||||
|
|
||||||
# 应用型模块
|
|
||||||
MERGE_APP_PROJECT_LIST=(DemoAPP)
|
|
||||||
echo -e "---------- 应用型模块 ----------"
|
|
||||||
for name in "${MERGE_APP_PROJECT_LIST[@]}";do
|
|
||||||
low_name=$(echo "$name" | tr 'A-Z' 'a-z')
|
|
||||||
tag=$(get_latest_module_tag "${low_name}")
|
|
||||||
if [[ -z "${tag}" ]];then
|
|
||||||
echo "跳过 ${low_name}:无远程标签"
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
commit=$(get_commit_from_tag "${tag}")
|
|
||||||
if [[ -z "${commit}" ]];then
|
|
||||||
echo "跳过 ${low_name}:标签无有效提交点"
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
echo "模块:${low_name} 最新时间标签:${tag} 提交ID:${commit}"
|
|
||||||
# 强制拉取覆盖
|
|
||||||
git checkout -f "${tag}" -- "${low_name}"
|
|
||||||
git add "${low_name}"
|
|
||||||
git commit -m "合并模块${name} 同步最新时间标签${tag}"
|
|
||||||
done
|
|
||||||
|
|
||||||
# 类库模块
|
|
||||||
MERGE_LIB_PROJECT_LIST=(WinBoLL APPBase AES)
|
|
||||||
echo -e "---------- 类库模块 ----------"
|
|
||||||
for name in "${MERGE_LIB_PROJECT_LIST[@]}";do
|
|
||||||
low_name=$(echo "$name" | tr 'A-Z' 'a-z')
|
|
||||||
tag=$(get_latest_module_tag "${low_name}")
|
|
||||||
if [[ -z "${tag}" ]];then
|
|
||||||
echo "跳过 ${low_name}:无远程标签"
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
commit=$(get_commit_from_tag "${tag}")
|
|
||||||
if [[ -z "${commit}" ]];then
|
|
||||||
echo "跳过 ${low_name}:标签无有效提交点"
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
echo "模块:${low_name} 最新时间标签:${tag} 提交ID:${commit}"
|
|
||||||
git checkout -f "${tag}" -- "${low_name}" "lib${low_name}"
|
|
||||||
git add "${low_name}" "lib${low_name}"
|
|
||||||
git commit -m "合并模块${name} 同步最新时间标签${tag}"
|
|
||||||
done
|
|
||||||
|
|
||||||
echo "全部模块合并执行完毕"
|
|
||||||
echo "执行推送:git push"
|
|
||||||
git push
|
|
||||||
1
BaseVersion.flag
Normal file
@@ -0,0 +1 @@
|
|||||||
|
15.20
|
||||||
@@ -6,11 +6,11 @@
|
|||||||
|
|
||||||
## 核心声明
|
## 核心声明
|
||||||
|
|
||||||
本文档**唯一核心设计目的**:通过文件标识、分支隔离、操作规范、责任界定四重约束,**从根源规避私有开发分支代码被人为合并、推送、提交至公共开源主流分支的风险**,明确人为操作失误、违规合并的全部责任归属,同时保证私有分支可正常同步、拉取公共主流分支的上游更新。
|
本文档**唯一核心设计目的**: 通过文件标识、分支隔离、操作规范、责任界定四重约束,**从根源规避私有开发分支代码被人为合并、推送、提交至公共开源主流分支的风险**,明确人为操作失误、违规合并的全部责任归属,同时保证私有分支可正常同步、拉取公共主流分支的上游更新。
|
||||||
|
|
||||||
## 一、文件宗旨与风险防控说明
|
## 一、文件宗旨与风险防控说明
|
||||||
|
|
||||||
本文件为 WinBoLL 项目公共开源分支转为私有独立分支开发的**强制标准化操作手册与责任界定文件**,核心风控目标:
|
本文件为 WinBoLL 项目公共开源分支转为私有独立分支开发的**强制标准化操作手册与责任界定文件**,核心风控目标:
|
||||||
|
|
||||||
1. 严格隔离公共开源分支与私有开发分支,通过授权文件标记实现分支属性一眼可辨,杜绝人为操作混淆
|
1. 严格隔离公共开源分支与私有开发分支,通过授权文件标记实现分支属性一眼可辨,杜绝人为操作混淆
|
||||||
|
|
||||||
@@ -24,7 +24,7 @@
|
|||||||
|
|
||||||
### 1. 公共开源分支唯一标识
|
### 1. 公共开源分支唯一标识
|
||||||
|
|
||||||
**文件名:LICENSE**
|
**文件名: LICENSE**
|
||||||
|
|
||||||
- 仅允许存在于公共主流分支 `winboll` 及官方公共衍生分支
|
- 仅允许存在于公共主流分支 `winboll` 及官方公共衍生分支
|
||||||
|
|
||||||
@@ -34,7 +34,7 @@
|
|||||||
|
|
||||||
### 2. 私有开发分支唯一标识
|
### 2. 私有开发分支唯一标识
|
||||||
|
|
||||||
**文件名:LICENSE-Private**
|
**文件名: LICENSE-Private**
|
||||||
|
|
||||||
- 仅允许存在于私有开发分支,**绝对禁止出现在公共 ****`winboll`**** 分支**
|
- 仅允许存在于私有开发分支,**绝对禁止出现在公共 ****`winboll`**** 分支**
|
||||||
|
|
||||||
@@ -44,15 +44,15 @@
|
|||||||
|
|
||||||
## 三、分支管理与合并风控规则(强制遵守)
|
## 三、分支管理与合并风控规则(强制遵守)
|
||||||
|
|
||||||
1. **公共主流分支**:固定为 `winboll`,为项目唯一开源主线,仅保留 `LICENSE` 文件,**禁止接收任何私有分支的合并、提交、推送请求**。
|
1. **公共主流分支**: 固定为 `winboll`,为项目唯一开源主线,仅保留 `LICENSE` 文件,**禁止接收任何私有分支的合并、提交、推送请求**。
|
||||||
|
|
||||||
2. **私有开发分支**:统一从 `winboll` 分支检出,命名固定格式为 `private-demo-*`,与公共分支物理隔离。
|
2. **私有开发分支**: 统一从 `winboll` 分支检出,命名固定格式为 `private-demo-*`,与公共分支物理隔离。
|
||||||
|
|
||||||
3. **核心合并风控铁则**
|
3. **核心合并风控铁则**
|
||||||
|
|
||||||
- 私有分支 → 公共分支:**永久禁止任何形式的合并、推送、PR 提交、代码回合,人为操作也绝不允许**
|
- 私有分支 → 公共分支: **永久禁止任何形式的合并、推送、PR 提交、代码回合,人为操作也绝不允许**
|
||||||
|
|
||||||
- 公共分支 → 私有分支:允许正常拉取、同步上游更新,不影响私有开发迭代
|
- 公共分支 → 私有分支: 允许正常拉取、同步上游更新,不影响私有开发迭代
|
||||||
|
|
||||||
4. 所有仓库提交者、合并操作者,均视为已阅读并完全认可本规则,**人为执行私有分支向公共分支的合并操作,由操作人承担全部代码泄露、合规违约、项目安全风险**。
|
4. 所有仓库提交者、合并操作者,均视为已阅读并完全认可本规则,**人为执行私有分支向公共分支的合并操作,由操作人承担全部代码泄露、合规违约、项目安全风险**。
|
||||||
|
|
||||||
@@ -68,7 +68,7 @@
|
|||||||
|
|
||||||
4. 将本规范文件 `LICENSE-Private-Demo` 复制并重命名为 `LICENSE-Private`,作为私有分支生效授权文件。
|
4. 将本规范文件 `LICENSE-Private-Demo` 复制并重命名为 `LICENSE-Private`,作为私有分支生效授权文件。
|
||||||
|
|
||||||
5. 将以上所有变更执行一次性 Git 提交,**提交信息必须固定使用以下内容,不可修改**:
|
5. 将以上所有变更执行一次性 Git 提交,**提交信息必须固定使用以下内容,不可修改**:
|
||||||
|
|
||||||
> 初始化私有开发分支,已切换私有授权文件,本分支禁止任何人为合并、推送至 winboll 公共分支
|
> 初始化私有开发分支,已切换私有授权文件,本分支禁止任何人为合并、推送至 winboll 公共分支
|
||||||
>
|
>
|
||||||
@@ -84,14 +84,14 @@
|
|||||||
|
|
||||||
3. 仓库管理员需严格校验合并请求的分支标识与授权文件,发现带有 `LICENSE-Private` 标记的分支申请合并至公共分支,一律直接拒绝,并记录操作人信息。
|
3. 仓库管理员需严格校验合并请求的分支标识与授权文件,发现带有 `LICENSE-Private` 标记的分支申请合并至公共分支,一律直接拒绝,并记录操作人信息。
|
||||||
|
|
||||||
4. 分支属性校验以根目录授权文件为唯一标准:只要分支内存在 `LICENSE-Private` 文件,就绝对禁止向公共分支发起任何合并操作。
|
4. 分支属性校验以根目录授权文件为唯一标准: 只要分支内存在 `LICENSE-Private` 文件,就绝对禁止向公共分支发起任何合并操作。
|
||||||
|
|
||||||
## 六、分支状态校验与异常处理
|
## 六、分支状态校验与异常处理
|
||||||
|
|
||||||
- 合规公共分支:仅存在 `LICENSE`,无 `LICENSE-Private`
|
- 合规公共分支: 仅存在 `LICENSE`,无 `LICENSE-Private`
|
||||||
|
|
||||||
- 合规私有分支:仅存在 `LICENSE-Private`,无 `LICENSE`
|
- 合规私有分支: 仅存在 `LICENSE-Private`,无 `LICENSE`
|
||||||
|
|
||||||
- 异常状态:两个文件同时存在 / 均不存在 → 立即停止开发与提交,按本规范重置分支状态,严禁执行任何合并操作
|
- 异常状态: 两个文件同时存在 / 均不存在 → 立即停止开发与提交,按本规范重置分支状态,严禁执行任何合并操作
|
||||||
|
|
||||||
> (注:文档部分内容可能由 AI 生成)
|
> (注: 文档部分内容可能由 AI 生成)
|
||||||
|
|||||||
@@ -6,11 +6,11 @@
|
|||||||
|
|
||||||
## 核心声明
|
## 核心声明
|
||||||
|
|
||||||
本文档**唯一核心设计目的**:通过文件标识、分支隔离、操作规范、责任界定四重约束,**从根源规避私有开发分支代码被人为合并、推送、提交至公共开源主流分支的风险**,明确人为操作失误、违规合并的全部责任归属,同时保证私有分支可正常同步、拉取公共主流分支的上游更新。
|
本文档**唯一核心设计目的**: 通过文件标识、分支隔离、操作规范、责任界定四重约束,**从根源规避私有开发分支代码被人为合并、推送、提交至公共开源主流分支的风险**,明确人为操作失误、违规合并的全部责任归属,同时保证私有分支可正常同步、拉取公共主流分支的上游更新。
|
||||||
|
|
||||||
## 一、文件宗旨与风险防控说明
|
## 一、文件宗旨与风险防控说明
|
||||||
|
|
||||||
本文件为 WinBoLL 项目公共开源分支转为私有独立分支开发的**强制标准化操作手册与责任界定文件**,核心风控目标:
|
本文件为 WinBoLL 项目公共开源分支转为私有独立分支开发的**强制标准化操作手册与责任界定文件**,核心风控目标:
|
||||||
|
|
||||||
1. 严格隔离公共开源分支与私有开发分支,通过授权文件标记实现分支属性一眼可辨,杜绝人为操作混淆
|
1. 严格隔离公共开源分支与私有开发分支,通过授权文件标记实现分支属性一眼可辨,杜绝人为操作混淆
|
||||||
|
|
||||||
@@ -24,7 +24,7 @@
|
|||||||
|
|
||||||
### 1. 公共开源分支唯一标识
|
### 1. 公共开源分支唯一标识
|
||||||
|
|
||||||
**文件名:LICENSE**
|
**文件名: LICENSE**
|
||||||
|
|
||||||
- 仅允许存在于公共主流分支 `winboll` 及官方公共衍生分支
|
- 仅允许存在于公共主流分支 `winboll` 及官方公共衍生分支
|
||||||
|
|
||||||
@@ -34,7 +34,7 @@
|
|||||||
|
|
||||||
### 2. 私有开发分支唯一标识
|
### 2. 私有开发分支唯一标识
|
||||||
|
|
||||||
**文件名:LICENSE-Private**
|
**文件名: LICENSE-Private**
|
||||||
|
|
||||||
- 仅允许存在于私有开发分支,**绝对禁止出现在公共 ****`winboll`**** 分支**
|
- 仅允许存在于私有开发分支,**绝对禁止出现在公共 ****`winboll`**** 分支**
|
||||||
|
|
||||||
@@ -44,15 +44,15 @@
|
|||||||
|
|
||||||
## 三、分支管理与合并风控规则(强制遵守)
|
## 三、分支管理与合并风控规则(强制遵守)
|
||||||
|
|
||||||
1. **公共主流分支**:固定为 `winboll`,为项目唯一开源主线,仅保留 `LICENSE` 文件,**禁止接收任何私有分支的合并、提交、推送请求**。
|
1. **公共主流分支**: 固定为 `winboll`,为项目唯一开源主线,仅保留 `LICENSE` 文件,**禁止接收任何私有分支的合并、提交、推送请求**。
|
||||||
|
|
||||||
2. **私有开发分支**:统一从 `winboll` 分支检出,命名固定格式为 `private-demo-*`,与公共分支物理隔离。
|
2. **私有开发分支**: 统一从 `winboll` 分支检出,命名固定格式为 `private-demo-*`,与公共分支物理隔离。
|
||||||
|
|
||||||
3. **核心合并风控铁则**
|
3. **核心合并风控铁则**
|
||||||
|
|
||||||
- 私有分支 → 公共分支:**永久禁止任何形式的合并、推送、PR 提交、代码回合,人为操作也绝不允许**
|
- 私有分支 → 公共分支: **永久禁止任何形式的合并、推送、PR 提交、代码回合,人为操作也绝不允许**
|
||||||
|
|
||||||
- 公共分支 → 私有分支:允许正常拉取、同步上游更新,不影响私有开发迭代
|
- 公共分支 → 私有分支: 允许正常拉取、同步上游更新,不影响私有开发迭代
|
||||||
|
|
||||||
4. 所有仓库提交者、合并操作者,均视为已阅读并完全认可本规则,**人为执行私有分支向公共分支的合并操作,由操作人承担全部代码泄露、合规违约、项目安全风险**。
|
4. 所有仓库提交者、合并操作者,均视为已阅读并完全认可本规则,**人为执行私有分支向公共分支的合并操作,由操作人承担全部代码泄露、合规违约、项目安全风险**。
|
||||||
|
|
||||||
@@ -68,7 +68,7 @@
|
|||||||
|
|
||||||
4. 将本规范文件 `LICENSE-Private-Demo` 复制并重命名为 `LICENSE-Private`,作为私有分支生效授权文件。
|
4. 将本规范文件 `LICENSE-Private-Demo` 复制并重命名为 `LICENSE-Private`,作为私有分支生效授权文件。
|
||||||
|
|
||||||
5. 将以上所有变更执行一次性 Git 提交,**提交信息必须固定使用以下内容,不可修改**:
|
5. 将以上所有变更执行一次性 Git 提交,**提交信息必须固定使用以下内容,不可修改**:
|
||||||
|
|
||||||
> 初始化私有开发分支,已切换私有授权文件,本分支禁止任何人为合并、推送至 winboll 公共分支
|
> 初始化私有开发分支,已切换私有授权文件,本分支禁止任何人为合并、推送至 winboll 公共分支
|
||||||
>
|
>
|
||||||
@@ -84,14 +84,14 @@
|
|||||||
|
|
||||||
3. 仓库管理员需严格校验合并请求的分支标识与授权文件,发现带有 `LICENSE-Private` 标记的分支申请合并至公共分支,一律直接拒绝,并记录操作人信息。
|
3. 仓库管理员需严格校验合并请求的分支标识与授权文件,发现带有 `LICENSE-Private` 标记的分支申请合并至公共分支,一律直接拒绝,并记录操作人信息。
|
||||||
|
|
||||||
4. 分支属性校验以根目录授权文件为唯一标准:只要分支内存在 `LICENSE-Private` 文件,就绝对禁止向公共分支发起任何合并操作。
|
4. 分支属性校验以根目录授权文件为唯一标准: 只要分支内存在 `LICENSE-Private` 文件,就绝对禁止向公共分支发起任何合并操作。
|
||||||
|
|
||||||
## 六、分支状态校验与异常处理
|
## 六、分支状态校验与异常处理
|
||||||
|
|
||||||
- 合规公共分支:仅存在 `LICENSE`,无 `LICENSE-Private`
|
- 合规公共分支: 仅存在 `LICENSE`,无 `LICENSE-Private`
|
||||||
|
|
||||||
- 合规私有分支:仅存在 `LICENSE-Private`,无 `LICENSE`
|
- 合规私有分支: 仅存在 `LICENSE-Private`,无 `LICENSE`
|
||||||
|
|
||||||
- 异常状态:两个文件同时存在 / 均不存在 → 立即停止开发与提交,按本规范重置分支状态,严禁执行任何合并操作
|
- 异常状态: 两个文件同时存在 / 均不存在 → 立即停止开发与提交,按本规范重置分支状态,严禁执行任何合并操作
|
||||||
|
|
||||||
> (注:文档部分内容可能由 AI 生成)
|
> (注: 文档部分内容可能由 AI 生成)
|
||||||
|
|||||||
10
README.md
@@ -9,15 +9,15 @@ WinBoLL 手机源码计划,旨在通过核心项目 WinBoLL 构建手机端与
|
|||||||
#### **仓库类型:功能说明**
|
#### **仓库类型:功能说明**
|
||||||
☆ 基础项目分支 WinBoLL:手机端安卓应用开发基础模板。
|
☆ 基础项目分支 WinBoLL:手机端安卓应用开发基础模板。
|
||||||
☆ 应用项目分支 APPBase、AES、PowerBell、Positions**:安卓应用单一管理系列项目。
|
☆ 应用项目分支 APPBase、AES、PowerBell、Positions**:安卓应用单一管理系列项目。
|
||||||
☆ 源码汇总管理 Projects_Keeper**:各类分支源码合并存档,不适宜作为开发库使用。
|
☆ 源码汇总管理 OriginMaster**:各类分支源码合并存档,不适宜作为开发库使用。
|
||||||
|
|
||||||
### 3. 源码合并管理推送路线图
|
### 3. 源码合并管理推送路线图
|
||||||
⚠️ **注意**:仅仅展示不同应用模块源码的综合管理路线。分支合并操作时,必须具备 Git 管理经验。
|
⚠️ **注意**:仅仅展示不同应用模块源码的综合管理路线。分支合并操作时,必须具备 Git 管理经验。
|
||||||
|
|
||||||
★ WinBoLL → APPBase → Projects_Keeper
|
★ WinBoLL → APPBase → OriginMaster
|
||||||
★ WinBoLL → AES → Projects_Keeper
|
★ WinBoLL → AES → OriginMaster
|
||||||
★ WinBoLL → PowerBell → Projects_Keeper
|
★ WinBoLL → PowerBell → OriginMaster
|
||||||
★ WinBoLL → Positions → Projects_Keeper
|
★ WinBoLL → Positions → OriginMaster
|
||||||
|
|
||||||
## 二、WinBoLL 项目核心信息
|
## 二、WinBoLL 项目核心信息
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
#Created by .winboll/winboll_app_build.gradle
|
#Created by .winboll/winboll_app_build.gradle
|
||||||
#Sun May 17 20:53:39 HKT 2026
|
#Tue May 12 13:11:28 HKT 2026
|
||||||
stageCount=5
|
stageCount=4
|
||||||
libraryProject=libaes
|
libraryProject=libaes
|
||||||
baseVersion=15.20
|
baseVersion=15.20
|
||||||
publishVersion=15.20.4
|
publishVersion=15.20.3
|
||||||
buildCount=0
|
buildCount=0
|
||||||
baseBetaVersion=15.20.5
|
baseBetaVersion=15.20.4
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
#Created by .winboll/winboll_app_build.gradle
|
#Created by .winboll/winboll_app_build.gradle
|
||||||
#Sun May 17 16:16:36 HKT 2026
|
#Tue May 12 09:17:15 HKT 2026
|
||||||
stageCount=16
|
stageCount=10
|
||||||
libraryProject=libappbase
|
libraryProject=libappbase
|
||||||
baseVersion=15.20
|
baseVersion=15.20
|
||||||
publishVersion=15.20.15
|
publishVersion=15.20.9
|
||||||
buildCount=0
|
buildCount=0
|
||||||
baseBetaVersion=15.20.16
|
baseBetaVersion=15.20.10
|
||||||
|
|||||||
1
dailystamp/.gitignore
vendored
@@ -1 +0,0 @@
|
|||||||
/build
|
|
||||||
@@ -1,80 +0,0 @@
|
|||||||
apply plugin: 'com.android.application'
|
|
||||||
apply from: '../.winboll/winboll_app_build.gradle'
|
|
||||||
apply from: '../.winboll/winboll_lint_build.gradle'
|
|
||||||
|
|
||||||
def genVersionName(def versionName){
|
|
||||||
// 检查编译标志位配置
|
|
||||||
assert (winbollBuildProps['stageCount'] != null)
|
|
||||||
assert (winbollBuildProps['baseVersion'] != null)
|
|
||||||
// 保存基础版本号
|
|
||||||
winbollBuildProps.setProperty("baseVersion", "${versionName}");
|
|
||||||
//保存编译标志配置
|
|
||||||
FileOutputStream fos = new FileOutputStream(winbollBuildPropsFile)
|
|
||||||
winbollBuildProps.store(fos, "${winbollBuildPropsDesc}");
|
|
||||||
fos.close();
|
|
||||||
|
|
||||||
// 返回编译版本号
|
|
||||||
return "${versionName}." + winbollBuildProps['stageCount']
|
|
||||||
}
|
|
||||||
|
|
||||||
android {
|
|
||||||
compileSdkVersion 30
|
|
||||||
compileOptions {
|
|
||||||
sourceCompatibility JavaVersion.VERSION_1_7
|
|
||||||
targetCompatibility JavaVersion.VERSION_1_7
|
|
||||||
}
|
|
||||||
|
|
||||||
defaultConfig {
|
|
||||||
applicationId "cc.winboll.studio.dailystamp"
|
|
||||||
minSdkVersion 26
|
|
||||||
targetSdkVersion 30
|
|
||||||
versionCode 1
|
|
||||||
// versionName 更新后需要手动设置
|
|
||||||
// .winboll/winbollBuildProps.properties 文件的 stageCount=0
|
|
||||||
// Gradle编译环境下合起来的 versionName 就是 "${versionName}.0"
|
|
||||||
versionName "15.20"
|
|
||||||
if(true) {
|
|
||||||
versionName = genVersionName("${versionName}")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
// 下拉控件
|
|
||||||
api 'com.baoyz.pullrefreshlayout:library:1.2.0'
|
|
||||||
// 拼音搜索
|
|
||||||
// https://mvnrepository.com/artifact/com.github.open-android/pinyin4j
|
|
||||||
api 'com.github.open-android:pinyin4j:2.5.0'
|
|
||||||
// SSH
|
|
||||||
api 'com.jcraft:jsch:0.1.55'
|
|
||||||
// Html 解析
|
|
||||||
api 'org.jsoup:jsoup:1.13.1'
|
|
||||||
// 二维码类库
|
|
||||||
api 'com.google.zxing:core:3.4.1'
|
|
||||||
api 'com.journeyapps:zxing-android-embedded:3.6.0'
|
|
||||||
// 应用介绍页类库
|
|
||||||
api 'io.github.medyo:android-about-page:2.0.0'
|
|
||||||
// 网络连接类库
|
|
||||||
api 'com.squareup.okhttp3:okhttp:4.4.1'
|
|
||||||
// AndroidX 类库
|
|
||||||
api 'androidx.appcompat:appcompat:1.1.0'
|
|
||||||
api 'androidx.cardview:cardview:1.0.0'
|
|
||||||
api 'com.google.android.material:material:1.4.0'
|
|
||||||
//api 'androidx.viewpager:viewpager:1.0.0'
|
|
||||||
//api 'androidx.vectordrawable:vectordrawable:1.1.0'
|
|
||||||
//api 'androidx.vectordrawable:vectordrawable-animated:1.1.0'
|
|
||||||
//api 'androidx.fragment:fragment:1.1.0'
|
|
||||||
|
|
||||||
//注意:以下5个库必须要引入
|
|
||||||
//implementation 'androidx.appcompat:appcompat:1.4.1'
|
|
||||||
api 'androidx.recyclerview:recyclerview:1.0.0'
|
|
||||||
api 'com.google.code.gson:gson:2.8.5'
|
|
||||||
api 'com.github.bumptech.glide:glide:4.9.0'
|
|
||||||
//annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'
|
|
||||||
|
|
||||||
// WinBoLL库 nexus.winboll.cc 地址
|
|
||||||
api 'cc.winboll.studio:libaes:15.20.4'
|
|
||||||
api 'cc.winboll.studio:libappbase:15.20.15'
|
|
||||||
|
|
||||||
api fileTree(dir: 'libs', include: ['*.jar'])
|
|
||||||
}
|
|
||||||
21
dailystamp/proguard-rules.pro
vendored
@@ -1,21 +0,0 @@
|
|||||||
# Add project specific ProGuard rules here.
|
|
||||||
# You can control the set of applied configuration files using the
|
|
||||||
# proguardFiles setting in build.gradle.
|
|
||||||
#
|
|
||||||
# For more details, see
|
|
||||||
# http://developer.android.com/guide/developing/tools/proguard.html
|
|
||||||
|
|
||||||
# If your project uses WebView with JS, uncomment the following
|
|
||||||
# and specify the fully qualified class name to the JavaScript interface
|
|
||||||
# class:
|
|
||||||
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
|
|
||||||
# public *;
|
|
||||||
#}
|
|
||||||
|
|
||||||
# Uncomment this to preserve the line number information for
|
|
||||||
# debugging stack traces.
|
|
||||||
#-keepattributes SourceFile,LineNumberTable
|
|
||||||
|
|
||||||
# If you keep the line number information, uncomment this to
|
|
||||||
# hide the original source file name.
|
|
||||||
#-renamesourcefileattribute SourceFile
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources>
|
|
||||||
<string name="app_name">印记标签 ☼</string>
|
|
||||||
</resources>
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources>
|
|
||||||
<string name="app_name">Daily Stamp ☼</string>
|
|
||||||
</resources>
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources>
|
|
||||||
<string name="app_name">印记标签 ☼</string>
|
|
||||||
</resources>
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<resources>
|
|
||||||
<color name="colorPrimary">#009688</color>
|
|
||||||
<color name="colorPrimaryDark">#00796B</color>
|
|
||||||
<color name="colorAccent">#FF9800</color>
|
|
||||||
<color name="mainWindowBackgroundColor">#FFF5F5F5</color>
|
|
||||||
<color name="mainWindowTextColor">#FF000000</color>
|
|
||||||
<color name="toolbarBackgroundColor">#FF009688</color>
|
|
||||||
<color name="toolbarTextColor">#FFFFFFFF</color>
|
|
||||||
<color name="debugTextColor">#FF808080</color>
|
|
||||||
</resources>
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
<resources>
|
|
||||||
|
|
||||||
<style name="MyAppTheme" parent="Theme.AppCompat.Light.NoActionBar">
|
|
||||||
<item name="colorPrimary">@color/colorPrimary</item>
|
|
||||||
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
|
|
||||||
<item name="colorAccent">@color/colorAccent</item>
|
|
||||||
|
|
||||||
<item name="themeDebug">@style/MyDebugActivityTheme</item>
|
|
||||||
<item name="toolbarBackgroundColor">@color/toolbarBackgroundColor</item>
|
|
||||||
<item name="toolbarTextColor">@color/toolbarTextColor</item>
|
|
||||||
<item name="textViewBackgroundColor">?attr/mainWindowBackgroundColor</item>
|
|
||||||
<item name="textViewTextColor">?attr/mainWindowTextColor</item>
|
|
||||||
<item name="editTextBackgroundColor">?attr/mainWindowBackgroundColor</item>
|
|
||||||
<item name="editTextTextColor">?attr/mainWindowTextColor</item>
|
|
||||||
<item name="scrollViewBackgroundColor">?attr/mainWindowBackgroundColor</item>
|
|
||||||
<item name="activityBackgroundColor">?attr/mainWindowBackgroundColor</item>
|
|
||||||
<item name="activityTextColor">?attr/mainWindowTextColor</item>
|
|
||||||
<item name="mainWindowBackgroundColor">@color/mainWindowBackgroundColor</item>
|
|
||||||
<item name="mainWindowTextColor">@color/mainWindowTextColor</item>
|
|
||||||
<item name="mainWindowDarkBackgroundColor">@color/mainWindowBackgroundColor</item>
|
|
||||||
<item name="mainWindowDarkTextColor">@color/mainWindowTextColor</item>
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<style name="MyDebugActivityTheme" parent="Theme.AppCompat.Light.NoActionBar">
|
|
||||||
<item name="android:statusBarColor">@color/colorPrimaryDark</item>
|
|
||||||
<item name="colorTittle">?attr/mainWindowTextColor</item>
|
|
||||||
<item name="colorTittleBackgound">?attr/toolbarBackgroundColor</item>
|
|
||||||
<item name="colorText">?attr/debugTextColor</item>
|
|
||||||
<item name="colorTextBackgound">?attr/mainWindowBackgroundColor</item>
|
|
||||||
<item name="debugTextColor">@color/debugTextColor</item>
|
|
||||||
<item name="toolbarTextColor">@color/toolbarTextColor</item>
|
|
||||||
</style>
|
|
||||||
|
|
||||||
</resources>
|
|
||||||
37
debugtemp/README.md
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
# WinBoLL
|
||||||
|
|
||||||
|
#### 介绍
|
||||||
|
WinBoLL 应用编译功能临时调试项目
|
||||||
|
|
||||||
|
#### 软件架构
|
||||||
|
适配安卓应用 [AIDE Pro] 的 Gradle 编译结构。
|
||||||
|
也适配安卓应用 [AndroidIDE] 的 Gradle 编译结构。
|
||||||
|
|
||||||
|
|
||||||
|
#### Gradle 编译说明
|
||||||
|
调试版编译命令 :gradle assembleBetaDebug
|
||||||
|
阶段版编译命令 :bash .winboll/bashPublishAPKAddTag.sh debugtemp
|
||||||
|
|
||||||
|
#### 使用说明
|
||||||
|
3. Termux应用配置:
|
||||||
|
- 已安装Termux(包名 com.termux );
|
||||||
|
- 执行 echo "allow-external-apps = true" > ~/.termux/termux.properties
|
||||||
|
|
||||||
|
#### 参与贡献
|
||||||
|
|
||||||
|
1. Fork 本仓库
|
||||||
|
2. 新建 Feat_xxx 分支
|
||||||
|
3. 提交代码 : ZhanGSKen(ZhanGSKen<zhangsken@188.com>)
|
||||||
|
4. 新建 Pull Request
|
||||||
|
|
||||||
|
|
||||||
|
#### 特技
|
||||||
|
|
||||||
|
1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md
|
||||||
|
2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com)
|
||||||
|
3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目
|
||||||
|
4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
|
||||||
|
5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help)
|
||||||
|
6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
|
||||||
|
|
||||||
|
#### 参考文档
|
||||||
59
debugtemp/build.gradle
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
apply plugin: 'com.android.application'
|
||||||
|
apply from: '../.winboll/winboll_app_build.gradle'
|
||||||
|
apply from: '../.winboll/winboll_lint_build.gradle'
|
||||||
|
|
||||||
|
def genVersionName(def versionName){
|
||||||
|
// 检查编译标志位配置
|
||||||
|
assert (winbollBuildProps['stageCount'] != null)
|
||||||
|
assert (winbollBuildProps['baseVersion'] != null)
|
||||||
|
// 保存基础版本号
|
||||||
|
winbollBuildProps.setProperty("baseVersion", "${versionName}");
|
||||||
|
//保存编译标志配置
|
||||||
|
FileOutputStream fos = new FileOutputStream(winbollBuildPropsFile)
|
||||||
|
winbollBuildProps.store(fos, "${winbollBuildPropsDesc}");
|
||||||
|
fos.close();
|
||||||
|
|
||||||
|
// 返回编译版本号
|
||||||
|
return "${versionName}." + winbollBuildProps['stageCount']
|
||||||
|
}
|
||||||
|
|
||||||
|
android {
|
||||||
|
// 适配MIUI12
|
||||||
|
compileSdkVersion 30
|
||||||
|
buildToolsVersion "30.0.3"
|
||||||
|
|
||||||
|
defaultConfig {
|
||||||
|
applicationId "cc.winboll.studio.debugtemp"
|
||||||
|
minSdkVersion 26
|
||||||
|
// 适配MIUI12
|
||||||
|
targetSdkVersion 30
|
||||||
|
versionCode 1
|
||||||
|
// versionName 更新后需要手动设置
|
||||||
|
// .winboll/winbollBuildProps.properties 文件的 stageCount=0
|
||||||
|
// Gradle编译环境下合起来的 versionName 就是 "${versionName}.0"
|
||||||
|
versionName "15.20"
|
||||||
|
if(true) {
|
||||||
|
versionName = genVersionName("${versionName}")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 确保 Java 7 兼容性(已适配项目技术栈)
|
||||||
|
compileOptions {
|
||||||
|
sourceCompatibility JavaVersion.VERSION_1_7
|
||||||
|
targetCompatibility JavaVersion.VERSION_1_7
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
api project(':libdebugtemp')
|
||||||
|
|
||||||
|
// WinBoLL库 nexus.winboll.cc 地址
|
||||||
|
api 'cc.winboll.studio:libaes:15.20.3'
|
||||||
|
api 'cc.winboll.studio:libappbase:15.20.9'
|
||||||
|
|
||||||
|
// WinBoLL备用库 jitpack.io 地址
|
||||||
|
//api 'com.github.ZhanGSKen:AES:aes-v15.20.3'
|
||||||
|
//api 'com.github.ZhanGSKen:APPBase:appbase-v15.20.9'
|
||||||
|
|
||||||
|
api fileTree(dir: 'libs', include: ['*.jar'])
|
||||||
|
}
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
#Created by .winboll/winboll_app_build.gradle
|
#Created by .winboll/winboll_app_build.gradle
|
||||||
#Mon May 18 14:32:43 GMT 2026
|
#Fri May 01 17:09:11 HKT 2026
|
||||||
stageCount=0
|
stageCount=0
|
||||||
libraryProject=
|
libraryProject=libdebugtemp
|
||||||
baseVersion=15.20
|
baseVersion=15.20
|
||||||
publishVersion=15.20.0
|
publishVersion=15.20.0
|
||||||
buildCount=1
|
buildCount=0
|
||||||
baseBetaVersion=15.20.1
|
baseBetaVersion=15.20.1
|
||||||
137
debugtemp/proguard-rules.pro
vendored
Normal file
@@ -0,0 +1,137 @@
|
|||||||
|
# Add project specific ProGuard rules here.
|
||||||
|
# By default, the flags in this file are appended to flags specified
|
||||||
|
# in C:\tools\adt-bundle-windows-x86_64-20131030\sdk/tools/proguard/proguard-android.txt
|
||||||
|
# You can edit the include path and order by changing the proguardFiles
|
||||||
|
# directive in build.gradle.
|
||||||
|
#
|
||||||
|
# For more details, see
|
||||||
|
# http://developer.android.com/guide/developing/tools/proguard.html
|
||||||
|
|
||||||
|
# Add any project specific keep options here:
|
||||||
|
|
||||||
|
# ============================== 基础通用规则 ==============================
|
||||||
|
# 保留系统组件
|
||||||
|
-keep public class * extends android.app.Activity
|
||||||
|
-keep public class * extends android.app.Service
|
||||||
|
-keep public class * extends android.content.BroadcastReceiver
|
||||||
|
-keep public class * extends android.content.ContentProvider
|
||||||
|
-keep public class * extends android.app.backup.BackupAgentHelper
|
||||||
|
-keep public class * extends android.preference.Preference
|
||||||
|
|
||||||
|
# 保留 WinBoLL 核心包及子类(合并简化规则)
|
||||||
|
-keep class cc.winboll.studio.** { *; }
|
||||||
|
-keepclassmembers class cc.winboll.studio.** { *; }
|
||||||
|
|
||||||
|
# 保留所有类中的 public static final String TAG 字段(便于日志定位)
|
||||||
|
-keepclassmembers class * {
|
||||||
|
public static final java.lang.String TAG;
|
||||||
|
}
|
||||||
|
|
||||||
|
# 保留序列化类(避免Parcelable/Gson解析异常)
|
||||||
|
-keep class * implements android.os.Parcelable {
|
||||||
|
public static final android.os.Parcelable$Creator *;
|
||||||
|
}
|
||||||
|
-keepclassmembers class * implements java.io.Serializable {
|
||||||
|
static final long serialVersionUID;
|
||||||
|
private static final java.io.ObjectStreamField[] serialPersistentFields;
|
||||||
|
private void writeObject(java.io.ObjectOutputStream);
|
||||||
|
private void readObject(java.io.ObjectInputStream);
|
||||||
|
java.lang.Object writeReplace();
|
||||||
|
java.lang.Object readResolve();
|
||||||
|
}
|
||||||
|
|
||||||
|
# 保留 R 文件(避免资源ID混淆)
|
||||||
|
-keepclassmembers class **.R$* {
|
||||||
|
public static <fields>;
|
||||||
|
}
|
||||||
|
|
||||||
|
# 保留 native 方法(避免JNI调用失败)
|
||||||
|
-keepclasseswithmembernames class * {
|
||||||
|
native <methods>;
|
||||||
|
}
|
||||||
|
|
||||||
|
# 保留注解和泛型(避免反射/序列化异常)
|
||||||
|
-keepattributes *Annotation*
|
||||||
|
-keepattributes Signature
|
||||||
|
|
||||||
|
# 屏蔽 Java 8+ 警告(适配 Java 7 语法)
|
||||||
|
-dontwarn java.lang.invoke.*
|
||||||
|
-dontwarn android.support.v8.renderscript.*
|
||||||
|
-dontwarn java.util.function.**
|
||||||
|
|
||||||
|
# ============================== 第三方框架专项规则 ==============================
|
||||||
|
# OkHttp 4.4.1(米盟广告请求依赖,完善Lambda兼容)
|
||||||
|
-keep class okhttp3.** { *; }
|
||||||
|
-keep interface okhttp3.** { *; }
|
||||||
|
-keep class okhttp3.internal.** { *; }
|
||||||
|
-keep class okio.** { *; }
|
||||||
|
-dontwarn okhttp3.internal.platform.**
|
||||||
|
-dontwarn okio.**
|
||||||
|
|
||||||
|
# Glide 4.9.0(米盟广告图片加载依赖)
|
||||||
|
-keep public class * implements com.bumptech.glide.module.GlideModule
|
||||||
|
-keep public class * extends com.bumptech.glide.module.AppGlideModule
|
||||||
|
-keep public enum com.bumptech.glide.load.ImageHeaderParser$ImageType {
|
||||||
|
**[] $VALUES;
|
||||||
|
public *;
|
||||||
|
}
|
||||||
|
-keepclassmembers class * implements com.bumptech.glide.module.AppGlideModule {
|
||||||
|
<init>();
|
||||||
|
}
|
||||||
|
-dontwarn com.bumptech.glide.**
|
||||||
|
|
||||||
|
# Gson 2.8.5(米盟广告数据序列化依赖)
|
||||||
|
-keep class com.google.gson.** { *; }
|
||||||
|
-keep interface com.google.gson.** { *; }
|
||||||
|
-keepclassmembers class * {
|
||||||
|
@com.google.gson.annotations.SerializedName <fields>;
|
||||||
|
}
|
||||||
|
|
||||||
|
# 米盟 SDK(核心广告组件,完整保留避免加载失败)
|
||||||
|
-keep class com.miui.zeus.** { *; }
|
||||||
|
-keep interface com.miui.zeus.** { *; }
|
||||||
|
# 保留米盟日志字段(便于广告加载失败排查)
|
||||||
|
-keepclassmembers class com.miui.zeus.mimo.sdk.** {
|
||||||
|
public static final java.lang.String TAG;
|
||||||
|
}
|
||||||
|
|
||||||
|
# RecyclerView 1.0.0(米盟广告布局渲染依赖)
|
||||||
|
-keep class androidx.recyclerview.** { *; }
|
||||||
|
-keep interface androidx.recyclerview.** { *; }
|
||||||
|
-keepclassmembers class androidx.recyclerview.widget.RecyclerView$Adapter {
|
||||||
|
public *;
|
||||||
|
}
|
||||||
|
|
||||||
|
# 其他第三方框架(按引入依赖保留,无则可删除)
|
||||||
|
# XXPermissions 18.63
|
||||||
|
-keep class com.hjq.permissions.** { *; }
|
||||||
|
-keep interface com.hjq.permissions.** { *; }
|
||||||
|
|
||||||
|
# ZXing 二维码(核心解析组件)
|
||||||
|
-keep class com.google.zxing.** { *; }
|
||||||
|
-keep class com.journeyapps.zxing.** { *; }
|
||||||
|
|
||||||
|
# Jsoup HTML解析
|
||||||
|
-keep class org.jsoup.** { *; }
|
||||||
|
|
||||||
|
# Pinyin4j 拼音搜索
|
||||||
|
-keep class net.sourceforge.pinyin4j.** { *; }
|
||||||
|
|
||||||
|
# JSch SSH组件
|
||||||
|
-keep class com.jcraft.jsch.** { *; }
|
||||||
|
|
||||||
|
# AndroidX 基础组件
|
||||||
|
-keep class androidx.appcompat.** { *; }
|
||||||
|
-keep interface androidx.appcompat.** { *; }
|
||||||
|
|
||||||
|
# ============================== 优化与调试配置 ==============================
|
||||||
|
# 优化级别(平衡混淆效果与性能)
|
||||||
|
-optimizationpasses 5
|
||||||
|
-optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/*
|
||||||
|
|
||||||
|
# 调试辅助(保留行号便于崩溃定位)
|
||||||
|
-verbose
|
||||||
|
-dontpreverify
|
||||||
|
-dontusemixedcaseclassnames
|
||||||
|
-keepattributes SourceFile,LineNumberTable
|
||||||
|
|
||||||
@@ -1,4 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<string name="app_name">Daily Stamp</string>
|
|
||||||
|
<string name="app_name">DebugTemp☆</string>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
<?xml version='1.0' encoding='utf-8'?>
|
<?xml version='1.0' encoding='utf-8'?>
|
||||||
<manifest
|
<manifest
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
package="cc.winboll.studio.dailystamp">
|
package="cc.winboll.studio.debugtemp">
|
||||||
|
|
||||||
<application
|
<application
|
||||||
android:allowBackup="true"
|
android:allowBackup="true"
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package cc.winboll.studio.dailystamp;
|
package cc.winboll.studio.debugtemp;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.ClipData;
|
import android.content.ClipData;
|
||||||
@@ -51,11 +51,7 @@ public class App extends GlobalApplication {
|
|||||||
|
|
||||||
// 初始化 Toast 框架
|
// 初始化 Toast 框架
|
||||||
ToastUtils.init(this);
|
ToastUtils.init(this);
|
||||||
// 设置 Toast 布局样式
|
|
||||||
//ToastUtils.setView(R.layout.view_toast);
|
|
||||||
// ToastUtils.setStyle(new WhiteToastStyle());
|
|
||||||
// ToastUtils.setGravity(Gravity.BOTTOM, 0, 200);
|
|
||||||
//
|
|
||||||
//CrashHandler.getInstance().registerGlobal(this);
|
//CrashHandler.getInstance().registerGlobal(this);
|
||||||
//CrashHandler.getInstance().registerPart(this);
|
//CrashHandler.getInstance().registerPart(this);
|
||||||
}
|
}
|
||||||
@@ -1,14 +1,17 @@
|
|||||||
package cc.winboll.studio.dailystamp;
|
package cc.winboll.studio.debugtemp;
|
||||||
|
|
||||||
|
import android.content.Intent;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.view.View;
|
||||||
import androidx.appcompat.app.AppCompatActivity;
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
import androidx.appcompat.widget.Toolbar;
|
import androidx.appcompat.widget.Toolbar;
|
||||||
|
import cc.winboll.studio.LibraryActivity;
|
||||||
import cc.winboll.studio.libappbase.LogView;
|
import cc.winboll.studio.libappbase.LogView;
|
||||||
import cc.winboll.studio.libappbase.ToastUtils;
|
import cc.winboll.studio.libappbase.ToastUtils;
|
||||||
|
|
||||||
public class MainActivity extends AppCompatActivity {
|
public class MainActivity extends AppCompatActivity {
|
||||||
|
|
||||||
LogView mLogView;
|
LogView mLogView;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
@@ -28,4 +31,8 @@ public class MainActivity extends AppCompatActivity {
|
|||||||
super.onResume();
|
super.onResume();
|
||||||
mLogView.start();
|
mLogView.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void onLibraryActivity(View view) {
|
||||||
|
startActivity(new Intent(this, LibraryActivity.class));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -25,11 +25,19 @@
|
|||||||
android:layout_height="0dp"
|
android:layout_height="0dp"
|
||||||
android:layout_weight="1.0"
|
android:layout_weight="1.0"
|
||||||
android:gravity="center_vertical|center_horizontal">
|
android:gravity="center_vertical|center_horizontal">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/app_name"
|
android:text="DebugTemp"
|
||||||
android:textAppearance="?android:attr/textAppearanceLarge"/>
|
android:textAppearance="?android:attr/textAppearanceLarge"/>
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="Open LibraryActivity"
|
||||||
|
android:onClick="onLibraryActivity"/>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 4.9 KiB |
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 4.5 KiB |
|
Before Width: | Height: | Size: 6.9 KiB After Width: | Height: | Size: 6.9 KiB |
|
Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 6.3 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 9.0 KiB After Width: | Height: | Size: 9.0 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
6
debugtemp/src/main/res/values/colors.xml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
<color name="colorPrimary">#009688</color>
|
||||||
|
<color name="colorPrimaryDark">#00796B</color>
|
||||||
|
<color name="colorAccent">#FF9800</color>
|
||||||
|
</resources>
|
||||||
4
debugtemp/src/main/res/values/strings.xml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<resources>
|
||||||
|
<string name="app_name">DebugTemp</string>
|
||||||
|
|
||||||
|
</resources>
|
||||||
11
debugtemp/src/main/res/values/styles.xml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<resources>
|
||||||
|
|
||||||
|
<!-- Base application theme. -->
|
||||||
|
<style name="MyAppTheme" parent="Theme.AppCompat.Light.NoActionBar">
|
||||||
|
<!-- Customize your theme here. -->
|
||||||
|
<item name="colorPrimary">@color/colorPrimary</item>
|
||||||
|
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
|
||||||
|
<item name="colorAccent">@color/colorAccent</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
|
</resources>
|
||||||
@@ -21,11 +21,6 @@ android {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 米盟 SDK
|
// 米盟 SDK
|
||||||
compileOptions {
|
|
||||||
sourceCompatibility JavaVersion.VERSION_1_7
|
|
||||||
targetCompatibility JavaVersion.VERSION_1_7
|
|
||||||
}
|
|
||||||
|
|
||||||
packagingOptions {
|
packagingOptions {
|
||||||
doNotStrip "*/*/libmimo_1011.so"
|
doNotStrip "*/*/libmimo_1011.so"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
#Created by .winboll/winboll_app_build.gradle
|
#Created by .winboll/winboll_app_build.gradle
|
||||||
#Sun May 17 20:53:39 HKT 2026
|
#Tue May 12 13:11:09 HKT 2026
|
||||||
stageCount=5
|
stageCount=4
|
||||||
libraryProject=libaes
|
libraryProject=libaes
|
||||||
baseVersion=15.20
|
baseVersion=15.20
|
||||||
publishVersion=15.20.4
|
publishVersion=15.20.3
|
||||||
buildCount=0
|
buildCount=0
|
||||||
baseBetaVersion=15.20.5
|
baseBetaVersion=15.20.4
|
||||||
|
|||||||
@@ -50,7 +50,7 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
android:layout_marginTop="0dp"> <!-- 移除顶部多余间距 - android:background="@drawable/bg_container_border" -->
|
android:layout_marginTop="0dp"> <!-- 移除顶部多余间距 -- android:background="@drawable/bg_container_border">
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/iv_winboll_store"
|
android:id="@+id/iv_winboll_store"
|
||||||
|
|||||||
@@ -28,6 +28,6 @@
|
|||||||
<color name="toolbarTextColor">#FFFFFFFF</color>
|
<color name="toolbarTextColor">#FFFFFFFF</color>
|
||||||
<color name="mainWindowBackgroundColor">#FF2C2C2C</color>
|
<color name="mainWindowBackgroundColor">#FF2C2C2C</color>
|
||||||
<color name="mainWindowTextColor">#FFFFFFFF</color>
|
<color name="mainWindowTextColor">#FFFFFFFF</color>
|
||||||
<color name="debugTextColor">#FFAAAAAA</color>
|
<color name="debugTextColor">#FFFF0000</color>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
@@ -28,6 +28,6 @@
|
|||||||
<color name="toolbarTextColor">#FFFFFFFF</color>
|
<color name="toolbarTextColor">#FFFFFFFF</color>
|
||||||
<color name="mainWindowBackgroundColor">#FFFFFFFF</color>
|
<color name="mainWindowBackgroundColor">#FFFFFFFF</color>
|
||||||
<color name="mainWindowTextColor">#FF000000</color>
|
<color name="mainWindowTextColor">#FF000000</color>
|
||||||
<color name="debugTextColor">#FF808080</color>
|
<color name="debugTextColor">#FFFF0000</color>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
@@ -25,5 +25,14 @@ android {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
// 网络连接类库
|
||||||
|
api 'com.squareup.okhttp3:okhttp:4.4.1'
|
||||||
|
// Gson
|
||||||
|
api 'com.google.code.gson:gson:2.8.9'
|
||||||
|
// Html 解析
|
||||||
|
api 'org.jsoup:jsoup:1.13.1'
|
||||||
|
// 添加JSch依赖(SFTP核心,com.jcraft:jsch:0.1.54)
|
||||||
|
api 'com.jcraft:jsch:0.1.54'
|
||||||
|
|
||||||
api fileTree(dir: 'libs', include: ['*.jar'])
|
api fileTree(dir: 'libs', include: ['*.jar'])
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
#Created by .winboll/winboll_app_build.gradle
|
#Created by .winboll/winboll_app_build.gradle
|
||||||
#Sun May 17 16:16:36 HKT 2026
|
#Tue May 12 09:16:45 HKT 2026
|
||||||
stageCount=16
|
stageCount=10
|
||||||
libraryProject=libappbase
|
libraryProject=libappbase
|
||||||
baseVersion=15.20
|
baseVersion=15.20
|
||||||
publishVersion=15.20.15
|
publishVersion=15.20.9
|
||||||
buildCount=0
|
buildCount=0
|
||||||
baseBetaVersion=15.20.16
|
baseBetaVersion=15.20.10
|
||||||
|
|||||||
@@ -3,6 +3,18 @@
|
|||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
package="cc.winboll.studio.libappbase">
|
package="cc.winboll.studio.libappbase">
|
||||||
|
|
||||||
|
<!-- 拥有完全的网络访问权限 -->
|
||||||
|
<uses-permission android:name="android.permission.INTERNET"/>
|
||||||
|
|
||||||
|
<!-- 读取您共享存储空间中的内容 -->
|
||||||
|
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
|
||||||
|
|
||||||
|
<!-- 修改或删除您共享存储空间中的内容 -->
|
||||||
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
||||||
|
|
||||||
|
<!-- MANAGE_EXTERNAL_STORAGE -->
|
||||||
|
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>
|
||||||
|
|
||||||
<application
|
<application
|
||||||
android:requestLegacyExternalStorage="true"
|
android:requestLegacyExternalStorage="true"
|
||||||
android:networkSecurityConfig="@xml/network_security_config">
|
android:networkSecurityConfig="@xml/network_security_config">
|
||||||
|
|||||||
@@ -135,8 +135,8 @@ public class LogUtils {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final long KEEP_FILE_SIZE = 25000L; // ~25KB 确保剪贴板可完整复制
|
final long MAX_FILE_SIZE = 6291456L;
|
||||||
final long MAX_FILE_SIZE = 2*KEEP_FILE_SIZE;
|
final long KEEP_FILE_SIZE = 3145728L;
|
||||||
final long fileSize = _mfLogCatchFile.length();
|
final long fileSize = _mfLogCatchFile.length();
|
||||||
|
|
||||||
if (fileSize <= MAX_FILE_SIZE) {
|
if (fileSize <= MAX_FILE_SIZE) {
|
||||||
|
|||||||
@@ -12,11 +12,13 @@ import android.widget.ImageButton;
|
|||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import cc.winboll.studio.libappbase.GlobalApplication;
|
import cc.winboll.studio.libappbase.GlobalApplication;
|
||||||
import cc.winboll.studio.libappbase.LogUtils;
|
import cc.winboll.studio.libappbase.LogUtils;
|
||||||
import cc.winboll.studio.libappbase.R;
|
import cc.winboll.studio.libappbase.R;
|
||||||
import cc.winboll.studio.libappbase.ToastUtils;
|
import cc.winboll.studio.libappbase.ToastUtils;
|
||||||
import cc.winboll.studio.libappbase.dialogs.DebugHostDialog;
|
import cc.winboll.studio.libappbase.dialogs.DebugHostDialog;
|
||||||
|
import cc.winboll.studio.libappbase.dialogs.APPValidationDialog;
|
||||||
import cc.winboll.studio.libappbase.models.APPInfo;
|
import cc.winboll.studio.libappbase.models.APPInfo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -326,7 +328,14 @@ public class AboutView extends LinearLayout {
|
|||||||
ToastUtils.show("已取消调试状态,重启应用可生效。");
|
ToastUtils.show("已取消调试状态,重启应用可生效。");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
// 正版校验弹窗
|
||||||
|
ibSigngetDialog.setOnClickListener(new OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
LogUtils.d(TAG, "ibSigngetDialog onClick:唤起应用正版校验弹窗");
|
||||||
|
new APPValidationDialog(mContext, mszAppName, mszAppVersionName).show();
|
||||||
|
}
|
||||||
|
});
|
||||||
// 调试地址配置弹窗
|
// 调试地址配置弹窗
|
||||||
ibWinBoLLHostDialog.setOnClickListener(new OnClickListener() {
|
ibWinBoLLHostDialog.setOnClickListener(new OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
1
libdebugtemp/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
/build
|
||||||
24
libdebugtemp/build.gradle
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
apply plugin: 'com.android.library'
|
||||||
|
apply plugin: 'maven-publish'
|
||||||
|
apply from: '../.winboll/winboll_lib_build.gradle'
|
||||||
|
apply from: '../.winboll/winboll_lint_build.gradle'
|
||||||
|
|
||||||
|
android {
|
||||||
|
// 适配MIUI12
|
||||||
|
compileSdkVersion 30
|
||||||
|
buildToolsVersion "30.0.3"
|
||||||
|
|
||||||
|
defaultConfig {
|
||||||
|
minSdkVersion 26
|
||||||
|
targetSdkVersion 30
|
||||||
|
}
|
||||||
|
|
||||||
|
compileOptions {
|
||||||
|
sourceCompatibility JavaVersion.VERSION_1_7
|
||||||
|
targetCompatibility JavaVersion.VERSION_1_7
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
api fileTree(dir: 'libs', include: ['*.jar'])
|
||||||
|
}
|
||||||
8
libdebugtemp/build.properties
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
#Created by .winboll/winboll_app_build.gradle
|
||||||
|
#Fri May 01 17:09:11 HKT 2026
|
||||||
|
stageCount=57
|
||||||
|
libraryProject=libdebugtemp
|
||||||
|
baseVersion=15.0
|
||||||
|
publishVersion=15.0.56
|
||||||
|
buildCount=0
|
||||||
|
baseBetaVersion=15.0.57
|
||||||
17
libdebugtemp/proguard-rules.pro
vendored
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
# Add project specific ProGuard rules here.
|
||||||
|
# By default, the flags in this file are appended to flags specified
|
||||||
|
# in C:/tools/adt-bundle-windows-x86_64-20131030/sdk/tools/proguard/proguard-android.txt
|
||||||
|
# You can edit the include path and order by changing the proguardFiles
|
||||||
|
# directive in build.gradle.
|
||||||
|
#
|
||||||
|
# For more details, see
|
||||||
|
# http://developer.android.com/guide/developing/tools/proguard.html
|
||||||
|
|
||||||
|
# Add any project specific keep options here:
|
||||||
|
|
||||||
|
# If your project uses WebView with JS, uncomment the following
|
||||||
|
# and specify the fully qualified class name to the JavaScript interface
|
||||||
|
# class:
|
||||||
|
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
|
||||||
|
# public *;
|
||||||
|
#}
|
||||||
13
libdebugtemp/src/main/AndroidManifest.xml
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
package="cc.winboll.studio" >
|
||||||
|
|
||||||
|
<application>
|
||||||
|
<activity
|
||||||
|
android:name=".LibraryActivity"
|
||||||
|
android:label="@string/lib_name" >
|
||||||
|
</activity>
|
||||||
|
</application>
|
||||||
|
|
||||||
|
</manifest>
|
||||||
|
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
package cc.winboll.studio;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.os.Bundle;
|
||||||
|
|
||||||
|
public class LibraryActivity extends Activity {
|
||||||
|
@Override
|
||||||
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
setContentView(R.layout.library);
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
libdebugtemp/src/main/res/drawable-hdpi/ic_launcher.png
Normal file
|
After Width: | Height: | Size: 9.2 KiB |
BIN
libdebugtemp/src/main/res/drawable-mdpi/ic_launcher.png
Normal file
|
After Width: | Height: | Size: 5.1 KiB |
BIN
libdebugtemp/src/main/res/drawable-xhdpi/ic_launcher.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
libdebugtemp/src/main/res/drawable-xxhdpi/ic_launcher.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
11
libdebugtemp/src/main/res/layout/library.xml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:gravity="center">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:text="@string/text_libraryactivity"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
5
libdebugtemp/src/main/res/values-v21/styles.xml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
<style name="AppTheme" parent="@android:style/Theme.Material.Light">
|
||||||
|
</style>
|
||||||
|
</resources>
|
||||||
8
libdebugtemp/src/main/res/values/strings.xml
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
|
||||||
|
<string name="lib_name">libdebugtemp</string>
|
||||||
|
<string name="hello_world">Hello world!</string>
|
||||||
|
<string name="text_libraryactivity">LibraryActivity</string>
|
||||||
|
|
||||||
|
</resources>
|
||||||
5
libdebugtemp/src/main/res/values/styles.xml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
<style name="AppTheme" parent="@android:style/Theme.Holo.Light">
|
||||||
|
</style>
|
||||||
|
</resources>
|
||||||
@@ -96,7 +96,3 @@
|
|||||||
// AutoNFC 项目编译设置
|
// AutoNFC 项目编译设置
|
||||||
//include ':autonfc'
|
//include ':autonfc'
|
||||||
//rootProject.name = "autonfc"
|
//rootProject.name = "autonfc"
|
||||||
|
|
||||||
// DailyStamp 项目编译设置
|
|
||||||
//include ':dailystamp'
|
|
||||||
//rootProject.name = "dailystamp"
|
|
||||||
|
|||||||