Compare commits
7 Commits
50a06f028c
...
winboll
| Author | SHA1 | Date | |
|---|---|---|---|
| 566041cdfd | |||
| 5c43e05c63 | |||
|
|
3b979a1f23 | ||
| 915ce03831 | |||
| 6b7e71acbf | |||
| caca1d1137 | |||
| e92aa6699e |
@@ -111,6 +111,38 @@ android {
|
|||||||
println '[ WinBoLLStudio ] : The APKOutputPath property is not defined in winboll.properties, please configure APK output folder first.'
|
println '[ WinBoLLStudio ] : The APKOutputPath property is not defined in winboll.properties, please configure APK output folder first.'
|
||||||
} else {
|
} else {
|
||||||
/// WINBOLL 主机的 APK 发布和源码管理操作 ///
|
/// WINBOLL 主机的 APK 发布和源码管理操作 ///
|
||||||
|
|
||||||
|
// Stage Debug 编译前清理任务
|
||||||
|
// 当目标应用包文件已经存在时,先删除旧有的应用包文件,再执行 assembleStageDebug 编译。
|
||||||
|
if(variant.flavorName == "stage" && variant.buildType.name == "debug") {
|
||||||
|
String szCfgVersionName = "${versionName}"
|
||||||
|
String[] szCfgListTemp = szCfgVersionName.split("-")
|
||||||
|
String szCfgShortVersionName = szCfgListTemp[0]
|
||||||
|
String szCfgCommonTagAPKName = project.rootDir.name + "_" + szCfgShortVersionName + ".apk"
|
||||||
|
File cfgOutTagDir = new File(fWinBoLLStudioDir, "/" + project.rootDir.name + "/${variant.buildType.name}/")
|
||||||
|
|
||||||
|
def cleanOldStageDebugApkTask = tasks.register("cleanOld${variant.name.capitalize()}Apk") {
|
||||||
|
group = 'build'
|
||||||
|
description = '删除旧有的 Stage Debug 应用包文件(存在时),然后才执行编译。'
|
||||||
|
doLast {
|
||||||
|
[szCfgCommonTagAPKName, outputFileName].unique().each { String apkName ->
|
||||||
|
File oldApkFile = new File(cfgOutTagDir, apkName)
|
||||||
|
if(oldApkFile.exists()) {
|
||||||
|
println "[ WinBoLLStudio ] : Delete old APK -> " + oldApkFile.getAbsolutePath()
|
||||||
|
if(!oldApkFile.delete()) {
|
||||||
|
throw new GradleException("Can not delete old APK : " + oldApkFile.getAbsolutePath())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} // tasks.register(
|
||||||
|
|
||||||
|
// 编译任务先执行清理旧应用包任务
|
||||||
|
variant.getAssembleProvider().configure {
|
||||||
|
dependsOn cleanOldStageDebugApkTask
|
||||||
|
}
|
||||||
|
} // if(stage && debug)
|
||||||
|
|
||||||
variant.getAssembleProvider().get().doFirst {
|
variant.getAssembleProvider().get().doFirst {
|
||||||
/* 后期管理预留代码 */
|
/* 后期管理预留代码 */
|
||||||
} //doFirst {
|
} //doFirst {
|
||||||
|
|||||||
39
AGENTS.md
Normal file
39
AGENTS.md
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
# AGENTS.md
|
||||||
|
|
||||||
|
## 编译
|
||||||
|
|
||||||
|
使用以下命令编译项目(所有开发构建均使用此命令):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./gradlew assembleBetaDebug
|
||||||
|
```
|
||||||
|
|
||||||
|
## 编译后上传
|
||||||
|
|
||||||
|
- 每次 `./gradlew assembleBetaDebug` 编译成功(BUILD SUCCESSFUL)后,紧接着执行上传脚本:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
../upload_APK_To_ALiYunPan.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
- 上传失败不阻塞流程,但必须向用户提示失败原因。
|
||||||
|
|
||||||
|
## 开发约束
|
||||||
|
|
||||||
|
- 只允许修改 `winboll/` 目录(含 `src/`、`build.gradle` 等)和 `.winboll/` 目录(构建/发布脚本、`*_build.gradle` 模板等)进行开发。
|
||||||
|
- 不要改动 `aes/`、`appbase/`、`libaes/`、`libappbase/` 及根目录配置文件。
|
||||||
|
|
||||||
|
## 源码提交(Git 注释)工作流
|
||||||
|
|
||||||
|
当用户说「提交一下源码」时,按以下两步处理,未经确认绝不提交:
|
||||||
|
|
||||||
|
1. **生成注释预览方案(只读,不改动仓库)**
|
||||||
|
- 执行 `git status --short`、`git diff` 查看全部修改内容,必要时用 `git diff --staged`、`git log --oneline -10` 参考历史注释风格。
|
||||||
|
- 根据实际修改内容撰写提交注释(中文简述为主,发布类沿用 `<winboll>...` 风格)。
|
||||||
|
- 向用户输出一份提交方案预览:包含**注释全文**、**将要提交的文件清单**、**不提交的文件及原因**(如构建产物、临时文件),交由用户审查。
|
||||||
|
|
||||||
|
2. **用户回复「确定」后才实际提交**
|
||||||
|
- 只 `git add` 预览中列出的文件,不夹带无关改动。
|
||||||
|
- 执行 `git commit`,提交注释必须与用户确认过的完全一致。
|
||||||
|
- 未经用户明确「确定」,不得执行 `git commit`;用户修改注释后需重新给出预览并再次等待确认。
|
||||||
|
- 本工作流默认只提交到本地,`git push` 需用户另行指示。
|
||||||
4
opencode.json
Normal file
4
opencode.json
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://opencode.ai/config.json",
|
||||||
|
"model": "opencode/mimo-v2.6-flash-free"
|
||||||
|
}
|
||||||
@@ -35,7 +35,7 @@ android {
|
|||||||
// versionName 更新后需要手动设置
|
// versionName 更新后需要手动设置
|
||||||
// .winboll/winbollBuildProps.properties 文件的 stageCount=0
|
// .winboll/winbollBuildProps.properties 文件的 stageCount=0
|
||||||
// Gradle编译环境下合起来的 versionName 就是 "${versionName}.0"
|
// Gradle编译环境下合起来的 versionName 就是 "${versionName}.0"
|
||||||
versionName "15.20"
|
versionName "15.21"
|
||||||
if(true) {
|
if(true) {
|
||||||
versionName = genVersionName("${versionName}")
|
versionName = genVersionName("${versionName}")
|
||||||
}
|
}
|
||||||
@@ -100,12 +100,12 @@ dependencies {
|
|||||||
implementation 'androidx.biometric:biometric:1.1.0'
|
implementation 'androidx.biometric:biometric:1.1.0'
|
||||||
|
|
||||||
// WinBoLL库 nexus.winboll.cc 地址
|
// WinBoLL库 nexus.winboll.cc 地址
|
||||||
api 'cc.winboll.studio:libappbase:15.20.34'
|
//api 'cc.winboll.studio:libappbase:15.21.+'
|
||||||
api 'cc.winboll.studio:libaes:15.20.17'
|
//api 'cc.winboll.studio:libaes:15.21.+'
|
||||||
|
|
||||||
// 备用库 jitpack.io 地址
|
// 备用库 jitpack.io 地址
|
||||||
//api 'com.github.ZhanGSKen:libappbase:appbase-v15.20.33'
|
api 'com.github.ZhanGSKen:libappbase:appbase-v15.21.+'
|
||||||
//api 'com.github.ZhanGSKen:libaes:aes-v15.20.16'
|
api 'com.github.ZhanGSKen:libaes:aes-v15.21.+'
|
||||||
|
|
||||||
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
|
||||||
#Wed Jul 01 03:24:33 CST 2026
|
#Fri Sep 25 16:15:27 HKT 2026
|
||||||
stageCount=9
|
stageCount=1
|
||||||
libraryProject=
|
libraryProject=
|
||||||
baseVersion=15.20
|
baseVersion=15.21
|
||||||
publishVersion=15.20.8
|
publishVersion=15.21.0
|
||||||
buildCount=8
|
buildCount=12
|
||||||
baseBetaVersion=15.20.9
|
baseBetaVersion=15.21.1
|
||||||
|
|||||||
Reference in New Issue
Block a user