Compare commits

...

1118 Commits

Author SHA1 Message Date
c4e88e9593 编译配置初始化 2025-06-24 19:18:23 +08:00
08d9d92ae4 <autoinstaller>APK 15.2.2 release Publish. 2025-06-24 09:54:47 +08:00
74841c08dc 编译参数修复 2025-06-24 09:52:39 +08:00
945bacb825 <autoinstaller>APK 15.2.1 release Publish. 2025-06-24 09:49:39 +08:00
0e464495fd 编译调试 2025-06-24 09:45:47 +08:00
e8682ce410 Merge remote-tracking branch 'origin/androidxdemo' into appbase 2025-06-19 20:56:32 +08:00
2e4003dae0 编译调试 2025-06-19 20:52:02 +08:00
198b0975ce <libaes>Library Release 15.9.1 2025-06-19 20:42:45 +08:00
24a578a9d2 <aes>APK 15.9.1 release Publish. 2025-06-19 20:42:26 +08:00
46de24447f 编译调试 2025-06-19 20:40:41 +08:00
1320984829 修改项目关键设置说明 2025-06-09 11:17:21 +08:00
abf1e5ba42 添加 WinBoLL 应用签名密钥配置说明。 2025-06-09 11:07:59 +08:00
1cd2f88038 标记重点与选项 2025-06-09 10:49:23 +08:00
3f6e583d68 添加应用签名密钥配置说明。 2025-06-09 10:47:38 +08:00
271456bfcd <appbase>APK 15.8.8 release Publish. 2025-06-09 09:38:21 +08:00
ee5458d82c 忽略GitHub工作流启动标记与执行 2025-06-09 09:37:15 +08:00
3a83367f71 与NumTable模块建立时的变更源码合并,并且修复AES模块编译参数。 2025-06-09 01:56:31 +08:00
74b9350a6a <aes>APK 15.9.0 release Publish. 2025-06-09 01:44:30 +08:00
d2858f23f7 准备与NumTable模块项目合并。先提升AES模块版本号,掌控模块源码版本控制优先权。 2025-06-09 01:42:49 +08:00
40a5b9c339 <numtable>APK 15.1.0 release Publish. 2025-06-08 21:21:12 +08:00
fd79113572 设置NumTable版本号 2025-06-08 21:19:54 +08:00
9b911b583c <numtable>APK 15.0.0 release Publish. 2025-06-08 21:16:53 +08:00
37817c3e8c <numtable>Start New Stage Version. 2025-06-08 21:14:54 +08:00
0b5402f5f3 设置应用图标方案 2025-06-08 21:10:47 +08:00
bea22e3853 添加NumTable项目 2025-06-08 20:19:58 +08:00
7e2ad0c01d 精简代码 2025-06-05 17:00:28 +08:00
476ce02fc8 Json数据适配吻合 2025-06-05 15:06:55 +08:00
bc697279ad 编译参数修复 2025-06-05 12:03:14 +08:00
dee01f1179 接口初步对接,正在调试数据处理方法... 2025-06-05 11:59:36 +08:00
a500decc7a 登录数据加密解密成功 2025-06-05 09:52:04 +08:00
5099d00050 <appbase>APK 15.8.7 release Publish. 2025-06-04 15:04:39 +08:00
515d14e896 编译测试 2025-06-04 15:04:01 +08:00
f630e27ed8 编译参数修复 2025-06-04 15:03:06 +08:00
cd7ed01216 添加Logon框和RSA加密模块。 2025-06-04 14:58:01 +08:00
bb24bbfbd1 <appbase>APK 15.8.6 release Publish. 2025-06-04 13:17:34 +08:00
2ba2f88510 添加调试模块 2025-06-04 13:16:51 +08:00
db3a3644a8 <appbase>APK 15.8.5 release Publish. 2025-06-04 12:14:48 +08:00
556bfa7024 添加主机识别 2025-06-04 12:11:19 +08:00
4842a1ec30 添加云宝云测试接口 2025-06-04 11:21:26 +08:00
b0388a2972 Merge remote-tracking branch 'origin/powerbell' into appbase 2025-06-03 20:17:33 +08:00
bd5a1f18ce Merge remote-tracking branch 'origin/ollama' into appbase 2025-06-03 20:17:27 +08:00
99798b4816 Merge branch 'androidxdemo' into appbase 2025-06-03 20:11:30 +08:00
f93b6047a8 Merge remote-tracking branch 'origin/androiddemo' into appbase 2025-06-03 20:07:55 +08:00
daa3f858a0 Merge remote-tracking branch 'origin/aes' into appbase 2025-06-03 20:07:49 +08:00
3fded32426 Merge remote-tracking branch 'origin/apputils' into appbase 2025-06-03 20:07:42 +08:00
8f85006040 Merge branch 'androiddemo' into appbase 2025-06-03 20:05:45 +08:00
e28b0bd75e <libaes>Library Release 15.8.1 2025-06-03 19:17:10 +08:00
af1d6d3439 <aes>APK 15.8.1 release Publish. 2025-06-03 19:16:41 +08:00
470d1ffa1f 编译测试 2025-06-03 19:13:16 +08:00
49ae869df1 Merge remote-tracking branch 'origin/aes' into appbase 2025-06-03 17:54:27 +08:00
77e98bafe4 <libapputils>Library Release 15.8.4 2025-06-03 15:05:54 +08:00
ff14d0c0c3 <apputils>APK 15.8.4 release Publish. 2025-06-03 15:05:42 +08:00
950be3a182 <libapputils>Library Release 15.8.3 2025-06-03 14:35:23 +08:00
1f20fca9be <apputils>APK 15.8.3 release Publish. 2025-06-03 14:35:00 +08:00
8d29d11078 Merge branch 'apputils' into m2 2025-06-03 13:50:51 +08:00
7534881f50 <libappbase>Library Release 15.8.4 2025-06-03 13:40:13 +08:00
ef992dcd7c <appbase>APK 15.8.4 release Publish. 2025-06-03 13:40:01 +08:00
71c1baa4ba <libappbase>Library Release 15.8.3 2025-06-03 13:26:16 +08:00
9e149037db <appbase>APK 15.8.3 release Publish. 2025-06-03 13:25:47 +08:00
89df24f736 更新秘钥库 2025-06-03 13:24:10 +08:00
2118495bc8 更新秘钥库 2025-06-03 13:13:54 +08:00
1dd614bd68 更新秘钥库 2025-06-03 12:58:51 +08:00
b793c74e81 修改应用秘钥配置 2025-06-03 12:04:39 +08:00
8d1872a893 应用介绍页,完成论坛与Git仓库连接跳转。 2025-06-01 20:50:03 +08:00
5c58ee34e7 添加说明书 2025-06-01 20:24:36 +08:00
e530403af7 Merge remote-tracking branch 'origin/appbase' into aes 2025-06-01 16:29:05 +08:00
264ab802c5 更新Git项目名称 2025-06-01 16:28:28 +08:00
7c1832dc05 更新类库 2025-06-01 16:06:12 +08:00
9a0ee889ba 更新类库 2025-06-01 16:04:21 +08:00
c40066ca4d 更新类库 2025-06-01 16:03:16 +08:00
5348d1ef6d <libapputils>Library Release 15.8.2 2025-06-01 16:01:39 +08:00
063c997bbb <apputils>APK 15.8.2 release Publish. 2025-06-01 16:01:19 +08:00
1376ca7ebb Merge remote-tracking branch 'origin/appbase' into apputils 2025-06-01 15:59:59 +08:00
92e271b569 更新类库 2025-06-01 15:58:12 +08:00
a5083cc52f 更新类库 2025-06-01 15:43:48 +08:00
0692d4efb2 <libappbase>Library Release 15.8.2 2025-06-01 15:41:59 +08:00
f10438d3d3 <appbase>APK 15.8.2 release Publish. 2025-06-01 15:41:38 +08:00
1e697bc12d 添加调试信息 2025-06-01 15:03:44 +08:00
d5a3c626b3 修复多窗口重复创建问题 2025-06-01 14:02:56 +08:00
56692db142 20250531_213355_576 2025-05-31 21:34:04 +08:00
934d54963a 添加日志窗口打开功能 2025-05-30 09:42:36 +08:00
c105123e7b 0922 2025-05-30 09:22:42 +08:00
d8c534bbc8 更新适配系统介绍 2025-05-30 09:00:59 +08:00
6cce9c4d3f <powerbell>APK 15.4.1 release Publish. 2025-05-29 09:43:37 +08:00
df18c34976 <powerbell>APK 15.4.0 release Publish. 2025-05-29 09:43:12 +08:00
22ca83b5b7 版本号调整 2025-05-29 09:38:25 +08:00
98233ce148 编译测试 2025-05-29 09:31:28 +08:00
41fd9b171b 更新联系邮件 2025-05-29 09:28:13 +08:00
330e5032df Merge remote-tracking branch 'origin/mymessagemanager' into appbase 2025-05-21 01:14:52 +08:00
76420ff5f4 <mymessagemanager>APK 15.2.5 release Publish. 2025-05-20 20:39:06 +08:00
ee3553716c 编译调试 2025-05-20 20:31:06 +08:00
02da4c3db9 Merge remote-tracking branch 'origin/appbase' into contacts 2025-05-20 20:21:52 +08:00
d689db61ff 分支合并修整 2025-05-20 20:16:03 +08:00
2b090e5c8e <contacts>APK 15.3.2 release Publish. 2025-05-20 13:02:18 +08:00
309214ecf3 更新类库 2025-05-20 12:54:44 +08:00
d29c9de3b4 合并20250520_122311_006 2025-05-20 12:23:15 +08:00
d7efdb6c02 编译调试 2025-05-20 11:28:25 +08:00
20b36dd63b Merge remote-tracking branch 'origin/androidxdemo' into appbase 2025-05-20 05:46:28 +08:00
a40450c085 Merge remote-tracking branch 'origin/androiddemo' into appbase 2025-05-20 05:46:23 +08:00
e7a7a4438c 更新类库 2025-05-20 05:45:52 +08:00
3e6de13fa3 更新类库 2025-05-20 05:44:07 +08:00
af848809e9 <libappbase>Library Release 15.8.1 2025-05-20 05:41:16 +08:00
2c7026a635 <appbase>APK 15.8.1 release Publish. 2025-05-20 05:40:58 +08:00
6278c3f945 修复次级窗口打开时传递的参数缺失问题 2025-05-20 05:39:48 +08:00
bc3a320433 移除WinBoLL应用模块 2025-05-13 12:01:35 +08:00
e03b8d4745 Merge remote-tracking branch 'origin/androidxdemo' into appbase 2025-05-13 11:52:23 +08:00
d5fb348134 Merge remote-tracking branch 'origin/androiddemo' into appbase 2025-05-13 11:52:17 +08:00
5c7437b19c Merge remote-tracking branch 'origin/aes' into appbase 2025-05-13 11:52:11 +08:00
bf09def10b 更新适配系统版本 2025-05-13 11:44:39 +08:00
8431d7dfa9 更新适配系统版本 2025-05-13 11:43:25 +08:00
6aadaf87af 更新类库版本 2025-05-13 11:40:34 +08:00
6a2943420f 更新类库版本 2025-05-13 11:34:56 +08:00
dc704e292a <libaes>Library Release 15.8.0 2025-05-13 11:22:45 +08:00
1087a7837c <aes>APK 15.8.0 release Publish. 2025-05-13 11:22:24 +08:00
59876a2353 设置基础版本号 2025-05-13 11:21:27 +08:00
053b45e87e <libapputils>Library Release 15.8.1 2025-05-13 11:18:15 +08:00
58e49ed371 <apputils>APK 15.8.1 release Publish. 2025-05-13 11:17:53 +08:00
90a6eb266b 编译调试 2025-05-13 11:17:24 +08:00
f0a564c9bb <apputils>Start New Stage Version. 2025-05-13 11:11:32 +08:00
46b21331af Merge remote-tracking branch 'origin/appbase' into apputils 2025-05-13 11:10:47 +08:00
6221cc30ac <libapputils>Library Release 15.8.0 2025-05-13 11:10:23 +08:00
8489ee6447 <apputils>APK 15.8.0 release Publish. 2025-05-13 11:09:58 +08:00
9205af4aa9 编译调试 2025-05-13 11:08:42 +08:00
780e730a38 设置基础版本号 2025-05-13 11:08:04 +08:00
429499885b <libappbase>Library Release 15.8.0 2025-05-13 11:05:19 +08:00
fcf4ad2fc0 <appbase>APK 15.8.0 release Publish. 2025-05-13 11:05:02 +08:00
7635f6f084 设置基础版本号 2025-05-13 11:03:55 +08:00
e49935f772 <libappbase>Library Release 15.7.7 2025-05-13 10:29:25 +08:00
381ddf9e40 <appbase>APK 15.7.7 release Publish. 2025-05-13 10:28:56 +08:00
7774317c3b Merge remote-tracking branch 'origin/appbase' into aes 2025-05-13 09:55:12 +08:00
16f45aabe4 <aes>APK 15.6.3 release Publish. 2025-05-12 18:10:35 +08:00
8190f4818f <aes>APK 15.6.2 release Publish. 2025-05-12 18:10:02 +08:00
f339733d4b <aes>APK 15.6.1 release Publish. 2025-05-12 18:07:00 +08:00
f770ea5aa0 Merge remote-tracking branch 'origin/aes' into appbase 2025-05-12 18:04:01 +08:00
0a993ccb9b 设置 Gradle 编译时的本地 Maven 库路径 2025-05-12 18:03:14 +08:00
9d0bdb803b Merge remote-tracking branch 'origin/aes' into appbase 2025-05-12 15:19:29 +08:00
9bd4c41b75 添加 Maven 库紧急备用通道 2025-05-12 15:19:02 +08:00
af0b8859f0 编译调试 2025-05-12 03:37:14 +08:00
275330f553 Merge remote-tracking branch 'origin/aes' into appbase 2025-05-12 03:35:32 +08:00
42256fd0e4 更新 Maven 库引用方案 2025-05-12 03:34:18 +08:00
fa72983f54 编译调试 2025-05-10 11:17:04 +08:00
35825d5ead 更换联系方式 2025-05-10 09:32:55 +08:00
577237bc9e 修整说明书 2025-05-09 20:11:14 +08:00
8ef41b9f1b 再次修复一下 2025-05-09 20:08:32 +08:00
36733e362b 恢复到77bdf886e9ab348cb2853d42dd80a7e4bfa43d7d提交点 2025-05-09 19:58:52 +08:00
fbf71e6998 设置OriginMaster提交点合并APPBase源码。 2025-05-08 17:56:09 +08:00
2a11205468 添加 gradle 调试码 2025-05-07 20:00:44 +08:00
bb9f46373a Merge remote-tracking branch 'origin/timestamp' into appbase 2025-05-07 19:23:19 +08:00
af797743d4 <timestamp>APK 15.1.1 release Publish. 2025-05-07 15:07:02 +08:00
1b37f1bd11 修改图标资源 2025-05-07 15:06:16 +08:00
00177284c1 <timestamp>APK 15.1.0 release Publish. 2025-05-07 14:54:01 +08:00
178e00f8b4 更新版本号 2025-05-07 14:53:32 +08:00
743a5d5299 <timestamp>Start New Stage Version. 2025-05-07 14:51:24 +08:00
30f75f2394 <timestamp>Start New Stage Version. 2025-05-07 14:51:14 +08:00
9d66934694 图标资源修改 2025-05-07 14:48:50 +08:00
c7177f5fa5 <timestamp>APK 15.0.16 release Publish. 2025-05-07 14:44:06 +08:00
9e8263ae8f 分开应用图标和调试图标 2025-05-07 14:43:20 +08:00
5ee9da1982 <timestamp>APK 15.0.15 release Publish. 2025-05-07 14:05:50 +08:00
f59f7676b7 调整通知栏显示信息 2025-05-07 14:05:12 +08:00
19b8251182 <timestamp>APK 15.0.14 release Publish. 2025-05-07 13:59:51 +08:00
4dadb15c0c <timestamp>APK 15.0.13 release Publish. 2025-05-07 13:59:38 +08:00
21b5487513 设置时间戳初始数据 2025-05-07 13:58:56 +08:00
f49c8141a8 <timestamp>APK 15.0.12 release Publish. 2025-05-07 13:48:06 +08:00
6f3ce092ca 调整调试版与阶段版的消息发送 2025-05-07 13:47:26 +08:00
29785be88d 修复信息显示 2025-05-07 13:46:21 +08:00
bf0a70e056 Merge remote-tracking branch 'origin/timestamp' into appbase 2025-05-07 13:34:00 +08:00
3f809e4c7a <timestamp>APK 15.0.11 release Publish. 2025-05-07 13:33:12 +08:00
9c3c485ecd 更新Maven库地址 2025-05-07 13:32:10 +08:00
336511931d <timestamp>APK 15.0.10 release Publish. 2025-05-07 12:09:48 +08:00
d3da3304ee 统一时间戳数据生成方法 2025-05-07 11:58:48 +08:00
a5295a0744 更新Maven库地址 2025-05-07 11:58:14 +08:00
9b761b35ce <timestamp>APK 15.0.9 release Publish. 2025-05-07 10:56:24 +08:00
5206f8781e 初始数据 BugFix. 2025-05-07 10:55:46 +08:00
2c0a5bfe65 更新默认时间戳显示格式 2025-05-07 10:51:48 +08:00
49bce0f773 <timestamp>APK 15.0.8 release Publish. 2025-05-07 10:48:11 +08:00
07c6778212 优化UI显示 2025-05-07 10:47:19 +08:00
1cdad9ac7d <timestamp>APK 15.0.7 release Publish. 2025-05-07 02:58:13 +08:00
986922c1fa 添加自定义应用内铃声 2025-05-07 02:57:08 +08:00
bff40d2a64 重构通知栏消息,添加铃声。 2025-05-07 02:35:51 +08:00
c687b5513d 更新说明书 2025-05-07 00:31:11 +08:00
13e0ad3f03 <timestamp>APK 15.0.6 release Publish. 2025-05-06 20:37:48 +08:00
be85ef923e 更新应用图标,优化状态栏UI。 2025-05-06 20:36:51 +08:00
9a3383a43b <timestamp>APK 15.0.5 release Publish. 2025-05-06 18:33:59 +08:00
d875b6965d <timestamp>APK 15.0.4 release Publish. 2025-05-06 18:33:32 +08:00
bc873852c2 修复时间戳复制格式设置未保存问题 2025-05-06 18:32:51 +08:00
b032de55dc 添加说明书 2025-05-06 18:14:34 +08:00
8fa20b56ec <timestamp>APK 15.0.3 release Publish. 2025-05-06 18:01:46 +08:00
1ca93a610e 优化常驻通知电量消耗 2025-05-06 17:59:57 +08:00
6555346618 重构通知栏模块 2025-05-06 17:04:14 +08:00
df6633046c <timestamp>APK 15.0.2 release Publish. 2025-05-06 11:34:02 +08:00
7d35d5a9b8 添加通知栏打开主窗口功能 2025-05-06 11:33:28 +08:00
ddce5646bd <timestamp>APK 15.0.1 release Publish. 2025-05-06 11:27:46 +08:00
3607a99053 添加通知栏清理功能 2025-05-06 11:27:09 +08:00
b44e5575b3 Merge remote-tracking branch 'origin/timestamp' into appbase 2025-05-06 11:18:33 +08:00
6a101d8843 <timestamp>Start New Stage Version. 2025-05-06 11:17:47 +08:00
c5e5e76bbf <timestamp>APK 15.0.0 release Publish. 2025-05-06 11:17:44 +08:00
6d05808a2a 设置目标版本 2025-05-06 11:13:35 +08:00
2625ffe6a6 通知栏优先级设置调试 2025-05-06 11:11:45 +08:00
9c4c1320aa 添加拷贝时间戳到剪贴板功能 2025-05-06 11:07:28 +08:00
551b424960 添加时间戳拷贝与显示的格式设置功能 2025-05-06 10:48:53 +08:00
1062c7d2ee 重构常驻通知栏 2025-05-06 10:09:34 +08:00
e958556073 0937 2025-05-05 21:37:22 +08:00
466e061aa8 0343 2025-05-05 15:43:41 +08:00
2f2512cd76 修复时间戳复制按钮响应 2025-05-05 12:39:45 +08:00
d26de8f2f7 1153 2025-05-05 11:53:48 +08:00
2e9b6ae263 添加通知栏时间戳显示 2025-05-05 11:30:41 +08:00
f0a29dc7a9 添加常驻通知栏 2025-05-05 10:45:25 +08:00
7c7554133b <contacts>APK 15.3.1 release Publish. 2025-05-05 03:56:16 +08:00
98f6d0019b 修复盾牌参数问题 2025-05-05 03:55:03 +08:00
fc9c82921d 修复盾牌参数不同步问题 2025-05-05 03:51:07 +08:00
1ac0ad96e1 云盾规则修复 2025-05-05 03:44:52 +08:00
125c2b4431 初始化 TimeStamp 时间戳应用。 2025-05-04 22:03:06 +08:00
9060cb51ff <contacts>APK 15.3.0 release Publish. 2025-05-04 21:09:15 +08:00
7951d0a8d6 类库更新,BugFix. 2025-05-04 21:07:56 +08:00
ded775ae01 类库更新,BugFix。 2025-05-04 21:01:31 +08:00
82258f1763 <contacts>Start New Stage Version. 2025-05-04 20:57:46 +08:00
99bf53f27d 把 WinBoll 改为 WinBoLL 2025-05-04 20:08:37 +08:00
ddb6b53189 Merge remote-tracking branch 'origin/appbase' into contacts 2025-05-04 19:49:28 +08:00
4a4e20a6bd 常驻通知栏点击BugFix. 2025-05-04 13:33:15 +08:00
4c0d825d7b Merge remote-tracking branch 'origin/appbase' into autoinstaller 2025-05-04 13:29:22 +08:00
ae111b3a99 2025-05-04 13:27:55 +08:00
03ceaf3e2a Merge remote-tracking branch 'origin/powerbell' into appbase 2025-05-04 13:23:10 +08:00
ae8da772c0 常驻通知栏UI优化。 2025-05-03 20:50:53 +08:00
b2555ebfd3 类库升级,源码编译整理。 2025-05-03 20:48:33 +08:00
7ff2cab615 源码整理 2025-05-03 19:36:03 +08:00
954139f0c9 Merge remote-tracking branch 'origin/appbase' into aes 2025-05-03 18:34:10 +08:00
027dc23060 更新Maven库地址设置 2025-05-03 18:33:41 +08:00
82d9aabf33 Merge remote-tracking branch 'origin/appbase' into mymessagemanager 2025-05-03 16:50:15 +08:00
640f0c39e9 常驻通知栏UI优化。 2025-05-03 16:44:32 +08:00
9816167e87 优化通知栏显示文字 2025-05-03 14:22:27 +08:00
512c321b76 优化常驻通知栏显示UI 2025-05-03 14:19:32 +08:00
482c007481 应用服务启动后延迟2秒执行提醒任务 2025-05-03 14:01:56 +08:00
609182f909 编译测试 2025-05-03 13:53:48 +08:00
eb69a473a3 调整类库引用顺序 2025-05-03 13:53:32 +08:00
38e4deb425 修复应用不能打开的Bug. 2025-05-03 13:46:46 +08:00
d06023d023 (打开应用)的按钮修复 2025-05-03 13:21:32 +08:00
cb486bb90c 更新类库,BugFix。 2025-05-03 11:52:00 +08:00
2cbf9e5669 Merge remote-tracking branch 'origin/appbase' into autoinstaller 2025-05-03 10:09:42 +08:00
e045bbb71c Merge remote-tracking branch 'origin/appbase' into contacts 2025-05-02 06:16:49 +08:00
e772563fc0 模块清理 2025-05-02 06:16:08 +08:00
d5782da040 Merge remote-tracking branch 'origin/appbase' into contacts 2025-05-02 06:12:40 +08:00
55ce968053 <powerbell>APK 15.3.0 release Publish. 2025-04-29 21:00:39 +08:00
502d3ad23d 升级版本号,升级引用类库。设置适配的Android API为30. 2025-04-29 20:42:50 +08:00
103c1101ce Merge remote-tracking branch 'origin/appbase' into powerbell 2025-04-29 20:08:31 +08:00
03d4cf2efe Merge remote-tracking branch 'origin/apputils' into appbase 2025-04-29 15:15:58 +08:00
15fa0ad506 Merge remote-tracking branch 'origin/aes' into appbase 2025-04-29 15:15:52 +08:00
0dfc7df4b5 <libaes>Library Release 15.6.0 2025-04-29 15:14:45 +08:00
f33956c872 <aes>APK 15.6.0 release Publish. 2025-04-29 15:14:21 +08:00
9283ad709f 升级版本号 2025-04-29 15:13:53 +08:00
459fff1531 <aes>APK 15.5.0 release Publish. 2025-04-29 15:11:54 +08:00
b4fb680b8c 更新 Android API 目标版本,更新基础类库,把 WinBoll 改为 WinBoLL。 2025-04-29 15:09:25 +08:00
cf933da3aa <libapputils>Library Release 15.3.4 2025-04-29 15:04:20 +08:00
2bd8947af1 <apputils>APK 15.3.4 release Publish. 2025-04-29 15:03:54 +08:00
28f2ada31a 把 WinBoll 改为 WinBoLL。 2025-04-29 15:03:10 +08:00
81669f03b3 <libappbase>Library Release 15.7.6 2025-04-29 14:47:37 +08:00
980eb533bf <appbase>APK 15.7.6 release Publish. 2025-04-29 14:47:16 +08:00
4fcef89a10 编译测试 2025-04-29 14:46:07 +08:00
3127a26056 文件清理 2025-04-29 14:45:53 +08:00
897875b368 把 WinBoll 改为 WinBoLL 2025-04-29 14:39:39 +08:00
e12dd5630b Merge remote-tracking branch 'origin/apputils' into appbase 2025-04-29 14:10:58 +08:00
23519f1ec9 <libapputils>Library Release 15.3.3 2025-04-29 14:08:14 +08:00
7dc2668d42 <apputils>APK 15.3.3 release Publish. 2025-04-29 14:07:52 +08:00
63f424c149 Merge remote-tracking branch 'github/apputils' into appbase 2025-04-29 14:06:04 +08:00
ff9f5b42b9 整理代码 2025-04-29 14:05:21 +08:00
077a5fc616 更换主题基础类 2025-04-29 14:04:40 +08:00
62fd671f6e 调整适配Android API 级别 2025-04-29 13:45:03 +08:00
3dd66d387a Merge remote-tracking branch 'origin/appbase' into apputils 2025-04-29 13:42:04 +08:00
dab1412bc4 <libappbase>Library Release 15.7.5 2025-04-29 13:40:47 +08:00
aca23ca727 <appbase>APK 15.7.5 release Publish. 2025-04-29 13:40:21 +08:00
5e8070ae01 调整类库依赖,改为基本Android API依赖。 2025-04-29 13:39:36 +08:00
d737766459 Merge remote-tracking branch 'origin/appbase' into apputils 2025-04-29 13:16:20 +08:00
f8e9afddd1 <libappbase>Library Release 15.7.4 2025-04-29 13:15:31 +08:00
f8bb5a7852 <appbase>APK 15.7.4 release Publish. 2025-04-29 13:14:59 +08:00
5a1f1f2d73 修改 WinBoll 为 WinBoLL 2025-04-29 13:04:45 +08:00
0e4dc85dfa Merge remote-tracking branch 'origin/appbase' into aes 2025-04-29 12:48:41 +08:00
2be7e2cbaf 编译测试 2025-04-29 12:21:17 +08:00
24f598294e 编译调试 2025-04-29 12:19:32 +08:00
b5e918b364 更新应用图标 2025-04-29 12:18:51 +08:00
50561a2f67 更换Android适配版本 2025-04-29 12:18:32 +08:00
204642a5cd <aes>Start New Stage Version. 2025-04-29 00:22:19 +08:00
daf10dd727 <aes>Start New Stage Version. 2025-04-29 00:21:59 +08:00
2005ba6aee 设置版本号 2025-04-29 00:21:37 +08:00
6adc96449b <aes>Start New Stage Version. 2025-04-29 00:19:26 +08:00
4d8675f1f7 编译测试 2025-04-29 00:10:58 +08:00
2467f3b5a8 Merge remote-tracking branch 'origin/appbase' into aes 2025-04-29 00:08:31 +08:00
33726a306f 编译测试 2025-04-29 00:07:26 +08:00
99199d445e <apputils>APK 15.3.2 release Publish. 2025-04-28 21:34:43 +08:00
a629941054 编译测试 2025-04-28 21:22:06 +08:00
3a2274d7a2 Merge remote-tracking branch 'origin/appbase' into apputils 2025-04-28 21:20:38 +08:00
32a0e47c87 <appbase>APK 15.7.3 release Publish. 2025-04-28 21:17:52 +08:00
82af906fed <appbase>APK 15.7.2 release Publish. 2025-04-28 21:14:11 +08:00
d13a8a445e <appbase>APK 15.7.1 release Publish. 2025-04-28 21:13:53 +08:00
6d02c9fc49 <appbase>APK 15.7.0 release Publish. 2025-04-28 21:13:29 +08:00
10a8c2c1ed <appbase>Start New Stage Version. 2025-04-28 21:08:18 +08:00
bff0ec4e57 设定版本号 2025-04-28 21:07:08 +08:00
aa101977f0 把 WinBoll 名称改为 WinBoLL 2025-04-28 21:04:17 +08:00
a88e1b2d99 git repos fix 2025-04-28 20:12:28 +08:00
363fa0c3b3 <appbase>Start New Stage Version. 2025-04-28 20:06:05 +08:00
ebb0df2a74 <appbase>Start New Stage Version. 2025-04-28 20:05:46 +08:00
ed193119f6 设定版本号(baseBetaVersion 版本要比publishVersion 版本加多 1 个版本) 2025-04-28 00:36:58 +08:00
b8834627ae 编译测试 2025-04-27 21:10:23 +08:00
b918b04068 编译检查 2025-04-27 21:07:46 +08:00
f0326bc9a3 Merge remote-tracking branch 'origin/appbase' into apputils 2025-04-27 21:04:10 +08:00
164c00ee0d Merge remote-tracking branch 'origin/appbase' into aes 2025-04-27 21:03:34 +08:00
f4a054663e 设定版本号 2025-04-27 21:02:50 +08:00
d17dd8073d 编译测试 2025-04-27 21:00:31 +08:00
b34d777c9f 合并appbase 2025-04-27 20:55:34 +08:00
455e38ac0c Merge remote-tracking branch 'origin/appbase' into apputils 2025-04-27 20:52:28 +08:00
7150974d01 根目录 Gradle 配置回复,移除就的秘钥配置文件。 2025-04-27 20:42:01 +08:00
c2794e7322 回复先前版本 2025-04-27 20:28:37 +08:00
2ce07bbcf3 <libaes>Library Release 15.4.1 2025-04-27 17:40:14 +08:00
7932e25def <aes>APK 15.4.1 release Publish. 2025-04-27 17:39:51 +08:00
191de5c511 <aes>APK 15.4.0 release Publish. 2025-04-27 17:39:39 +08:00
d520c9ae06 <aes>Start New Stage Version. 2025-04-27 17:36:17 +08:00
933abbc261 <aes>Start New Stage Version. 2025-04-27 17:36:08 +08:00
14a161ab3f 更新版本号 2025-04-27 17:35:16 +08:00
248b8084dc Merge branch 'aes' of https://zhangsken.winboll.cc/ZhanGSKen/APPBase.git into aes 2025-04-27 17:31:08 +08:00
006cefea2a <aes>Start New Stage Version. 2025-04-27 17:30:08 +08:00
ad1b6ca3e9 编译测试 2025-04-27 17:26:24 +08:00
37c93658b3 <aes>Start New Stage Version. 2025-04-27 14:03:25 +08:00
65aae2146e 更新版本号 2025-04-27 14:03:03 +08:00
58eba26eb5 <aes>Start New Stage Version. 2025-04-27 14:00:56 +08:00
a32b10cdec 更新类库 2025-04-27 13:48:45 +08:00
559d41e46c <libapputils>Library Release 15.3.1 2025-04-27 13:42:58 +08:00
ef9c0f08ae <apputils>APK 15.3.1 release Publish. 2025-04-27 13:42:46 +08:00
18b078c644 与AppCompatActivity引用一样,类继承层数不能是两层。 2025-04-27 13:41:49 +08:00
b68d8a58e3 <libapputils>Library Release 15.3.0 2025-04-27 11:20:08 +08:00
9eec7060b9 <apputils>APK 15.3.0 release Publish. 2025-04-27 11:19:49 +08:00
e572486b05 设置版本号 2025-04-27 11:17:19 +08:00
4737ce92e1 <apputils>Start New Stage Version. 2025-04-27 11:14:42 +08:00
7abe096779 移除类库依赖 2025-04-27 11:11:48 +08:00
839bf72eca <libappbase>Library Release 15.4.8 2025-04-27 11:03:44 +08:00
3f2ec872f8 <appbase>APK 15.4.8 release Publish. 2025-04-27 11:03:35 +08:00
b62cbc043b 移除类库依赖 2025-04-27 11:02:06 +08:00
d0e7f1f56c <libappbase>Library Release 15.4.7 2025-04-27 10:06:01 +08:00
39fe25f34f <appbase>APK 15.4.7 release Publish. 2025-04-27 10:05:40 +08:00
94f444d6c7 更新版本号 2025-04-27 10:05:16 +08:00
33952a90de <appbase>APK 15.2.6 release Publish. 2025-04-27 10:02:38 +08:00
4c1fece9f0 更新秘钥配置方式 2025-04-27 09:59:15 +08:00
b60de856ca Merge branch 'appbase' into winboll 2025-04-26 21:16:41 +08:00
37d5d1efe0 更新秘钥配置方式,更新APK文件输出目录,更新说明书。 2025-04-26 20:29:31 +08:00
c11102d729 开发者联系邮箱 2025-04-26 19:16:10 +08:00
6cc04f8e6f 修正说明书标题部分 2025-04-26 17:52:58 +08:00
2bc7db1dca 将appbase子项目拷贝为winboll子项目。 2025-04-24 20:19:19 +08:00
96f31e252c 设置类库资源地址引用顺序。 2025-04-24 20:11:58 +08:00
ZhanGSKen
4612593d88 添加调试日志 2025-04-15 20:47:23 +08:00
ZhanGSKen
0460613aea 固定参数属性初始化方法综合 2025-04-15 20:43:18 +08:00
ZhanGSKen
e1dadfa41c 源码检查,辅助提交。 2025-04-15 19:45:34 +08:00
ZhanGSKen
1a7134711e 实现磁贴工具静态挂载... 2025-04-15 18:22:17 +08:00
ZhanGSKen
dabd1271fd 重构磁贴状态更新方法 2025-04-15 17:23:19 +08:00
ZhanGSKen
0d3d691d8a 添加应用图标文件 2025-04-15 17:10:01 +08:00
ZhanGSKen
f3198de003 源码整理 2025-04-15 16:18:26 +08:00
ZhanGSKen
df179242f0 清理冗余注释 2025-04-15 16:09:39 +08:00
ZhanGSKen
1ae3fdf2b7 取消磁贴状态更新 2025-04-15 16:07:49 +08:00
ZhanGSKen
7edc341f15 整理代码 2025-04-15 16:03:45 +08:00
ZhanGSKen
f1669f9e41 更新应用实例参数上下文 2025-04-15 16:00:42 +08:00
ZhanGSKen
63b1d2dece 添加磁贴工具... 2025-04-15 10:57:19 +08:00
ZhanGSKen
6a0510e76c 取消用应用外部的路径作为临时目录,转为应用内部缓存目录里的文件夹作为临时目录。 2025-04-14 21:01:46 +08:00
ZhanGSKen
840da14438 资源化配置Bobulltoon数据地址。 2025-04-14 20:11:47 +08:00
ZhanGSKen
31595fe1ae 添加HTTP明文传输配置 2025-04-14 19:53:33 +08:00
ZhanGSKen
2c91d32e41 在号码识别对比中,兼容当前区域号码。 2025-04-14 16:36:24 +08:00
ZhanGSKen
f9bfdd3de8 Merge branch 'app_important_fix' into appbase 2025-04-13 03:04:52 +08:00
ZhanGSKen
58dabb7138 保持现有Contacts分支,加入紧急修复分支。 2025-04-13 02:59:21 +08:00
ZhanGSKen
0f787de4d9 <contacts>APK 15.2.7 release Publish. 2025-04-13 02:46:10 +08:00
ZhanGSKen
c476792d7c 定义云盾参数有效区域值 2025-04-13 02:04:48 +08:00
ZhanGSKen
ee421d1019 Merge branch 'contacts' into app_important_fix 2025-04-13 00:45:42 +08:00
ZhanGSKen
cd277497a3 Merge remote-tracking branch 'origin/contacts' into appbase 2025-04-13 00:45:11 +08:00
ZhanGSKen
3432575aa7 添加BoBullToon URL 自定义功能... 2025-04-12 21:14:33 +08:00
ZhanGSKen
29300da793 <appbase>APK 15.2.5 release Publish. 2025-04-12 15:06:52 +08:00
ZhanGSKen
74bfb6d227 <appbase>APK 15.2.4 release Publish. 2025-04-12 15:00:29 +08:00
ZhanGSKen
43af33c21d <appbase>APK 15.2.3 release Publish. 2025-04-12 14:57:53 +08:00
ZhanGSKen
8452680514 更换 BoBullToon 数据请求地址 2025-04-12 12:26:08 +08:00
ZhanGSKen
1338e1a6a5 疑似APP模块项目命名问题,系统出现病毒报错。现在移除该模块项目。 2025-04-11 12:28:20 +08:00
ZhanGSKen
398db803cf Merge branch 'app' into appbase 2025-04-11 12:23:47 +08:00
ZhanGSKen
39cb0bfe36 <app>APK 15.0.3 release Publish. 2025-04-11 12:16:58 +08:00
ZhanGSKen
84fa0005b8 <app>APK 15.0.2 release Publish. 2025-04-11 12:12:12 +08:00
ZhanGSKen
e2bccd3a7c APP_15.0.1.apk版本,手机系统发出病毒报错。现在重新编译扫毒检查。再次发布。 2025-04-11 12:05:28 +08:00
ZhanGSKen
0f8e66506e 清理过期项目 2025-04-08 01:03:07 +08:00
ZhanGSKen
d8f9545ed2 Merge branch 'positions' into appbase 2025-04-08 01:01:36 +08:00
ZhanGSKen
ce75de5a68 项目源码停止公开发布。列入私有应用项目计划。 2025-04-08 00:43:04 +08:00
ZhanGSKen
0ed96d6a33 重新排版任务提醒总开关位置 2025-04-08 00:14:39 +08:00
ZhanGSKen
5774c1484d 调整任务列表高度。 2025-04-07 19:07:31 +08:00
ZhanGSKen
f251fe5326 添加任务列表附加功能按钮 2025-04-07 13:59:41 +08:00
ZhanGSKen
5d15b11282 设计单一任务数据模型 2025-04-07 13:57:14 +08:00
ZhanGSKen
f85af921d7 添加Task UI 简要设计 2025-04-05 18:06:34 +08:00
ZhanGSKen
3db85b9878 位置项添加功能测试完成 2025-04-05 15:05:37 +08:00
ZhanGSKen
489bc87959 解决LeftScrollView内容宽度设置问题,使用parent.getMeasuredWidth()解决。 2025-04-05 14:21:15 +08:00
ZhanGSKen
029d4193e1 位置项编辑框UI优化 2025-04-05 13:44:47 +08:00
ZhanGSKen
4cafbae077 精简源码,位置列表框UI优化 2025-04-05 12:32:46 +08:00
ZhanGSKen
4b9f34b946 修复列表项宽度初始化问题 2025-04-05 10:52:24 +08:00
ZhanGSKen
5cb4f6c409 更换类库,解决编译报错问题。 2025-04-04 13:22:41 +08:00
ZhanGSKen
f9e48a159d 添加位置模型数据添加功能 2025-04-03 21:25:09 +08:00
ZhanGSKen
65f182c235 调整定位显示和提示。 2025-04-03 19:20:22 +08:00
ZhanGSKen
d9bf0f2297 添加腾讯地图定位按钮 2025-04-03 14:42:48 +08:00
ZhanGSKen
d025fb4f13 更新定位服务数据请求结构 2025-04-03 14:11:40 +08:00
ZhanGSKen
58ae10f93d 更新类库 2025-04-03 11:20:00 +08:00
ZhanGSKen
2e02cd3553 Merge remote-tracking branch 'origin/aes' into appbase 2025-04-03 11:18:22 +08:00
ZhanGSKen
af48d36e7d Merge remote-tracking branch 'origin/androidxdemo' into appbase 2025-04-03 11:18:15 +08:00
ZhanGSKen
e0c754a056 Merge remote-tracking branch 'origin/androiddemo' into appbase 2025-04-03 11:18:08 +08:00
ZhanGSKen
e65e184077 更新类库 2025-04-03 11:17:39 +08:00
ZhanGSKen
4cbd57704b 更新类库 2025-04-03 11:16:20 +08:00
ZhanGSKen
09b8e9b034 <libaes>Library Release 15.2.6 2025-04-03 11:14:12 +08:00
ZhanGSKen
4449fe6598 <aes>APK 15.2.6 release Publish. 2025-04-03 11:13:53 +08:00
ZhanGSKen
1e2661f640 更新至精简应用介绍模块资源后的类库 2025-04-03 11:13:05 +08:00
ZhanGSKen
1d2b595859 添加应用介绍窗口调试工具添加开关 2025-04-03 11:04:06 +08:00
ZhanGSKen
89f8404dc9 清理源码 2025-04-03 02:34:51 +08:00
ZhanGSKen
c302179960 <autoinstaller>APK 15.2.0 release Publish. 2025-04-02 21:25:51 +08:00
ZhanGSKen
df55608eb3 更新应用打开按钮的启动数据。 2025-04-02 21:23:49 +08:00
ZhanGSKen
b64a229ab1 数据模型命名空间重构 2025-04-02 20:48:37 +08:00
ZhanGSKen
d507d4ac06 调整全局吐司风格 2025-04-02 20:45:25 +08:00
ZhanGSKen
e815c08970 更新类库,去掉主窗口启动时的吐司提示。 2025-04-02 20:41:05 +08:00
ZhanGSKen
d780116031 Merge remote-tracking branch 'origin/appbase' into autoinstaller 2025-04-02 20:31:31 +08:00
ZhanGSKen
8011456fc1 Merge remote-tracking branch 'origin/apputils' into appbase 2025-04-02 20:24:06 +08:00
ZhanGSKen
1254c51ef8 Merge remote-tracking branch 'origin/androiddemo' into appbase 2025-04-02 20:23:33 +08:00
ZhanGSKen
4ea010ab21 类库引用方法更新 2025-04-02 20:23:01 +08:00
ZhanGSKen
f4d21d7b1a Merge remote-tracking branch 'origin/aes' into appbase 2025-04-02 20:15:59 +08:00
ZhanGSKen
030012476f Merge remote-tracking branch 'origin/androidxdemo' into appbase 2025-04-02 20:15:49 +08:00
ZhanGSKen
652cc2fb81 更新类库,添加吐司示例 2025-04-02 20:14:49 +08:00
ZhanGSKen
4afc4aafa9 <libaes>Library Release 15.2.5 2025-04-02 20:09:13 +08:00
ZhanGSKen
bd6eae16e3 <aes>APK 15.2.5 release Publish. 2025-04-02 20:08:50 +08:00
ZhanGSKen
5b82baead5 修改吐司提示风格 2025-04-02 20:05:52 +08:00
ZhanGSKen
a9ce480f9f 服务器 Http访问验证部分代码整理 2025-04-02 19:44:42 +08:00
ZhanGSKen
ce1a2715f9 移除冗余示例 2025-04-02 09:41:41 +08:00
ZhanGSKen
0052023037 Merge remote-tracking branch 'origin/app' into appbase 2025-04-02 09:40:42 +08:00
ZhanGSKen
fcbe812f89 移除过期应用示例 2025-04-02 09:40:04 +08:00
ZhanGSKen
05806ccef1 更新类库 2025-04-01 21:16:04 +08:00
ZhanGSKen
18e1369534 Merge remote-tracking branch 'origin/appbase' into positions 2025-04-01 21:08:44 +08:00
ZhanGSKen
fa43d43110 <mymessagemanager>APK 15.2.4 release Publish. 2025-04-01 19:55:49 +08:00
ZhanGSKen
8f8e7d98c7 通知调试完成,添加旧通知设置清理按钮。 2025-04-01 19:54:30 +08:00
ZhanGSKen
3ce6746e50 <contacts>APK 15.2.6 release Publish. 2025-04-01 17:48:43 +08:00
ZhanGSKen
c06b157332 更新应用介绍窗口标题栏风格 2025-04-01 17:47:31 +08:00
ZhanGSKen
af39f98a51 通知模块调试ing... 2025-04-01 15:20:02 +08:00
ZhanGSKen
6b57d65ef4 <app>APK 15.0.1 release Publish. 2025-04-01 13:50:28 +08:00
ZhanGSKen
7fa2c658b6 <app>APK 15.0.0 release Publish. 2025-04-01 13:47:21 +08:00
ZhanGSKen
96f5a892d5 设置应用介绍 2025-04-01 13:43:42 +08:00
ZhanGSKen
d977b8fe28 更新类库,重新初始化项目。 2025-04-01 13:38:23 +08:00
ZhanGSKen
693f7f48a7 更新Git仓库与用户信息描述部分信息。 2025-04-01 10:44:29 +08:00
ZhanGSKen
8dd41a0c3a <powerbell>APK 15.2.2 release Publish. 2025-03-31 20:11:58 +08:00
ZhanGSKen
ca4814744f 更新类库,修复调试模式设置。 2025-03-31 20:11:08 +08:00
ZhanGSKen
5a1d557683 <mymessagemanager>APK 15.2.3 release Publish. 2025-03-31 20:04:51 +08:00
ZhanGSKen
39116f0912 更新类库,修复调试模式保存问题。 2025-03-31 20:03:40 +08:00
ZhanGSKen
1f8f7fd405 <contacts>APK 15.2.5 release Publish. 2025-03-31 19:51:50 +08:00
ZhanGSKen
60ddae0950 更新类库,修复应用简介窗口设置应用调试模式没有保存的问题。 2025-03-31 19:51:02 +08:00
ZhanGSKen
3d23a095fe Merge remote-tracking branch 'origin/androidxdemo' into appbase 2025-03-31 19:47:30 +08:00
ZhanGSKen
f13caa90ff Merge remote-tracking branch 'origin/aes' into appbase 2025-03-31 19:47:11 +08:00
ZhanGSKen
c7677764a3 Merge branch 'appbase' of https://gitea.winboll.cc/Studio/APP.git into appbase 2025-03-31 19:43:28 +08:00
ZhanGSKen
57114f76fe 更新类库 2025-03-31 19:42:43 +08:00
ZhanGSKen
7fd10086eb <libaes>Library Release 15.2.4 2025-03-31 19:41:27 +08:00
ZhanGSKen
d65dc665a0 <aes>APK 15.2.4 release Publish. 2025-03-31 19:41:08 +08:00
ZhanGSKen
2f22b6602b 修复应用介绍页调试模式设置没有保存的问题。 2025-03-31 19:39:51 +08:00
ZhanGSKen
79b680f9f3 <contacts>APK 15.2.4 release Publish. 2025-03-31 15:43:06 +08:00
ZhanGSKen
f572c488e6 修改调试模式配置方法 2025-03-31 15:42:33 +08:00
ZhanGSKen
a018958899 <contacts>APK 15.2.3 release Publish. 2025-03-31 15:25:52 +08:00
ZhanGSKen
87dfa4872d <contacts>APK 15.2.2 release Publish. 2025-03-31 15:25:32 +08:00
ZhanGSKen
935a663cee 在设置窗口里添加应用介绍按钮 2025-03-31 15:23:41 +08:00
ZhanGSKen
5a9ee81c30 <powerbell>APK 15.2.1 release Publish. 2025-03-31 15:08:28 +08:00
ZhanGSKen
841d526b0d <powerbell>APK 15.2.0 release Publish. 2025-03-31 15:06:43 +08:00
ZhanGSKen
11d2db6bf9 更新应用简介。 2025-03-31 15:05:02 +08:00
ZhanGSKen
93d8fa15db 修改主题配置,修复日志菜单栏显示问题。 2025-03-31 14:59:54 +08:00
ZhanGSKen
99ff741a22 更新类库,设置版本号。 2025-03-31 14:53:33 +08:00
ZhanGSKen
5bc7581db1 Merge remote-tracking branch 'origin/androidxdemo' into powerbell 2025-03-31 14:39:31 +08:00
ZhanGSKen
fde0712439 Merge remote-tracking branch 'origin/appbase' into powerbell 2025-03-31 14:39:26 +08:00
ZhanGSKen
6a6a6ad051 添加二级窗口后退按钮响应 2025-03-31 14:37:29 +08:00
ZhanGSKen
ea3f0190a8 加入最新aes源码 2025-03-31 14:23:27 +08:00
ZhanGSKen
c47639484d <contacts>APK 15.2.1 release Publish. 2025-03-31 13:11:08 +08:00
ZhanGSKen
f053218932 添加通话记录数据更新功能。在长期打开主窗口后,通话记录可以实时更新。 2025-03-31 13:07:40 +08:00
ZhanGSKen
bec4041b87 修复日志视图再打开第二个日志后,第一个日志回显时停顿问题。 2025-03-31 12:09:46 +08:00
ZhanGSKen
0d540c422e 更新类库 2025-03-31 12:05:11 +08:00
ZhanGSKen
5e4f831d00 Merge remote-tracking branch 'origin/appbase' into androidxdemo 2025-03-31 12:01:58 +08:00
ZhanGSKen
2a4c4be5c6 Merge remote-tracking branch 'origin/androidxdemo' into appbase 2025-03-31 12:01:35 +08:00
ZhanGSKen
ba2f5c4037 更新适配系统版本范围,更新类库。 2025-03-31 11:58:52 +08:00
ZhanGSKen
62b39988fd Merge remote-tracking branch 'origin/appbase' into contacts 2025-03-31 11:50:44 +08:00
ZhanGSKen
a6b711b38b <mymessagemanager>APK 15.2.2 release Publish. 2025-03-31 02:36:56 +08:00
ZhanGSKen
d1703551f5 更新应用调试模式设置方法 2025-03-31 02:36:15 +08:00
ZhanGSKen
d63f7d3d83 <mymessagemanager>APK 15.2.1 release Publish. 2025-03-31 02:29:38 +08:00
ZhanGSKen
06b399846d Merge remote-tracking branch 'origin/appbase' into mymessagemanager 2025-03-31 02:27:33 +08:00
ZhanGSKen
e06efea08e <mymessagemanager>APK 15.2.0 release Publish. 2025-03-31 02:27:06 +08:00
ZhanGSKen
890ff6eda9 更新类库,添加更新日志查看方式和应用介绍窗口。 2025-03-31 02:24:50 +08:00
ZhanGSKen
58a232fd48 <libaes>Library Release 15.2.3 2025-03-31 02:04:53 +08:00
ZhanGSKen
de1b3657f8 <aes>APK 15.2.3 release Publish. 2025-03-31 02:04:35 +08:00
ZhanGSKen
6b70019208 服务访问属性调整 2025-03-31 02:03:57 +08:00
ZhanGSKen
641cc0d828 <libaes>Library Release 15.2.2 2025-03-31 00:48:11 +08:00
ZhanGSKen
89ee16a69f <aes>APK 15.2.2 release Publish. 2025-03-31 00:47:52 +08:00
ZhanGSKen
4f44034b72 完成服务器连接与断开逻辑 2025-03-31 00:46:16 +08:00
ZhanGSKen
9d37de4bfc 服务连接函数重构 2025-03-30 14:08:17 +08:00
ZhanGSKen
619fd39a92 调整调试信息 2025-03-30 04:08:09 +08:00
ZhanGSKen
d51ebbd550 调试网站状态图标调试完成 2025-03-30 03:59:55 +08:00
ZhanGSKen
d474eb6158 开发站与公开站API接口调试完成 2025-03-30 01:36:24 +08:00
ZhanGSKen
b1e2a018d8 完善应用介绍页UI风格 2025-03-30 01:01:09 +08:00
ZhanGSKen
81d538589f 初步完成服务访问连接 2025-03-29 17:34:01 +08:00
ZhanGSKen
2870ca911c 改进类库引用方法 2025-03-29 12:37:13 +08:00
ZhanGSKen
d87fac0270 Merge remote-tracking branch 'origin/androidxdemo' into androiddemo 2025-03-29 12:32:57 +08:00
ZhanGSKen
4e04d022fa Merge remote-tracking branch 'origin/appbase' into androiddemo 2025-03-29 12:32:51 +08:00
ZhanGSKen
ec107dfebf 更新类库和类库引用次序。 2025-03-29 12:29:54 +08:00
ZhanGSKen
e5a5eda9b6 1225 2025-03-29 12:25:04 +08:00
ZhanGSKen
174a052088 更新类库引用次序,预防资源引用次序混乱。 2025-03-29 12:24:14 +08:00
ZhanGSKen
fbd8441264 更新类库解决应用介绍窗口资源引用冲突问题 2025-03-29 12:19:26 +08:00
ZhanGSKen
141e01b4df <libapputils>Library Release 15.2.1 2025-03-29 12:15:01 +08:00
ZhanGSKen
a3994ccd07 <apputils>APK 15.2.1 release Publish. 2025-03-29 12:14:39 +08:00
ZhanGSKen
2154f5e4a2 移除应用介绍冗余代码,应用介绍所有资源文件已移至AES项目。 2025-03-29 12:13:32 +08:00
ZhanGSKen
0735783811 <libaes>Library Release 15.2.1 2025-03-29 12:08:10 +08:00
ZhanGSKen
156329707d <aes>APK 15.2.1 release Publish. 2025-03-29 12:07:46 +08:00
ZhanGSKen
3835800d24 类库引用版本调整测试 2025-03-29 12:06:17 +08:00
ZhanGSKen
fb92e9f673 更新类库 2025-03-29 11:53:35 +08:00
ZhanGSKen
b0e53d1691 <libappbase>Library Release 15.2.2 2025-03-29 11:28:08 +08:00
ZhanGSKen
9b882d14ab <appbase>APK 15.2.2 release Publish. 2025-03-29 11:27:54 +08:00
ZhanGSKen
1074a47ae7 编译参数修复,BugFix. 2025-03-29 11:27:06 +08:00
ZhanGSKen
721a4034dd <libappbase>Library Release 15.2.1 2025-03-29 11:20:41 +08:00
ZhanGSKen
07959be091 <appbase>APK 15.2.1 release Publish. 2025-03-29 11:20:21 +08:00
ZhanGSKen
3e1531d356 BugFix 2025-03-29 11:19:35 +08:00
ZhanGSKen
d34d1e2796 设置版本号 2025-03-29 10:20:29 +08:00
ZhanGSKen
36fb8b41a4 1017 2025-03-29 10:17:55 +08:00
ZhanGSKen
fe70a18547 Merge branch 'appbase' into mymessagemanager 2025-03-29 09:45:00 +08:00
ZhanGSKen
82d8cd7f17 <contacts>APK 15.2.0 release Publish. 2025-03-29 09:34:54 +08:00
ZhanGSKen
5465b8eb34 编译测试 2025-03-29 09:34:09 +08:00
ZhanGSKen
35d7716778 编译参数修复 2025-03-29 09:33:05 +08:00
ZhanGSKen
256b9ec99c 设置版本号 2025-03-29 09:22:32 +08:00
ZhanGSKen
2aacb0e70d <contacts>APK 15.2.22 release Publish. 2025-03-29 09:16:58 +08:00
ZhanGSKen
266009de85 Merge remote-tracking branch 'origin/appbase' into contacts 2025-03-29 09:15:52 +08:00
ZhanGSKen
1a571684ca 更新类库版本 2025-03-29 09:13:14 +08:00
ZhanGSKen
5d796c4aba <libaes>Library Release 15.2.0 2025-03-29 08:57:51 +08:00
ZhanGSKen
1891c24d4f <aes>APK 15.2.0 release Publish. 2025-03-29 08:57:30 +08:00
ZhanGSKen
892f9f0d6c 开展新命名空间下的版本调试,更新版本号设置 2025-03-29 08:57:03 +08:00
ZhanGSKen
a374d1aada <aes>APK 15.0.9 release Publish. 2025-03-29 08:53:46 +08:00
ZhanGSKen
b9d2778e11 开展新命名空间下的版本调试 2025-03-29 08:52:57 +08:00
ZhanGSKen
9f84f8b800 <libapputils>Library Release 15.2.0 2025-03-29 08:48:40 +08:00
ZhanGSKen
02e218ee88 <apputils>APK 15.2.0 release Publish. 2025-03-29 08:48:13 +08:00
ZhanGSKen
5e54f0f4c7 开展新命名空间下的版本调试 2025-03-29 08:47:02 +08:00
ZhanGSKen
4a0b58feda <libappbase>Library Release 15.2.0 2025-03-29 08:43:50 +08:00
ZhanGSKen
28ae2631a6 <appbase>APK 15.2.0 release Publish. 2025-03-29 08:43:25 +08:00
ZhanGSKen
87d23829ae 开展新命名空间下的版本调试 2025-03-29 08:42:10 +08:00
ZhanGSKen
43a91575d5 <libaes>Library Release 15.0.8 2025-03-29 08:38:13 +08:00
ZhanGSKen
f60a57237c <aes>APK 15.0.8 release Publish. 2025-03-29 08:37:50 +08:00
ZhanGSKen
20b30c1337 移植来自APPUtils的模块,命名空间重构。 2025-03-29 08:35:58 +08:00
ZhanGSKen
76dabc9ef7 <libapputils>Library Release 15.0.19 2025-03-28 20:25:34 +08:00
ZhanGSKen
73ddef7738 <apputils>APK 15.0.19 release Publish. 2025-03-28 20:25:11 +08:00
ZhanGSKen
2a9ec064f9 命名空间调整 2025-03-28 20:23:58 +08:00
ZhanGSKen
07bfd44c65 <libappbase>Library Release 15.1.4 2025-03-28 20:05:54 +08:00
ZhanGSKen
32a8c0dfa1 <appbase>APK 15.1.4 release Publish. 2025-03-28 20:05:24 +08:00
ZhanGSKen
0a8707b02b 简化吐司提示 2025-03-28 19:49:30 +08:00
ZhanGSKen
6e8e32c497 <libapputils>Library Release 15.0.18 2025-03-28 18:48:49 +08:00
ZhanGSKen
abb0c1f73a <apputils>APK 15.0.18 release Publish. 2025-03-28 18:48:07 +08:00
ZhanGSKen
18fc20b4c5 Merge remote-tracking branch 'origin/appbase' into apputils 2025-03-28 18:46:37 +08:00
ZhanGSKen
9ef0b0894c 清理类库的活动窗口类到测试项目文件夹。 2025-03-28 18:35:01 +08:00
ZhanGSKen
3ef885e8c1 <libappbase>Library Release 15.1.3 2025-03-28 18:20:38 +08:00
ZhanGSKen
d9b99ee371 <appbase>APK 15.1.3 release Publish. 2025-03-28 18:20:22 +08:00
ZhanGSKen
6f7414b576 完成应用退出的菜单按钮逻辑 2025-03-28 18:10:31 +08:00
ZhanGSKen
888e2c7a4d Merge remote-tracking branch 'origin/appbase' into apputils 2025-03-28 15:51:48 +08:00
ZhanGSKen
2f6e297bab <libappbase>Library Release 15.1.2 2025-03-28 15:50:29 +08:00
ZhanGSKen
e35a6b9a7f <appbase>APK 15.1.2 release Publish. 2025-03-28 15:50:14 +08:00
ZhanGSKen
e71e5a852d 调整活动窗口基类为应用自己定义,增强窗口的AppCompatActivity特性引用。 2025-03-28 15:48:33 +08:00
ZhanGSKen
a5324d557f Merge remote-tracking branch 'origin/androiddemo' into apputils 2025-03-28 14:55:30 +08:00
ZhanGSKen
0dc38b0fa1 Merge remote-tracking branch 'origin/appbase' into apputils 2025-03-28 14:55:24 +08:00
ZhanGSKen
4ea48a051d <libappbase>Library Release 15.1.1 2025-03-28 14:53:36 +08:00
ZhanGSKen
ae680b5b48 <appbase>APK 15.1.1 release Publish. 2025-03-28 14:53:11 +08:00
ZhanGSKen
f2d8902b4c 改进类库引用方法 2025-03-28 14:29:03 +08:00
ZhanGSKen
80767ca5b5 修复编译警告问题 2025-03-28 14:25:26 +08:00
ZhanGSKen
be5ed936df 设置窗口任务栏显示信息 2025-03-28 13:57:26 +08:00
ZhanGSKen
b3075f778d 修复窗口切换问题 2025-03-28 13:45:45 +08:00
ZhanGSKen
ce05d69132 修复Support风格的应用崩溃报告窗口 2025-03-28 13:27:03 +08:00
ZhanGSKen
6a9434b194 取消窗口管理模块,修复应用崩溃调试模块。 2025-03-28 13:18:55 +08:00
ZhanGSKen
6ca7b210a6 简化配置 2025-03-28 12:17:48 +08:00
ZhanGSKen
b61c63c426 <ollama>Start New Stage Version. 2025-03-28 05:09:23 +08:00
ZhanGSKen
f02dc215ca <ollama>APK 15.0.0 release Publish. 2025-03-28 05:09:21 +08:00
ZhanGSKen
1c27d0ccdc Ollama 问答模块完成。 2025-03-28 05:04:15 +08:00
ZhanGSKen
803745d12e 添加简单http访问功能 2025-03-27 20:45:57 +08:00
ZhanGSKen
a66be9cd37 添加WinBoll Ollama 访问项目。 2025-03-27 19:39:54 +08:00
ZhanGSKen
d83d460342 调试到 _GlobalApplication 实例化次数与现有实例问题... 2025-03-27 19:06:51 +08:00
ZhanGSKen
9a53d04050 窗口判断与添加测试结束,进入resumeActivity调试阶段... 2025-03-27 14:39:26 +08:00
ZhanGSKen
ada664f4ab 添加Base工具栏 2025-03-27 12:32:24 +08:00
ZhanGSKen
92a9bbb455 整理代码 2025-03-27 11:46:36 +08:00
ZhanGSKen
211eef7232 整理代码 2025-03-27 11:46:11 +08:00
ZhanGSKen
31bad8a279 调试信息调整 2025-03-27 11:45:40 +08:00
ZhanGSKen
bc0eb69edf 增加应用适配系统范围 2025-03-27 11:44:58 +08:00
ZhanGSKen
08f990de65 添加日志窗口标签查找功能 2025-03-27 10:42:58 +08:00
ZhanGSKen
e2b6fadd43 日志分屏比例切换失效时,需要手动切换出任务栏视图再回到分屏任务窗口,这时就可以切换比例。修复了应用调出二级窗口弹出时不在原应用窗口弹出问题。 2025-03-27 01:05:52 +08:00
ZhanGSKen
2074f68ef3 日志窗口函数重构 2025-03-26 19:32:21 +08:00
ZhanGSKen
46e4ee7fb7 <mymessagemanager>APK 15.0.0 release Publish. 2025-03-26 17:54:55 +08:00
ZhanGSKen
b2b959232c 去掉二级窗口分屏模式 2025-03-26 17:52:10 +08:00
ZhanGSKen
b11f814c41 Merge remote-tracking branch 'origin/appbase' into mymessagemanager 2025-03-26 17:49:04 +08:00
ZhanGSKen
56a13b4a40 <libappbase>Library Release 15.1.0 2025-03-26 15:43:27 +08:00
ZhanGSKen
8bdd42ce68 <appbase>APK 15.1.0 release Publish. 2025-03-26 15:43:05 +08:00
ZhanGSKen
d4986c6ba4 设定使用Support V7 版安卓库的应用版本号。 2025-03-26 15:39:37 +08:00
ZhanGSKen
529f420668 精简配置 2025-03-26 15:36:49 +08:00
ZhanGSKen
b3439aa36a 添加Support库支持 2025-03-26 15:34:52 +08:00
ZhanGSKen
7488fa7af2 Merge remote-tracking branch 'origin/androiddemo' into appbase 2025-03-26 15:25:06 +08:00
ZhanGSKen
d4e4541bfd 添加AppCompatActivity类库 2025-03-26 15:24:26 +08:00
ZhanGSKen
ac627e53b1 编译参数配置确定,Log分屏测试完成。 2025-03-26 14:39:37 +08:00
ZhanGSKen
42a2e6d559 Merge remote-tracking branch 'origin/androiddemo' into appbase 2025-03-26 12:48:29 +08:00
ZhanGSKen
0d44734c0b Merge remote-tracking branch 'origin/androidxdemo' into appbase 2025-03-26 12:48:23 +08:00
ZhanGSKen
e89873046b 日志分屏方案设定完成 2025-03-26 02:02:49 +08:00
ZhanGSKen
f3ef7226d8 优化调试框架 2025-03-25 20:59:55 +08:00
ZhanGSKen
1e991aed7e 适配小米15,设置编译参数。 2025-03-25 19:39:21 +08:00
ZhanGSKen
f56125f82a Merge branch 'appbase' into mymessagemanager 2025-03-25 19:29:33 +08:00
ZhanGSKen
9706a39f41 WinBollActivityManager测试.. 2025-03-25 05:31:06 +08:00
ZhanGSKen
ed1a1ac179 开始调试WinBollActivityManager... 2025-03-25 03:54:31 +08:00
ZhanGSKen
a65829a1d2 <libapputils>Library Release 15.0.17 2025-03-25 03:48:47 +08:00
ZhanGSKen
abb5d750c1 <apputils>APK 15.0.17 release Publish. 2025-03-25 03:48:30 +08:00
ZhanGSKen
dc000567cd 简化代码 2025-03-25 03:47:45 +08:00
ZhanGSKen
c3ccfd3c23 <libapputils>Library Release 15.0.16 2025-03-25 03:30:43 +08:00
ZhanGSKen
d2c649fe65 <apputils>APK 15.0.16 release Publish. 2025-03-25 03:30:22 +08:00
ZhanGSKen
3b61a93402 移动应用基础数据模型到 APPBase 类库。 2025-03-25 03:28:39 +08:00
ZhanGSKen
e85cbd803e <libappbase>Library Release 15.0.10 2025-03-25 03:25:08 +08:00
ZhanGSKen
00a9ec1d66 <appbase>APK 15.0.10 release Publish. 2025-03-25 03:24:44 +08:00
ZhanGSKen
64051bb9fe 添加应用基础数据模型 2025-03-25 03:23:45 +08:00
ZhanGSKen
4ff54c785e <powerbell>APK 15.0.3 release Publish. 2025-03-25 02:43:07 +08:00
ZhanGSKen
b961468e1e <powerbell>APK 15.0.2 release Publish. 2025-03-25 02:42:42 +08:00
ZhanGSKen
575ef9aac0 内容提供配置调整 2025-03-25 02:42:10 +08:00
ZhanGSKen
16b118f83b <powerbell>APK 15.0.1 release Publish. 2025-03-25 02:36:56 +08:00
ZhanGSKen
1eeba4e4c6 <powerbell>APK 15.0.0 release Publish. 2025-03-25 02:34:56 +08:00
ZhanGSKen
66eb8e06ea 应用介绍页基本调试完成 2025-03-25 02:30:45 +08:00
ZhanGSKen
0a4727966a <libaes>Library Release 15.0.7 2025-03-25 01:19:55 +08:00
ZhanGSKen
7271b2b531 <aes>APK 15.0.7 release Publish. 2025-03-25 01:19:42 +08:00
ZhanGSKen
e9ed88b930 源码整理 2025-03-25 01:19:08 +08:00
ZhanGSKen
a0cf87fb83 <libaes>Library Release 15.0.6 2025-03-25 01:14:40 +08:00
ZhanGSKen
dae32ba6cb <aes>APK 15.0.6 release Publish. 2025-03-25 01:14:22 +08:00
ZhanGSKen
2818c0fd85 应用介绍页调试 2025-03-25 01:13:08 +08:00
ZhanGSKen
8fb9ef7992 应用介绍页重构... 2025-03-25 00:07:19 +08:00
ZhanGSKen
76c9ae469f 调试应用介绍页 Gitea 网页调用... 2025-03-24 20:52:41 +08:00
ZhanGSKen
51775620db 更新类库,调试应用介绍... 2025-03-24 20:24:31 +08:00
ZhanGSKen
f1dac0c395 <libaes>Library Release 15.0.5 2025-03-24 20:01:26 +08:00
ZhanGSKen
2750f0faf9 <aes>APK 15.0.5 release Publish. 2025-03-24 20:00:06 +08:00
ZhanGSKen
e96710e3f1 <libaes>Library Release 15.0.4 2025-03-24 19:53:54 +08:00
ZhanGSKen
b2ad623c9c <aes>APK 15.0.4 release Publish. 2025-03-24 19:53:34 +08:00
ZhanGSKen
78c038b56b 设置发布版应用介绍接口参数。 2025-03-24 19:52:10 +08:00
ZhanGSKen
a9bc345580 设置应用介绍页视图模块图标资源 2025-03-24 19:38:02 +08:00
ZhanGSKen
82b54551d0 添加APPUtils图标资源 2025-03-24 19:36:52 +08:00
ZhanGSKen
87d8c08b5f 处理应用介绍模块... 2025-03-24 17:21:48 +08:00
ZhanGSKen
a9aee97e41 <libapputils>Library Release 15.0.15 2025-03-24 17:14:56 +08:00
ZhanGSKen
6f2bfa66eb <apputils>APK 15.0.15 release Publish. 2025-03-24 17:14:43 +08:00
ZhanGSKen
0f5eac2a01 移除应用介绍数据模型 2025-03-24 17:14:24 +08:00
ZhanGSKen
eaf83a931e <libapputils>Library Release 15.0.14 2025-03-24 17:08:05 +08:00
ZhanGSKen
3d287757a1 <apputils>APK 15.0.14 release Publish. 2025-03-24 17:07:52 +08:00
ZhanGSKen
f9f6ec746a <libapputils>Library Release 15.0.13 2025-03-24 17:07:24 +08:00
ZhanGSKen
cf7bdebbb3 <apputils>APK 15.0.13 release Publish. 2025-03-24 17:07:03 +08:00
ZhanGSKen
737150da8d 移除应用介绍模块,移动至AES。 2025-03-24 17:05:49 +08:00
ZhanGSKen
5864b725eb <libaes>Library Release 15.0.3 2025-03-24 15:00:57 +08:00
ZhanGSKen
c70a43257c <aes>APK 15.0.3 release Publish. 2025-03-24 15:00:41 +08:00
ZhanGSKen
0794446d34 更新工具类版本。 2025-03-24 14:45:19 +08:00
ZhanGSKen
ac02880344 <libapputils>Library Release 15.0.12 2025-03-24 14:42:28 +08:00
ZhanGSKen
c9980db1d5 <apputils>APK 15.0.12 release Publish. 2025-03-24 14:42:07 +08:00
ZhanGSKen
ec08e89418 精简数据模型 2025-03-24 14:41:21 +08:00
ZhanGSKen
deaa9caadd Merge remote-tracking branch 'origin/appbase' into powerbell 2025-03-24 14:33:17 +08:00
ZhanGSKen
052c6881e5 <libaes>Library Release 15.0.2 2025-03-24 14:32:16 +08:00
ZhanGSKen
b0dbd1b339 <aes>APK 15.0.2 release Publish. 2025-03-24 14:31:58 +08:00
ZhanGSKen
851ea8a50a <aes>APK 15.0.1 release Publish. 2025-03-24 14:31:46 +08:00
ZhanGSKen
a2b216cb2c <aes>APK 15.0.0 release Publish. 2025-03-24 14:31:26 +08:00
ZhanGSKen
8d7f1298f6 <aes>Start New Stage Version. 2025-03-24 14:30:27 +08:00
ZhanGSKen
803d1afc18 Merge remote-tracking branch 'origin/appbase' into aes 2025-03-24 14:28:13 +08:00
ZhanGSKen
a859fcb237 参考 androidxdemo 类库版本. 2025-03-24 14:27:31 +08:00
ZhanGSKen
e9cf4404d2 Merge remote-tracking branch 'origin/androidxdemo' into aes 2025-03-24 14:23:37 +08:00
ZhanGSKen
5e42f21c9a 添加调试日志 2025-03-24 14:20:40 +08:00
ZhanGSKen
c394a37e0a 添加WinBoll类库,替换应用基类。 2025-03-24 14:16:53 +08:00
ZhanGSKen
dd7600d617 更新类库,优化日志标题。 2025-03-24 14:08:48 +08:00
ZhanGSKen
c203557a6a <libappbase>Library Release 15.0.9 2025-03-24 14:06:30 +08:00
ZhanGSKen
00b619ee99 <appbase>APK 15.0.9 release Publish. 2025-03-24 14:06:10 +08:00
ZhanGSKen
3a6fb3e17c 更新日志标题栏风格 2025-03-24 14:04:59 +08:00
ZhanGSKen
75c2f6304c 更新应用基类 2025-03-24 13:57:52 +08:00
ZhanGSKen
83a061856a 更新类库,设置适配安卓版本和应用版本号。 2025-03-24 13:47:31 +08:00
ZhanGSKen
ec6926f629 设定应用版本与系统版本一致。 2025-03-24 13:31:45 +08:00
ZhanGSKen
ede6c07deb 更新AndroidXDemo类库依赖方式 2025-03-24 13:27:40 +08:00
ZhanGSKen
3fe1ea7ff2 修改AndroidDemo类库依赖方式。 2025-03-24 13:21:11 +08:00
ZhanGSKen
652caf7a46 0959 2025-03-24 09:59:20 +08:00
ZhanGSKen
7391091480 <libapputils>Library Release 15.0.11 2025-03-24 09:46:41 +08:00
ZhanGSKen
133964aaf1 <apputils>APK 15.0.11 release Publish. 2025-03-24 09:46:26 +08:00
ZhanGSKen
a96696f261 整体UI优化 2025-03-24 09:44:18 +08:00
ZhanGSKen
f96fcbfe13 添加二维码测试窗口调用 2025-03-24 08:52:50 +08:00
ZhanGSKen
ad6e1bd51b 添加应用自带Html资源窗口测试 2025-03-24 08:47:04 +08:00
ZhanGSKen
0fa55b0291 添加日日志窗口测试 2025-03-24 08:43:35 +08:00
ZhanGSKen
32082c4dd0 移除冗余模块,其模块已转移至AES。 2025-03-24 08:41:06 +08:00
ZhanGSKen
a0627d5b3b Merge remote-tracking branch 'origin/appbase' into aes 2025-03-24 08:13:32 +08:00
ZhanGSKen
3be42fbd59 <libapputils>Library Release 15.0.10 2025-03-24 08:10:15 +08:00
ZhanGSKen
85f8466450 <apputils>APK 15.0.10 release Publish. 2025-03-24 08:10:00 +08:00
ZhanGSKen
407f2b38ae <libapputils>Library Release 15.0.9 2025-03-24 08:09:51 +08:00
ZhanGSKen
550410d913 <apputils>APK 15.0.9 release Publish. 2025-03-24 08:09:02 +08:00
ZhanGSKen
6daa3bbd0f <apputils>APK 15.0.8 release Publish. 2025-03-24 08:08:19 +08:00
ZhanGSKen
8a29735130 更新编译工具版本 2025-03-24 08:06:52 +08:00
ZhanGSKen
272dd15427 Merge remote-tracking branch 'origin/appbase' into apputils 2025-03-24 08:05:24 +08:00
ZhanGSKen
5411d5e590 <libappbase>Library Release 15.0.8 2025-03-24 08:04:42 +08:00
ZhanGSKen
facf0b001d <appbase>APK 15.0.8 release Publish. 2025-03-24 08:04:27 +08:00
ZhanGSKen
df58c0355c 更新编译工具版本 2025-03-24 08:03:17 +08:00
ZhanGSKen
7c7b159a80 更新编译工具版本 2025-03-24 07:57:04 +08:00
ZhanGSKen
da23546bb4 Merge branch 'appbase' into apputils 2025-03-24 07:48:04 +08:00
ZhanGSKen
e657e45218 <libappbase>Library Release 15.0.7 2025-03-24 07:45:34 +08:00
ZhanGSKen
c22946f0a5 <appbase>APK 15.0.7 release Publish. 2025-03-24 07:44:12 +08:00
ZhanGSKen
1363a7dcce <appbase>APK 15.0.6 release Publish. 2025-03-24 07:43:28 +08:00
ZhanGSKen
e0ca5725f1 保持与旧版Gradle插件的兼容 2025-03-24 07:39:20 +08:00
ZhanGSKen
3c4988532f 函数命名更新 2025-03-24 07:30:59 +08:00
ZhanGSKen
b0a34579fa 命名空间重构 2025-03-24 07:17:22 +08:00
ZhanGSKen
fe12cf7ffe 添加BB工具集示例源码 2025-03-23 17:12:03 +08:00
ZhanGSKen
3192ae55b1 设置 Gradle 类库引用方式为 API 传递依赖。 2025-03-23 13:26:28 +08:00
ZhanGSKen
6bfaa7ae92 简化应用提示 2025-03-22 20:47:27 +08:00
ZhanGSKen
58af5ba074 <powerbell>APK 4.0.7 release Publish. 2025-03-22 16:06:33 +08:00
ZhanGSKen
19743d30ef 修复编译参数 2025-03-22 16:05:10 +08:00
ZhanGSKen
3c2b720e20 调整背景图片设置窗口按钮布局 2025-03-22 16:03:08 +08:00
ZhanGSKen
5a052e4b22 添加电池报告窗口雏形 2025-03-22 15:54:18 +08:00
ZhanGSKen
4ccf6824a6 <powerbell>APK 4.0.6 release Publish. 2025-03-22 06:01:46 +08:00
ZhanGSKen
508c8b0b97 适配小米15,修改通知模块。 2025-03-22 05:53:58 +08:00
ZhanGSKen
0d21994291 编译配置精简 2025-03-22 03:06:40 +08:00
ZhanGSKen
f3577c7e78 添加服务启动按钮 2025-03-21 21:21:14 +08:00
ZhanGSKen
395674d302 修复定位数据锁定错误问题 2025-03-21 21:07:20 +08:00
ZhanGSKen
5e66647495 添加手动输入定位信息,并且显示位置功能。 2025-03-21 17:05:02 +08:00
ZhanGSKen
1113503a23 添加腾旭地图数据与手机GPS位置修复模型 2025-03-21 11:17:57 +08:00
ZhanGSKen
f12496f5ad Merge branch 'appbase' into positions 2025-03-21 01:39:22 +08:00
ZhanGSKen
d44d553818 20250321 2025-03-21 01:38:52 +08:00
ZhanGSKen
67d91aaf6c Merge branch 'appbase' into apputils 2025-03-21 01:15:54 +08:00
ZhanGSKen
dd08747edb 更新WinBoll maven库下载顺序 2025-03-21 00:42:41 +08:00
ZhanGSKen
76d6e7cf46 定位数据生成与定位完成 2025-03-20 05:42:02 +08:00
ZhanGSKen
d2b4213e9b 更新类库 2025-03-20 05:14:46 +08:00
ZhanGSKen
44418d7618 Merge branch 'appbase' into positions 2025-03-20 03:48:16 +08:00
ZhanGSKen
e91bf7d422 <libapputils>Library Release 15.0.7 2025-03-20 01:24:10 +08:00
ZhanGSKen
a73b5a9199 <apputils>APK 15.0.7 release Publish. 2025-03-20 01:23:48 +08:00
ZhanGSKen
fe943fef85 更新类库,窗口管理模块置闲。 2025-03-20 01:22:05 +08:00
ZhanGSKen
473dd627fe 添加云盾的防御功能临时暂停控件 2025-03-19 14:28:35 +08:00
ZhanGSKen
dc8dcc35dd <contacts>APK 1.0.21 release Publish. 2025-03-19 11:09:14 +08:00
ZhanGSKen
80c00a86b0 修正联系人信息提示语法问题。 2025-03-19 11:08:12 +08:00
ZhanGSKen
35c639e7c9 <contacts>APK 1.0.20 release Publish. 2025-03-19 08:51:20 +08:00
ZhanGSKen
05cc5c72f8 添加联系人查询,在联系人名单内就允许连接。 2025-03-19 08:48:03 +08:00
ZhanGSKen
dc1b138dd7 20250319_0130 2025-03-19 01:30:40 +08:00
ZhanGSKen
b497faa0b9 20250319_0127 2025-03-19 01:27:22 +08:00
ZhanGSKen
e867433f9c <libapputils>Library Release 15.0.6 2025-03-18 12:18:37 +08:00
ZhanGSKen
33eb58f33c <apputils>APK 15.0.6 release Publish. 2025-03-18 12:18:23 +08:00
ZhanGSKen
915c440cdd 主题配置方案尝试 2025-03-18 12:13:42 +08:00
ZhanGSKen
d21c92683d <libapputils>Library Release 15.0.5 2025-03-18 10:56:21 +08:00
ZhanGSKen
fe7ba6d38d <apputils>APK 15.0.5 release Publish. 2025-03-18 10:56:08 +08:00
ZhanGSKen
b3548bf1df 类库主题属性继承名称尝试 2025-03-18 10:55:13 +08:00
ZhanGSKen
d4b8b3bb35 <libapputils>Library Release 15.0.4 2025-03-18 10:46:52 +08:00
ZhanGSKen
d6a0d86e24 <apputils>APK 15.0.4 release Publish. 2025-03-18 10:46:39 +08:00
ZhanGSKen
20f1c29055 简化类库主题设置,避免attr属性增多。 2025-03-18 10:46:08 +08:00
ZhanGSKen
d8e7b35ec3 <libapputils>Library Release 15.0.3 2025-03-18 10:38:34 +08:00
ZhanGSKen
ccc5a995af <apputils>APK 15.0.3 release Publish. 2025-03-18 10:38:22 +08:00
ZhanGSKen
b46ee47e06 简化类库主题设置 2025-03-18 10:37:54 +08:00
ZhanGSKen
b11b06fad5 <libapputils>Library Release 15.0.2 2025-03-18 10:22:46 +08:00
ZhanGSKen
20af88fdd2 <apputils>APK 15.0.2 release Publish. 2025-03-18 10:22:27 +08:00
ZhanGSKen
9a70fe7c0f 更新类库,分开应用与类库主题设置。 2025-03-18 10:21:32 +08:00
ZhanGSKen
603640b3cb <libappbase>Library Release 15.0.5 2025-03-18 10:15:14 +08:00
ZhanGSKen
5b06ce9699 <appbase>APK 15.0.5 release Publish. 2025-03-18 10:14:53 +08:00
ZhanGSKen
363fc6c7c1 修复编译参数 2025-03-18 10:13:01 +08:00
ZhanGSKen
7f43f8b5c5 <libappbase>Library Release 15.0.4 2025-03-18 10:09:49 +08:00
ZhanGSKen
a117e6e110 <appbase>APK 15.0.4 release Publish. 2025-03-18 10:09:21 +08:00
ZhanGSKen
c1f576e343 分开APP应用主题设置与类库主题预定设置。 2025-03-18 10:08:31 +08:00
ZhanGSKen
c62f3f1bea <libapputils>Library Release 15.0.1 2025-03-18 09:52:51 +08:00
ZhanGSKen
0e339c0f51 <apputils>APK 15.0.1 release Publish. 2025-03-18 09:52:37 +08:00
ZhanGSKen
c20975cfca 设置主题配置为模块化独立风格,添加应用异常测试。 2025-03-18 09:52:06 +08:00
ZhanGSKen
f43c40e317 Merge branch 'appbase' into aes 2025-03-18 08:48:01 +08:00
ZhanGSKen
ed5f91f299 <libapputils>Library Release 15.0.0 2025-03-18 08:45:52 +08:00
ZhanGSKen
0031100219 <apputils>APK 15.0.0 release Publish. 2025-03-18 08:44:48 +08:00
ZhanGSKen
f9e7d362b7 调整测试窗口日志 2025-03-18 08:42:14 +08:00
ZhanGSKen
8d9d308c68 去除support依赖 2025-03-18 08:32:17 +08:00
ZhanGSKen
3eaec5ed73 Merge branch 'appbase' into contacts 2025-03-17 09:54:20 +08:00
ZhanGSKen
1dad84b65e <libappbase>Library Release 15.0.3 2025-03-17 09:51:28 +08:00
ZhanGSKen
1ae377e665 <appbase>APK 15.0.3 release Publish. 2025-03-17 09:51:04 +08:00
ZhanGSKen
02fa0a4134 优化调试窗口 2025-03-17 09:40:03 +08:00
ZhanGSKen
a730aa3f92 优化日志UI 2025-03-17 09:37:12 +08:00
ZhanGSKen
d3b12207e0 Merge branch 'appbase' into apputils 2025-03-15 19:38:11 +08:00
ZhanGSKen
5714aed761 <autoinstaller>APK 15.0.0 release Publish. 2025-03-15 15:38:45 +08:00
ZhanGSKen
f04f5cf77c 更新安卓适配版本 2025-03-15 15:33:36 +08:00
ZhanGSKen
befea40f61 <libappbase>Library Release 15.0.2 2025-03-15 15:30:08 +08:00
ZhanGSKen
cc1ca5b092 <appbase>APK 15.0.2 release Publish. 2025-03-15 15:29:07 +08:00
ZhanGSKen
af77c09415 <libappbase>Library Release 15.0.1 2025-03-15 15:27:57 +08:00
ZhanGSKen
2968d1dbfa <appbase>APK 15.0.1 release Publish. 2025-03-15 15:27:43 +08:00
ZhanGSKen
db96ece15f 修复吐司模块不显示字幕的BUG 2025-03-15 15:26:59 +08:00
ZhanGSKen
6ccbaf8c32 更新类库 2025-03-15 15:21:41 +08:00
ZhanGSKen
c0347ed706 <libappbase>Library Release 15.0.0 2025-03-15 14:46:58 +08:00
ZhanGSKen
ad408dfb53 <appbase>APK 15.0.0 release Publish. 2025-03-15 14:46:32 +08:00
ZhanGSKen
a2e963b53e Merge branch 'appbase' into apputils 2025-03-15 12:57:46 +08:00
ZhanGSKen
953da400be 设置APP主板本号对应Android版本 2025-03-15 12:34:22 +08:00
ZhanGSKen
165765e0eb APPBase去除 Support 依赖 2025-03-12 14:32:48 +08:00
ZhanGSKen
f5f88a61b0 AndroidX Demo 调试完成 2025-03-12 02:27:08 +08:00
ZhanGSKen
2f33574d5c Android Demo 调试完成 2025-03-12 02:03:29 +08:00
ZhanGSKen
afd93d6871 添加两个示例项目 2025-03-11 20:52:40 +08:00
ZhanGSKen
b7affa477f 忽略项目编译类型配置文件 2025-03-11 20:19:33 +08:00
ZhanGSKen
4f317322fc 根项目Gradle配置文件设置两种编译类型 2025-03-11 20:18:07 +08:00
ZhanGSKen
8ba0c3937d 添加定位加权平均算法 2025-03-11 11:02:57 +08:00
ZhanGSKen
4fd636090e 添加初步联合定位功能 2025-03-10 21:11:05 +08:00
ZhanGSKen
96332c9986 Merge branch 'appbase' into positions 2025-03-10 19:50:59 +08:00
ZhanGSKen
486a17d4b2 <contacts>APK 1.0.19 release Publish. 2025-03-09 20:33:54 +08:00
ZhanGSKen
6cde3be042 更新类库 2025-03-09 20:31:51 +08:00
ZhanGSKen
b3056e9d80 <libaes>Library Release 7.6.12 2025-03-09 20:28:25 +08:00
ZhanGSKen
cd23d625e1 <aes>APK 7.6.12 release Publish. 2025-03-09 20:28:09 +08:00
ZhanGSKen
e7749cb95d 该部分设置在应用于RecyclerView滚动时,控件图标初始位置设置未有起到作用。 2025-03-09 20:27:00 +08:00
ZhanGSKen
13f9f6d744 <libaes>Library Release 7.6.11 2025-03-09 20:16:04 +08:00
ZhanGSKen
df51422e42 <aes>APK 7.6.11 release Publish. 2025-03-09 20:15:48 +08:00
ZhanGSKen
6e6540698b 百分比拖动确定按钮添加图标位置初始化设定 2025-03-09 20:14:06 +08:00
ZhanGSKen
445bf47e38 <contacts>APK 1.0.18 release Publish. 2025-03-09 20:06:59 +08:00
ZhanGSKen
322e1426d7 修复拉动拨号控件在列表滚动时图标位置不稳定的BUG. 2025-03-09 20:05:52 +08:00
ZhanGSKen
9ff752b652 <contacts>APK 1.0.17 release Publish. 2025-03-09 17:42:52 +08:00
ZhanGSKen
95cba7166e UI优化 2025-03-09 17:41:19 +08:00
ZhanGSKen
ba4354ad59 <contacts>APK 1.0.16 release Publish. 2025-03-09 14:02:13 +08:00
ZhanGSKen
69fd92f4a0 Merge branch 'appbase' into contacts 2025-03-09 14:01:10 +08:00
ZhanGSKen
73608ed6e6 更新拉动拨号控件 2025-03-09 14:00:36 +08:00
ZhanGSKen
5a756a0f00 <libaes>Library Release 7.6.10 2025-03-09 13:56:33 +08:00
ZhanGSKen
b13a3d4866 <aes>APK 7.6.10 release Publish. 2025-03-09 13:56:19 +08:00
ZhanGSKen
57973b7210 修改百分比拉动控件除了图标以外的区域的响应逻辑 2025-03-09 13:55:25 +08:00
ZhanGSKen
f30470e46f <libaes>Library Release 7.6.9 2025-03-09 13:47:14 +08:00
ZhanGSKen
7c6dc87cf4 <aes>APK 7.6.9 release Publish. 2025-03-09 13:45:52 +08:00
ZhanGSKen
4756226a56 提高百分比拉动进度条与ViewPager兼容度 2025-03-09 13:44:44 +08:00
ZhanGSKen
5746ef4569 Merge branch 'contacts' into appbase 2025-03-09 11:43:12 +08:00
ZhanGSKen
ad745a9cc1 更新类库 2025-03-09 11:42:53 +08:00
ZhanGSKen
334da43001 <libaes>Library Release 7.6.8 2025-03-09 11:30:22 +08:00
ZhanGSKen
d83abd7c83 <aes>APK 7.6.8 release Publish. 2025-03-09 11:30:09 +08:00
ZhanGSKen
cd24504131 <libaes>Library Release 7.6.7 2025-03-09 11:28:58 +08:00
ZhanGSKen
e8921350fd <aes>APK 7.6.7 release Publish. 2025-03-09 11:28:39 +08:00
ZhanGSKen
3765154f60 优化百分比拉动seekbar控件 2025-03-09 11:27:27 +08:00
ZhanGSKen
8be7a931eb Merge branch 'appbase' into aes 2025-03-09 09:35:22 +08:00
ZhanGSKen
41c0394c4a <libapputils>Library Release 9.4.4 2025-03-09 09:34:30 +08:00
ZhanGSKen
d2a84f554b <apputils>APK 9.4.4 release Publish. 2025-03-09 09:34:16 +08:00
ZhanGSKen
d1e3e27f20 更新类库 2025-03-09 09:33:15 +08:00
ZhanGSKen
f9242bfc9a 编译参数修复 2025-03-09 09:29:39 +08:00
ZhanGSKen
bf37eb61bb Merge branch 'apputils' of https://gitea.winboll.cc/Studio/APP.git into apputils 2025-03-09 09:26:28 +08:00
ZhanGSKen
6fd1513d6b <libapputils>Library Release 9.4.3 2025-03-09 09:21:00 +08:00
ZhanGSKen
394d75e5a2 <apputils>APK 9.4.3 release Publish. 2025-03-09 09:20:34 +08:00
ZhanGSKen
378e9168b6 更新类库 2025-03-09 09:19:23 +08:00
ZhanGSKen
a3fa570b50 Merge branch 'appbase' into apputils 2025-03-09 09:16:39 +08:00
ZhanGSKen
5623d2d341 <libappbase>Library Release 2.1.5 2025-03-09 09:15:47 +08:00
ZhanGSKen
3d9b203760 <appbase>APK 2.1.5 release Publish. 2025-03-09 09:15:24 +08:00
ZhanGSKen
498a8ae458 更新Gradle配置 2025-03-09 09:13:51 +08:00
ZhanGSKen
e3571ae39f <contacts>APK 1.0.15 release Publish. 2025-03-08 04:50:59 +08:00
ZhanGSKen
261c87a42d 修复应用日志时间显示BUG 2025-03-08 04:49:35 +08:00
ZhanGSKen
9b8d6ad46b <libappbase>Library Release 2.1.4 2025-03-08 04:46:49 +08:00
ZhanGSKen
482f289df3 <appbase>APK 2.1.4 release Publish. 2025-03-08 04:46:23 +08:00
ZhanGSKen
28ab4e2859 修复日志时间显示BUG 2025-03-08 04:45:18 +08:00
ZhanGSKen
0db31c07ba <contacts>APK 1.0.14 release Publish. 2025-03-08 04:37:47 +08:00
ZhanGSKen
87dea88e36 <contacts>APK 1.0.13 release Publish. 2025-03-08 04:37:15 +08:00
ZhanGSKen
5779f195f8 设置UI为拖动拨号方式 2025-03-08 04:36:07 +08:00
ZhanGSKen
c55183b10c <libaes>Library Release 7.6.6 2025-03-08 04:21:39 +08:00
ZhanGSKen
1204f295e1 <aes>APK 7.6.6 release Publish. 2025-03-08 04:21:16 +08:00
ZhanGSKen
fbd6ed9cf4 更改类库引用方式,更新类库。 2025-03-08 04:19:48 +08:00
ZhanGSKen
7662d1c153 <libapputils>Library Release 9.4.2 2025-03-08 03:59:18 +08:00
ZhanGSKen
ac7b5bb1a2 <apputils>APK 9.4.2 release Publish. 2025-03-08 03:59:02 +08:00
ZhanGSKen
eeae184e7e 更改类库引用方式,更新类库。 2025-03-08 03:58:06 +08:00
ZhanGSKen
fd0cb05812 <libappbase>Library Release 2.1.3 2025-03-08 03:55:19 +08:00
ZhanGSKen
39b6c0ec89 <appbase>APK 2.1.3 release Publish. 2025-03-08 03:54:56 +08:00
ZhanGSKen
3b3ddbc8c9 更改类库引用方式。 2025-03-08 03:54:03 +08:00
ZhanGSKen
d5f34ad618 <libapputils>Library Release 9.4.1 2025-03-08 03:43:49 +08:00
ZhanGSKen
3ad1863a5f <apputils>APK 9.4.1 release Publish. 2025-03-08 03:43:19 +08:00
ZhanGSKen
291080aa15 更改类库引用方式,更新类库。 2025-03-08 03:42:12 +08:00
ZhanGSKen
38aee09f87 <libappbase>Library Release 2.1.2 2025-03-08 03:38:53 +08:00
ZhanGSKen
89c4d00091 <appbase>APK 2.1.2 release Publish. 2025-03-08 03:38:29 +08:00
ZhanGSKen
4f57678012 更改类库引用方式 2025-03-08 03:37:30 +08:00
ZhanGSKen
32d3960e03 更新类库 2025-03-08 03:35:07 +08:00
ZhanGSKen
39b16318f9 Merge branch 'appbase' into aes 2025-03-08 03:28:58 +08:00
ZhanGSKen
9afb1751a6 0327 2025-03-08 03:28:00 +08:00
ZhanGSKen
973a0ff94f <libapputils>Library Release 9.4.0 2025-03-08 03:14:44 +08:00
ZhanGSKen
e04ea7f035 <apputils>APK 9.4.0 release Publish. 2025-03-08 03:14:21 +08:00
ZhanGSKen
ecbaf639a0 更新类库 2025-03-08 03:12:28 +08:00
ZhanGSKen
b31e55d8ca <libappbase>Library Release 2.1.1 2025-03-08 02:31:18 +08:00
ZhanGSKen
80129470d7 <appbase>APK 2.1.1 release Publish. 2025-03-08 02:31:02 +08:00
ZhanGSKen
7b03e8302a 精简结构 2025-03-08 02:29:40 +08:00
ZhanGSKen
4d321dde84 添加类库引用 2025-03-07 17:11:17 +08:00
ZhanGSKen
b3a495ff6a <libappbase>Library Release 2.1.0 2025-03-07 14:55:07 +08:00
ZhanGSKen
a49b6cbfe0 <appbase>APK 2.1.0 release Publish. 2025-03-07 14:54:46 +08:00
ZhanGSKen
274a7135e7 应用命名重构调试完成 2025-03-07 14:51:00 +08:00
ZhanGSKen
00d0871809 更新UI视图 2025-03-07 12:37:13 +08:00
ZhanGSKen
bc252041d3 1115 2025-03-07 11:15:22 +08:00
ZhanGSKen
48165364d1 Merge branch 'appbase' into aes 2025-03-07 09:34:23 +08:00
ZhanGSKen
e98f62149d 0933 2025-03-07 09:33:34 +08:00
ZhanGSKen
02f2d4f0bc <contacts>APK 1.0.12 release Publish. 2025-03-06 21:44:44 +08:00
ZhanGSKen
f6bece28ac 添加通信记录联系人显示 2025-03-06 21:43:50 +08:00
ZhanGSKen
559f1c58ba <contacts>APK 1.0.11 release Publish. 2025-03-06 20:00:52 +08:00
ZhanGSKen
4bb814308b 添加单号码单元测试 2025-03-06 19:59:11 +08:00
ZhanGSKen
05a9fc5275 <contacts>APK 1.0.10 release Publish. 2025-03-05 20:51:08 +08:00
ZhanGSKen
74d5239898 添加规则删除确认框。 2025-03-05 20:49:39 +08:00
ZhanGSKen
948141d5a9 规则编辑列表的项滑动逻辑完成。 2025-03-05 20:41:29 +08:00
ZhanGSKen
3535df8b3e <contacts>APK 1.0.9 release Publish. 2025-03-05 17:21:57 +08:00
ZhanGSKen
bd4ba7b291 连接规则记录操作接口完成 2025-03-05 17:20:00 +08:00
ZhanGSKen
9ff8b1ed80 1629 2025-03-05 16:29:55 +08:00
ZhanGSKen
859238a173 1852 2025-03-04 18:52:16 +08:00
ZhanGSKen
53eced104e <contacts>APK 1.0.8 release Publish. 2025-03-04 01:25:27 +08:00
ZhanGSKen
b45119b487 添加调试信息 2025-03-04 01:24:16 +08:00
ZhanGSKen
fdddde33b5 <contacts>APK 1.0.7 release Publish. 2025-03-03 20:51:18 +08:00
ZhanGSKen
f263733609 UI界面优化 2025-03-03 20:42:00 +08:00
ZhanGSKen
51a1cf1e26 重构为Java7语法 2025-03-03 20:23:00 +08:00
ZhanGSKen
093772c824 <contacts>APK 1.0.6 release Publish. 2025-03-03 17:39:16 +08:00
ZhanGSKen
bf3e9bdc91 云盾防御体系成型 2025-03-03 17:37:42 +08:00
ZhanGSKen
0f72817b50 <contacts>APK 1.0.5 release Publish. 2025-03-02 18:48:57 +08:00
ZhanGSKen
c827b2cbad 完成电话连接规则的编辑和保存 2025-03-02 18:26:45 +08:00
ZhanGSKen
bca31f9079 WinBoll 应用体系重构 2025-03-02 10:55:32 +08:00
ZhanGSKen
33b7b65239 <mymessagemanager>APK 4.1.18 release Publish. 2025-03-01 14:11:49 +08:00
ZhanGSKen
664d14ad84 编译配置修复 2025-03-01 14:09:49 +08:00
ZhanGSKen
47cb393f76 更新短信接收规则设定:
1.启用了只接受通讯录,通讯录里有记录
2.如果不是数字通讯地址,但是在通讯录内
3.通讯地址是数字,并且在短信接收规则内。
以上3种情况就接收,其他一律放到回收站。
2025-03-01 14:01:13 +08:00
ZhanGSKen
6495f1c66e <mymessagemanager>APK 4.1.17 release Publish. 2025-03-01 13:39:17 +08:00
ZhanGSKen
f0c52d1e02 修复格式化通信录地址后的短信浏览BUG。 2025-03-01 13:38:37 +08:00
ZhanGSKen
d948f31331 <mymessagemanager>APK 4.1.16 release Publish. 2025-03-01 13:27:26 +08:00
ZhanGSKen
e1b3087020 格式化通讯地址显示 2025-03-01 13:25:22 +08:00
ZhanGSKen
23892192b9 设置本机GPS和腾讯SDK两种定位方法。 2025-03-01 11:09:34 +08:00
ZhanGSKen
e1b48fb6c5 1957 2025-02-28 19:57:42 +08:00
ZhanGSKen
6dc042e0ec 代码清理 2025-02-28 11:14:12 +08:00
ZhanGSKen
53a74cc9ea 清理冗余菜单 2025-02-28 11:11:44 +08:00
ZhanGSKen
1ac91f5c1e 分页菜单设计完成 2025-02-28 11:08:29 +08:00
ZhanGSKen
e0e001c417 应用布局基本设定 2025-02-28 10:43:35 +08:00
ZhanGSKen
fb7017a857 命名空间重构 2025-02-27 11:05:15 +08:00
ZhanGSKen
02673d19dd <contacts>APK 1.0.4 release Publish. 2025-02-26 19:10:28 +08:00
ZhanGSKen
38884d3457 基本拨号功能完成 2025-02-26 19:07:55 +08:00
ZhanGSKen
ecb56df773 1821 2025-02-26 18:22:10 +08:00
ZhanGSKen
a15f6bad8f 1509 2025-02-26 15:09:29 +08:00
ZhanGSKen
2f0293103c 添加通话记录和联系人 2025-02-26 14:10:16 +08:00
ZhanGSKen
d4135f0104 <contacts>APK 1.0.3 release Publish. 2025-02-26 05:10:50 +08:00
ZhanGSKen
bdb9bc7637 性能优化 2025-02-26 05:08:56 +08:00
ZhanGSKen
e7633e53ed <contacts>APK 1.0.2 release Publish. 2025-02-26 04:37:18 +08:00
ZhanGSKen
3734a659ff 添加主要服务启动设置 2025-02-26 04:35:14 +08:00
ZhanGSKen
b9f740c386 添加系统设置静音时的权限异常处理,添加固定的应用铃声音量设置。忽略其他应用设置的铃声音量。 2025-02-26 03:40:41 +08:00
ZhanGSKen
820574a4ba 2025-02-25 23:47:18 +08:00
ZhanGSKen
36368bd28e 1133 2025-02-25 23:33:40 +08:00
ZhanGSKen
03e21ab81c <mymessagemanager>APK 4.1.15 release Publish. 2025-02-25 20:51:01 +08:00
ZhanGSKen
ac72132969 添加电话号码前面有+号的检测兼容。 2025-02-25 20:50:03 +08:00
ZhanGSKen
cedb5f521b <mymessagemanager>APK 4.1.14 release Publish. 2025-02-25 20:25:31 +08:00
ZhanGSKen
396df6713c 添加单元测试模块,增加电话号码是否是数字的检测。 2025-02-25 20:19:54 +08:00
ZhanGSKen
90e66889a9 添加MyMessageManager项目 2025-02-25 18:53:54 +08:00
ZhanGSKen
3031c9bfe0 <libappbase>Library Release 2.0.2 2025-02-25 16:51:23 +08:00
ZhanGSKen
51acbb1f54 <appbase>APK 2.0.2 release Publish. 2025-02-25 16:51:09 +08:00
ZhanGSKen
26fc0b4684 <libappbase>Library Release 2.0.1 2025-02-25 16:51:01 +08:00
ZhanGSKen
ecb67edec1 <appbase>APK 2.0.1 release Publish. 2025-02-25 16:50:23 +08:00
ZhanGSKen
3b30acfdec <appbase>APK 2.0.0 release Publish. 2025-02-25 16:48:35 +08:00
ZhanGSKen
c633e1663b 2025-02-25 16:44:26 +08:00
ZhanGSKen
40589ad879 1641 2025-02-25 16:41:51 +08:00
ZhanGSKen
0357fcf6b3 0225_1615 2025-02-25 16:15:54 +08:00
ZhanGSKen
c56fdaf14d <libappbase>Library Release 2.0.0 2025-02-25 16:11:50 +08:00
ZhanGSKen
9b1264234e 设置版本号 2025-02-25 16:02:55 +08:00
ZhanGSKen
d207a9ea9b 更正com.android.tools.build:gradle:7.2.1'对应的Gradle版本设置 2025-02-25 15:59:48 +08:00
ZhanGSKen
404239de23 更新编译配置已对应Android10开发,API级别29。Java 使用版本为 Java 8。 2025-02-25 15:51:54 +08:00
ZhanGSKen
c16b80ffae 地图标记保存完成 2025-02-25 06:43:50 +08:00
ZhanGSKen
0bf0a1497a <contacts>APK 1.0.1 release Publish. 2025-02-25 00:17:29 +08:00
ZhanGSKen
2cc3850c95 优化铃声设置 2025-02-25 00:15:48 +08:00
ZhanGSKen
ca16a8677a 添加地图定位功能 2025-02-24 15:20:51 +08:00
ZhanGSKen
bb089a4eb1 整合SDK成功 2025-02-24 08:06:04 +08:00
ZhanGSKen
0c00ace869 注释问题代码 2025-02-24 04:30:26 +08:00
ZhanGSKen
e06b642b70 添加demo 2025-02-24 03:51:22 +08:00
ZhanGSKen
5e107028de 绘图与缩略完成 2025-02-22 19:43:11 +08:00
ZhanGSKen
3bcfc5a5da 添加Positions项目 2025-02-22 01:50:07 +08:00
ZhanGSKen
63c10e6dc9 添加溯源地址 2025-02-22 00:02:48 +08:00
ZhanGSKen
539afd0861 <contacts>APK 1.0.0 release Publish. 2025-02-21 12:18:00 +08:00
ZhanGSKen
234d2d57de 添加黑名单规则和区号规则设定 2025-02-21 11:37:22 +08:00
ZhanGSKen
e849e54960 <libappbase>Library Release 1.5.6 2025-02-21 11:03:53 +08:00
ZhanGSKen
8b2866419c <appbase>APK 1.5.6 release Publish. 2025-02-21 10:58:04 +08:00
ZhanGSKen
22a4a71203 更新bean基础类 2025-02-21 10:56:13 +08:00
ZhanGSKen
c16c6bba74 接收电话时预先静音模式调试完成 2025-02-21 09:47:43 +08:00
ZhanGSKen
c590c96fa6 基本电话接听与拨打功能完成 2025-02-21 06:13:51 +08:00
ZhanGSKen
64a9712294 添加电话拨打功能 2025-02-20 17:29:33 +08:00
ZhanGSKen
e5dfd5b975 拨号基本框架设计完成 2025-02-20 14:59:09 +08:00
ZhanGSKen
ffac543f6f 精简代码 2025-02-20 11:28:57 +08:00
ZhanGSKen
292f7c553f <libappbase>Library Release 1.5.5 2025-02-20 11:24:38 +08:00
ZhanGSKen
df9970c6df <appbase>APK 1.5.5 release Publish. 2025-02-20 11:24:23 +08:00
ZhanGSKen
0312ca50d2 添加绑定服务的APP的唤醒记录在部件的提示 2025-02-20 11:22:34 +08:00
ZhanGSKen
56187b588f <libappbase>Library Release 1.5.4 2025-02-19 19:57:16 +08:00
ZhanGSKen
d91372af52 <appbase>APK 1.5.4 release Publish. 2025-02-19 19:57:00 +08:00
ZhanGSKen
288725eca0 不同应用包服务绑定逻辑完成 2025-02-19 19:55:03 +08:00
ZhanGSKen
bd728b83a3 <libappbase>Library Release 1.5.3 2025-02-19 03:19:17 +08:00
ZhanGSKen
d4f9fc3561 <appbase>APK 1.5.3 release Publish. 2025-02-19 03:18:52 +08:00
ZhanGSKen
e7c614ebec 重构主应用架构 2025-02-19 03:17:49 +08:00
ZhanGSKen
c226a92ffe <libappbase>Library Release 1.5.2 2025-02-17 12:10:10 +08:00
ZhanGSKen
358e8b3522 <appbase>APK 1.5.2 release Publish. 2025-02-17 12:09:50 +08:00
ZhanGSKen
83ab4f9417 添加用磁贴启动小部件功能 2025-02-17 12:07:52 +08:00
ZhanGSKen
26cdacf1c6 BugFix 2025-02-17 11:44:15 +08:00
ZhanGSKen
6378433424 sos报告部件重构 2025-02-17 11:13:09 +08:00
ZhanGSKen
7b05d613e4 完成小部件分页功能 2025-02-16 20:54:33 +08:00
ZhanGSKen
691f9bbd1c 基本救援设施铺设完成 2025-02-15 21:37:33 +08:00
ZhanGSKen
7a8d3329d4 完成摘要事件监控小部件 2025-02-15 19:53:24 +08:00
ZhanGSKen
bbac0c7306 添加WinBoll类 2025-02-15 12:46:23 +08:00
ZhanGSKen
8d2b325172 实现磁贴启动服务功能 2025-02-15 11:30:20 +08:00
ZhanGSKen
825dfb944e AssistantService 启动成功 2025-02-14 21:18:43 +08:00
ZhanGSKen
419244b12a 放弃使用aidl 2025-02-14 07:30:47 +08:00
ZhanGSKen
39fda1b5da Use android studio add aidl file. 2025-02-14 07:04:21 +08:00
ZhanGSKen
464f2da89f test 2025-02-14 06:25:35 +08:00
ZhanGSKen
4f37b6f0e3 test 2025-02-14 06:08:50 +08:00
ZhanGSKen
f91cd0c9c3 <appbase>Start New Stage Version. 2025-02-14 06:02:07 +08:00
ZhanGSKen
d09f0783a4 <appbase>Start New Stage Version. 2025-02-14 06:01:54 +08:00
ZhanGSKen
accca716d4 Test aidl 2025-02-14 06:01:16 +08:00
ZhanGSKen
1baa0c5a61 更新类库,不同应用包之间广播消息接收调试通过。 2025-02-14 03:12:43 +08:00
ZhanGSKen
dfd09eb647 <libappbase>Library Release 1.5.1 2025-02-14 03:01:05 +08:00
ZhanGSKen
79547adcb3 <appbase>APK 1.5.1 release Publish. 2025-02-14 03:00:46 +08:00
ZhanGSKen
be39eef6e7 添加调试信息 2025-02-14 02:59:52 +08:00
ZhanGSKen
50490096b4 SOS广播消息发送与接收完成 2025-02-13 21:31:33 +08:00
ZhanGSKen
3dd4c84602 添加磁贴模块 2025-02-13 20:42:58 +08:00
ZhanGSKen
b0e81fc960 添加主服务 2025-02-13 07:29:48 +08:00
ZhanGSKen
311bc8e339 <libappbase>Library Release 1.5.0 2025-02-13 06:53:58 +08:00
ZhanGSKen
6467bcd675 <appbase>APK 1.5.0 release Publish. 2025-02-13 06:53:34 +08:00
ZhanGSKen
206c804b4d SOS 服务架构基本完成 2025-02-13 06:51:41 +08:00
ZhanGSKen
7a4df0444e 添加SOS广播接收 2025-02-13 03:46:55 +08:00
ZhanGSKen
75b2245061 添加初始 Contacts 项目 2025-02-12 23:28:42 +08:00
ZhanGSKen
050fd46d81 <libapputils>Library Release 9.3.2 2025-02-12 19:50:26 +08:00
ZhanGSKen
d4ea79b950 <apputils>APK 9.3.2 release Publish. 2025-02-12 19:50:03 +08:00
ZhanGSKen
06a40a4298 更新类库,精简代码。 2025-02-12 19:48:45 +08:00
ZhanGSKen
3c827a56cf <libappbase>Library Release 1.4.1 2025-02-12 18:04:10 +08:00
ZhanGSKen
36af7947e8 <appbase>APK 1.4.1 release Publish. 2025-02-12 18:03:55 +08:00
ZhanGSKen
805edcf9c4 添加吐司控件 2025-02-12 16:43:57 +08:00
ZhanGSKen
35835d746e 更新类库,应用崩溃报告风格化设置。 2025-02-12 15:21:27 +08:00
ZhanGSKen
11005e3356 <libappbase>Library Release 1.4.0 2025-02-12 15:01:51 +08:00
ZhanGSKen
75361b2313 <appbase>APK 1.4.0 release Publish. 2025-02-12 15:01:33 +08:00
ZhanGSKen
1d29ce81e8 编译测试 2025-02-12 14:59:38 +08:00
ZhanGSKen
0297e81090 精简配置 2025-02-12 14:59:00 +08:00
ZhanGSKen
df7203e985 更新类库 2025-02-12 14:57:50 +08:00
ZhanGSKen
8c4e8b8e23 <appbase>Start New Stage Version. 2025-02-12 14:14:36 +08:00
ZhanGSKen
d9c02f55e3 更新版本号 2025-02-12 14:14:15 +08:00
ZhanGSKen
a9cb6b471b <appbase>Start New Stage Version. 2025-02-12 14:10:53 +08:00
ZhanGSKen
e694063867 <appbase>Start New Stage Version. 2025-02-12 14:09:34 +08:00
ZhanGSKen
0ee13986dc <appbase>Start New Stage Version. 2025-02-12 14:09:05 +08:00
ZhanGSKen
3239778922 更新测试APP风格配置 2025-02-12 14:06:02 +08:00
ZhanGSKen
13510f45cf 应用风格架构基本完成 2025-02-12 13:28:58 +08:00
ZhanGSKen
49d300dd33 添加信号处理中心 2025-02-12 11:28:39 +08:00
ZhanGSKen
c42f677d48 <libappbase>Library Release 1.3.0 2025-02-11 13:11:35 +08:00
ZhanGSKen
9052a3924b <appbase>APK 1.3.0 release Publish. 2025-02-11 13:11:17 +08:00
ZhanGSKen
9642ad1966 精简代码 2025-02-11 13:09:33 +08:00
ZhanGSKen
6686da0e8f 调色架构1 2025-02-11 12:42:07 +08:00
ZhanGSKen
9e7aff09d1 <libappbase>Library Release 1.2.4 2025-02-11 00:32:09 +08:00
ZhanGSKen
494b2b7fbc <appbase>APK 1.2.4 release Publish. 2025-02-11 00:31:50 +08:00
ZhanGSKen
b1f9b74e28 源码重构整理,精简代码。 2025-02-11 00:27:54 +08:00
ZhanGSKen
32287e17c0 注释冗余代码 2025-02-09 19:05:27 +08:00
ZhanGSKen
5f3d03ba7d 更新类库 2025-02-09 15:14:33 +08:00
ZhanGSKen
8a0605c12e <libappbase>Library Release 1.2.3 2025-02-09 15:09:48 +08:00
ZhanGSKen
5768881a47 <appbase>APK 1.2.3 release Publish. 2025-02-09 15:09:34 +08:00
ZhanGSKen
6e02c130b2 类名重构,简化代码 2025-02-09 15:08:23 +08:00
ZhanGSKen
1d372ff9ae 更新类库 2025-02-09 13:13:35 +08:00
ZhanGSKen
fb9443bbc7 <libappbase>Library Release 1.2.2 2025-02-09 13:09:48 +08:00
ZhanGSKen
bfc1180822 <appbase>APK 1.2.2 release Publish. 2025-02-09 13:09:33 +08:00
ZhanGSKen
ee52a6c28c 完成应用报告显示逻辑 2025-02-09 13:08:34 +08:00
ZhanGSKen
4a1e398755 更新类库 2025-02-09 11:43:53 +08:00
ZhanGSKen
2f72f1795e <libappbase>Library Release 1.2.1 2025-02-09 11:41:09 +08:00
ZhanGSKen
db28447c0f <appbase>APK 1.2.1 release Publish. 2025-02-09 11:40:48 +08:00
ZhanGSKen
ad2c29d8ff 修复外部崩溃与内部崩溃的保险丝恢复逻辑 2025-02-09 11:39:24 +08:00
ZhanGSKen
b0e3bfe243 添加应用崩溃源APP名称显示 2025-02-09 11:33:27 +08:00
ZhanGSKen
7b1aeeae8b 统一内外部报告风格 2025-02-09 11:18:15 +08:00
ZhanGSKen
54cceeed3b 应用崩溃报告高级视图调试完成 2025-02-08 14:27:38 +08:00
ZhanGSKen
a72c5e1e6e 应用保险丝熔断测试通过 2025-02-08 12:26:59 +08:00
ZhanGSKen
26fcd9b584 日志模块初步调试完成 2025-02-07 19:39:25 +08:00
ZhanGSKen
ea7a0bda14 添加日志,文件,BaseBean类,未调试。 2025-02-07 17:06:16 +08:00
ZhanGSKen
c01a739b9d 更新类库,未调试。 2025-02-06 11:29:46 +08:00
ZhanGSKen
107be6d6ad <libapputils>Library Release 9.3.1 2025-02-06 11:03:07 +08:00
ZhanGSKen
19db567a7d <apputils>APK 9.3.1 release Publish. 2025-02-06 11:02:45 +08:00
ZhanGSKen
b14add854e 应用介绍模块更新 2025-02-06 11:00:51 +08:00
ZhanGSKen
104d9fa283 更新类库,重构基础活动窗口类为实际活动窗口类。 2025-02-06 07:37:15 +08:00
ZhanGSKen
b26b9dbbc4 <libappbase>Library Release 1.2.0 2025-02-06 07:12:51 +08:00
ZhanGSKen
8a405d33a7 <appbase>APK 1.2.0 release Publish. 2025-02-06 07:12:30 +08:00
ZhanGSKen
2b92da3e01 添加调试模式设置功能 2025-02-06 07:11:04 +08:00
ZhanGSKen
dd041e5d78 WinBollActivity 类型重构 2025-02-05 10:37:54 +08:00
ZhanGSKen
2f019ae176 重构 WinBollActivity 2025-02-04 12:21:09 +08:00
ZhanGSKen
7f8ee8d6de 更新类库 2025-02-04 09:00:34 +08:00
ZhanGSKen
b5b4fbd3f5 <libapputils>Library Release 9.3.0 2025-02-04 08:54:24 +08:00
ZhanGSKen
548dcf74ed <apputils>APK 9.3.0 release Publish. 2025-02-04 08:54:03 +08:00
ZhanGSKen
547bf894c6 更新类库 2025-02-04 08:53:03 +08:00
ZhanGSKen
ac1c9fb9f5 <libappbase>Library Release 1.1.3 2025-02-04 08:46:57 +08:00
ZhanGSKen
16dd559c5b <appbase>APK 1.1.3 release Publish. 2025-02-04 08:46:36 +08:00
ZhanGSKen
3793ae3252 调整命名空间,精简代码 2025-02-04 08:45:31 +08:00
ZhanGSKen
c90d8549b4 <libaes>Library Release 7.6.5 2025-02-04 08:26:21 +08:00
ZhanGSKen
f3d97fc94b <aes>APK 7.6.5 release Publish. 2025-02-04 08:26:00 +08:00
ZhanGSKen
8f8c3c6c97 优化主题配置结构 2025-02-04 08:24:06 +08:00
ZhanGSKen
61200c37be <libaes>Library Release 7.6.4 2025-01-26 14:20:24 +08:00
ZhanGSKen
ebee402c84 <aes>APK 7.6.4 release Publish. 2025-01-26 14:19:55 +08:00
ZhanGSKen
0a7a26d3cd 更新引用类库 2025-01-26 14:17:28 +08:00
ZhanGSKen
09e6429726 <libapputils>Library Release 9.2.17 2025-01-23 14:51:10 +08:00
ZhanGSKen
3ad9bb262e <apputils>APK 9.2.17 release Publish. 2025-01-23 14:50:49 +08:00
ZhanGSKen
15992da22f 添加Application返回函数 2025-01-23 14:49:56 +08:00
ZhanGSKen
dc8f127a8d <libappbase>Library Release 1.1.2 2025-01-23 14:42:57 +08:00
ZhanGSKen
3cf4155eab <appbase>APK 1.1.2 release Publish. 2025-01-23 14:42:39 +08:00
ZhanGSKen
7ca144bfc4 添加 Application 返回函数 2025-01-23 14:41:36 +08:00
ZhanGSKen
7fb4e665f9 <libapputils>Library Release 9.2.16 2025-01-23 14:30:38 +08:00
ZhanGSKen
6a82889926 <apputils>APK 9.2.16 release Publish. 2025-01-23 14:30:15 +08:00
ZhanGSKen
7272cc4e5b 更新类库,添加应用上下文函数 2025-01-23 14:28:54 +08:00
ZhanGSKen
73222d3272 <libappbase>Library Release 1.1.1 2025-01-23 14:24:23 +08:00
ZhanGSKen
b9c9eb926d <appbase>APK 1.1.1 release Publish. 2025-01-23 14:23:50 +08:00
ZhanGSKen
35efcdddcd 添加应用上下文函数 2025-01-23 14:23:00 +08:00
ZhanGSKen
1f7d112a8a <libapputils>Library Release 9.2.15 2025-01-23 14:03:05 +08:00
ZhanGSKen
936e214015 <apputils>APK 9.2.15 release Publish. 2025-01-23 14:02:45 +08:00
ZhanGSKen
46e95d1b1f 增加容错调试能力 2025-01-23 14:01:42 +08:00
ZhanGSKen
6410eda84e <libaes>Library Release 7.6.3 2025-01-23 12:54:30 +08:00
ZhanGSKen
c91c9c9887 <aes>APK 7.6.3 release Publish. 2025-01-23 12:54:10 +08:00
ZhanGSKen
6450faa556 更新类库 2025-01-23 12:44:36 +08:00
ZhanGSKen
15173f7af3 <libapputils>Library Release 9.2.14 2025-01-23 04:27:34 +08:00
ZhanGSKen
6f3b6c40af <apputils>APK 9.2.14 release Publish. 2025-01-23 04:27:21 +08:00
ZhanGSKen
42ffba69e5 更新联系邮件 2025-01-23 04:26:52 +08:00
ZhanGSKen
f021e8a1a3 <libapputils>Library Release 9.2.13 2025-01-23 04:05:47 +08:00
ZhanGSKen
02ce7dedb0 <apputils>APK 9.2.13 release Publish. 2025-01-23 04:05:32 +08:00
ZhanGSKen
8e290cd5e6 应用介绍添加 Gitea 拥有者属性 2025-01-23 04:04:45 +08:00
ZhanGSKen
37f2aa5f1b <libapputils>Library Release 9.2.12 2025-01-23 03:47:38 +08:00
ZhanGSKen
10cc69940b <apputils>APK 9.2.12 release Publish. 2025-01-23 03:47:26 +08:00
ZhanGSKen
bfdff9ff2f 日志类BugFix 2025-01-23 03:46:57 +08:00
ZhanGSKen
12c6129a61 <libapputils>Library Release 9.2.11 2025-01-23 03:34:10 +08:00
ZhanGSKen
ea10d1b540 <apputils>APK 9.2.11 release Publish. 2025-01-23 03:33:58 +08:00
ZhanGSKen
81f6ff592e 应用类调整 2025-01-23 03:33:26 +08:00
ZhanGSKen
e6f22e9212 <libapputils>Library Release 9.2.10 2025-01-23 03:05:52 +08:00
ZhanGSKen
8ce8f383fa <apputils>APK 9.2.10 release Publish. 2025-01-23 03:05:41 +08:00
ZhanGSKen
35d32b384f 应用类重构 2025-01-23 03:05:08 +08:00
ZhanGSKen
85e86ddf05 <libapputils>Library Release 9.2.9 2025-01-23 02:44:03 +08:00
ZhanGSKen
99bf804625 <apputils>APK 9.2.9 release Publish. 2025-01-23 02:43:51 +08:00
ZhanGSKen
261259e61e 应用类重构 2025-01-23 02:43:15 +08:00
ZhanGSKen
9aaf3433bd <libapputils>Library Release 9.2.8 2025-01-23 02:30:30 +08:00
ZhanGSKen
b739510951 <apputils>APK 9.2.8 release Publish. 2025-01-23 02:30:17 +08:00
ZhanGSKen
903359d9a2 <libapputils>Library Release 9.2.7 2025-01-23 02:17:45 +08:00
ZhanGSKen
69e7e72ed8 <apputils>APK 9.2.7 release Publish. 2025-01-23 02:17:32 +08:00
ZhanGSKen
a96ba362b4 应用类重构 2025-01-23 02:16:53 +08:00
ZhanGSKen
6447bcf924 <libapputils>Library Release 9.2.6 2025-01-23 01:54:40 +08:00
ZhanGSKen
18ed325731 <apputils>APK 9.2.6 release Publish. 2025-01-23 01:54:23 +08:00
ZhanGSKen
16e3d10b63 吐司框架分离初始化步骤 2025-01-23 01:53:06 +08:00
ZhanGSKen
8b0e8b00ae <libapputils>Library Release 9.2.5 2025-01-23 01:34:24 +08:00
ZhanGSKen
7f61ff1470 <apputils>APK 9.2.5 release Publish. 2025-01-23 01:34:03 +08:00
ZhanGSKen
c4e0c23a0c 应用介绍页添加 Gitea APP 子项目文件夹直接链接方式 2025-01-23 01:33:10 +08:00
ZhanGSKen
c7d26bbc3d 清理应用提示信息 2025-01-23 01:14:06 +08:00
ZhanGSKen
4968bbaeae <apputils>APK 9.2.4 release Publish. 2025-01-22 21:22:05 +08:00
ZhanGSKen
8e6b06e366 <apputils>APK 9.2.3 release Publish. 2025-01-22 21:17:58 +08:00
ZhanGSKen
ae7fb2984a 介绍页调试中 2025-01-22 21:16:35 +08:00
ZhanGSKen
a4d009f8fb 重构 WinBoll 框架应用类 2025-01-22 19:36:11 +08:00
ZhanGSKen
5a549e9652 <libapputils>Library Release 9.2.2 2025-01-22 17:20:01 +08:00
ZhanGSKen
e2d71ae088 <apputils>APK 9.2.2 release Publish. 2025-01-22 17:19:38 +08:00
ZhanGSKen
fc5ac32514 <libappbase>Library Release 1.1.0 2025-01-22 14:48:24 +08:00
ZhanGSKen
afa8a97dba <appbase>APK 1.1.0 release Publish. 2025-01-22 14:47:54 +08:00
ZhanGSKen
fe004c7b82 设置编译参数 2025-01-22 14:47:01 +08:00
ZhanGSKen
b9582cb99d <appbase>Start New Stage Version. 2025-01-22 14:16:40 +08:00
ZhanGSKen
b3a69283ab 添加文本复制提示 2025-01-22 13:27:47 +08:00
ZhanGSKen
506d2619f2 应用介绍页测试完成 2025-01-20 14:51:10 +08:00
ZhanGSKen
17fa805a7f 源码整理 2025-01-20 13:17:58 +08:00
ZhanGSKen
1dcf8cd007 代码整理 2025-01-20 13:00:52 +08:00
ZhanGSKen
d86d50212e 优化Log UI 2025-01-20 12:57:59 +08:00
ZhanGSKen
af2e09c02a 应用退出按钮调试完成,添加日志窗口调动响应。 2025-01-20 12:50:22 +08:00
ZhanGSKen
de6361b19b APPUtils编译调试 2025-01-20 11:07:17 +08:00
ZhanGSKen
36e10db8e3 APPBase编译调试 2025-01-19 23:37:15 +08:00
ZhanGSKen
3ee2da401a 添加安卓编译模块 2025-01-19 21:15:40 +08:00
ZhanGSKen
334eedd4ee 添加秘钥模块 2025-01-19 20:12:23 +08:00
ZhanGSKen
65509eacba 拷贝APP_Bck20250119项目源码,移除libjc/jcc/libs/android-29.jar文件。 2025-01-19 20:04:37 +08:00
1079 changed files with 64272 additions and 0 deletions

87
.github/workflows/android.yml vendored Normal file
View File

@ -0,0 +1,87 @@
name: Android CI
# 触发器
on:
push:
tags:
- *-beta
pull_request:
tags:
- *-beta
jobs:
build:
runs-on: ubuntu-latest
# 设置 JDK 环境
steps:
- uses: actions/checkout@v3
- name: set up JDK 11
uses: actions/setup-java@v3
with:
java-version: '11'
distribution: 'temurin'
cache: gradle
- name: Grant execute permission for gradlew
run: chmod +x gradlew
# 获取应用打包秘钥库
- name: Checkout Android Keystore
uses: actions/checkout@v3
with:
repository: zhangsken/keystore # 存储应用打包用的 keystore 的仓库(格式:用户名/仓库名)
token: ${{ secrets.APP_SECRET_TOKEN_1 }} # 连接仓库的 token , 需要单独配置
path: keystore # 仓库的根目录名
# 打包 Stage Release 版本应用
- name: Build with Gradle
run: bash ./gradlew assembleBetaRelease
# 创建release
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.APP_SECRET_TOKEN_1 }}
# GitHub 会自动创建 GITHUB_TOKEN 密码以在工作流程中使用。
# 您可以使用 GITHUB_TOKEN 在工作流程运行中进行身份验证。
# 当您启用 GitHub Actions 时GitHub 在您的仓库中安装 GitHub 应用程序。
# GITHUB_TOKEN 密码是一种 GitHub 应用程序 安装访问令牌。
# 您可以使用安装访问令牌代表仓库中安装的 GitHub 应用程序 进行身份验证。
# 令牌的权限仅限于包含您的工作流程的仓库。 更多信息请参阅“GITHUB_TOKEN 的权限”。
# 在每个作业开始之前, GitHub 将为作业提取安装访问令牌。 令牌在作业完成后过期。
with:
tag_name: ${{ github.ref }}
release_name: Release ${{ github.ref }}
draft: false
prerelease: false
# 获取 APK 版本号
- name: Get Version Name
uses: actions/github-script@v3
id: get-version
with:
script: |
const str=process.env.GITHUB_REF;
return str.substring(str.indexOf("v"));
result-encoding: string
# 上传至 Release 的资源
- name: Upload Release Asset
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.APP_SECRET_TOKEN_1 }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }} # 上传网址,无需改动
#asset_path: app/build/outputs/apk/release/app-release.apk # 上传路径(Release)
asset_path: app/build/outputs/apk/beta/release/app-beta-release.apk # 上传路径(WinBoll Stage Release)
asset_name: WinBoll-${{steps.get-version.outputs.result}}0.apk # 资源名
asset_content_type: application/vnd.android.package-archiv # 资源类型
# 存档打包的文件
- name: Archive production artifacts
uses: actions/upload-artifact@v2
with:
name: build
path: app/build/outputs # 将打包之后的文件全部上传(里面会有混淆的 map 文件)

105
.gitignore vendored Normal file
View File

@ -0,0 +1,105 @@
# Built application files
*.apk
*.aar
*.ap_
*.aab
# Files for the ART/Dalvik VM
*.dex
# Java class files
*.class
# Generated files
bin/
gen/
out/
# Uncomment the following line in case you need and you don't have the release build type files in your app
# release/
# Gradle files
.gradle/
build/
# Local configuration file (sdk path, etc)
local.properties
# Proguard folder generated by Eclipse
proguard/
# Log Files
*.log
# Android Studio Navigation editor temp files
.navigation/
# Android Studio captures folder
captures/
# IntelliJ
*.iml
.idea/workspace.xml
.idea/tasks.xml
.idea/gradle.xml
.idea/assetWizardSettings.xml
.idea/dictionaries
.idea/libraries
# Android Studio 3 in .gitignore file.
.idea/caches
.idea/modules.xml
# Comment next line if keeping position of elements in Navigation Editor is relevant for you
.idea/navEditor.xml
# Keystore files
# Uncomment the following lines if you do not want to check your keystore files in.
*.jks
*.keystore
# External native build folder generated in Android Studio 2.2 and later
.externalNativeBuild
.cxx/
# Google Services (e.g. APIs or Firebase)
# google-services.json
# Freeline
freeline.py
freeline/
freeline_project_description.json
# fastlane
fastlane/report.xml
fastlane/Preview.html
fastlane/screenshots
fastlane/test_output
fastlane/readme.md
# Version control
vcs.xml
# lint
lint/intermediates/
lint/generated/
lint/outputs/
lint/tmp/
# lint/reports/
# Android Profiling
*.hprof
# Custom
.androidide
lint-results.xml
lint-results.html
winboll.properties
local.properties
## 忽略模块应用编译配置
/settings.gradle
/gradle.properties
## 忽略 srv 纠结问题
/srv/
## 忽略 winboll-x 文件夹
/winboll-x/

6
.gitmodules vendored Normal file
View File

@ -0,0 +1,6 @@
[submodule "libjc/jcc/libs"]
path = libjc/jcc/libs
url = https://gitea.winboll.cc/Studio/APP_libjc_jcc_libs.git
[submodule "keystore"]
path = keystore
url = https://gitea.winboll.cc/Studio/keystore.git

3
.idea/.gitignore generated vendored Normal file
View File

@ -0,0 +1,3 @@
# Default ignored files
/shelf/
/workspace.xml

1
.idea/.name generated Normal file
View File

@ -0,0 +1 @@
appbase

6
.idea/compiler.xml generated Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<bytecodeTargetLevel target="17" />
</component>
</project>

10
.idea/deploymentTargetDropDown.xml generated Normal file
View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="deploymentTargetDropDown">
<value>
<entry key="appbase">
<State />
</entry>
</value>
</component>
</project>

10
.idea/migrations.xml generated Normal file
View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectMigrations">
<option name="MigrateToGradleLocalJavaHome">
<set>
<option value="$PROJECT_DIR$" />
</set>
</option>
</component>
</project>

10
.idea/misc.xml generated Normal file
View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="jbr-17" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">
<option name="id" value="Android" />
</component>
</project>

18
.winboll/Readme.txt Normal file
View File

@ -0,0 +1,18 @@
## WinBoLL 主机编译事项提醒
## 类库类型源码发布
# 类库发布使用以下面命令
git pull && bash .winboll/bashPublishLIBAddTag.sh <类库模块文件夹名称>
## 纯应用类型源码发布
# 应用发布使用以下命令
git pull && bash .winboll/bashPublishAPKAddTag.sh <应用模块文件夹名称>
## 编译时提问。Add Github Workflows Tag? (yes/No)
回答yes: 将会添加一个 GitHub 工作流标签
GitHub 仓库会执行以该标签为标志的编译工作流。
回答No(默认): 就忽略 GitHub 标签,忽略 GitHub 工作流调用。
## Github Workflows 工作流设置注意事项
应用名称改变时需要修改.github/workflows/android.yml文件设置
在第79行asset_name: 处有应用包名称设置。

View File

@ -0,0 +1,32 @@
#!/usr/bin/bash
# 使用 `-z` 命令检查变量是否为空
if [ -z "$1" ] || [ -z "$2" ]; then
echo "Script parameter error: $0"
exit 2
fi
# 进入项目根目录
cd ${1}
echo -e "Work dir : \n"`pwd`
git config --global --add safe.directory "${1}"
echo "Current dir : "`pwd`
versionName=${2}
## 设置要检查的标签
tag="v"${versionName}
## 如果Git已经提交了所有代码就执行标签检查操作
if [[ -n $(git diff --stat) ]]
then
echo 'Source is no commit git completely, tag action cancel.'
exit 1
else
echo "Git status is clean."
if [ "$(git tag -l ${tag})" == "${tag}" ]; then
echo "Tag ${tag} exist."
exit 2
fi
echo "${0}: Git tag is checked OK: (${tag})"
fi

View File

@ -0,0 +1,17 @@
#!/usr/bin/bash
## 提交新的 APK 编译配置标志信息并推送到Git仓库。
# 使用 `-z` 命令检查变量是否为空
if [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ] || [ -z "$4" ]; then
echo "$0 Script parameter error."
echo "(Script Demo : [ bashCommitAppPublishBuildFlagInfo.sh <RootProjectDir> <VersionName> <BuildType Name> <RootProject Name> ])"
exit 2
fi
# 进入项目根目录
cd ${1}
echo -e "Work dir : \n"`pwd`
git add .
git commit -m "<$4>APK ${2} ${3} Publish."
git push origin && git push origin --tags

View File

@ -0,0 +1,48 @@
#!/usr/bin/bash
## 提交新的 Library 编译配置标志信息并推送到Git仓库。
# 检查是否指定了将要发布的类库名称
# 使用 `-z` 命令检查变量是否为空
if [ -z "$1" ]; then
echo "Library name error: $0"
exit 2
fi
## 开始执行脚本
echo -e "Current dir : \n"`pwd`
# 检查当前目录是否是项目根目录
if [[ -e $1/build.properties ]]; then
echo "The $1/build.properties file exists."
echo -e "Work dir correctly."
else
echo "The $1/build.properties file does not exist."
echo "尝试进入根目录"
# 进入项目根目录
cd ..
fi
## 本脚本需要在项目根目录下执行
echo -e "Current dir : \n"`pwd`
# 检查当前目录是否是项目根目录
if [[ -e $1/build.properties ]]; then
echo "The $1/build.properties file exists."
echo -e "Work dir correctly."
else
echo "The $1/build.properties file does not exist."
echo -e "Work dir error."
exit 1
fi
# 就读取脚本 .winboll/winboll_app_build.gradle 生成的 publishVersion。
# 如果文件中有 publishVersion 这一项,
# 使用grep找到包含"publishVersion="的那一行然后用awk提取其后的值
PUBLISH_VERSION=$(grep -o "publishVersion=.*" $1/build.properties | awk -F '=' '{print $2}')
echo "< $1/build.properties publishVersion : ${PUBLISH_VERSION} >"
## 设新的 WinBoLL 标签
# 脚本调试时使用
#tag="v7.6.4-test1"
# 正式设置标签时使用
#tag="v"${PUBLISH_VERSION}
git add .
git commit -m "<$1>Library Release ${PUBLISH_VERSION}"
git push origin && git push origin --tags

View File

@ -0,0 +1,166 @@
#!/usr/bin/bash
# 检查是否指定了将要发布的应用名称
# 使用 `-z` 命令检查变量是否为空
if [ -z "$1" ]; then
echo "No APP name specified : $0"
exit 2
fi
## 定义相关函数
## 检查 Git 源码是否完全提交了完全提交就返回0
function checkGitSources {
#local input="$1"
#echo "The string is: $input"
git config --global --add safe.directory `pwd`
if [[ -n $(git diff --stat) ]]
then
local result="Source is no commit completely."
echo $result
# 脚本调试时使用
#return 0
# 正式检查源码时使用
return 1
fi
local result="Git Source Check OK."
echo $result
return 0
}
function askAddWorkflowsTag {
read answer
if [[ $answer =~ ^[Yy]$ ]]; then
#echo "You chose yes."
return 1
else
#echo "You chose no."
return 0
fi
}
function addWinBoLLTag {
# 就读取脚本 .winboll/winboll_app_build.gradle 生成的 publishVersion。
# 如果文件中有 publishVersion 这一项,
# 使用grep找到包含"publishVersion="的那一行然后用awk提取其后的值
PUBLISH_VERSION=$(grep -o "publishVersion=.*" $1/build.properties | awk -F '=' '{print $2}')
echo "< $1/build.properties publishVersion : ${PUBLISH_VERSION} >"
## 设新的 WinBoLL 标签
# 脚本调试时使用
#tag="projectname-v7.6.4-test1"
# 正式设置标签时使用
tag=$1"-v"${PUBLISH_VERSION}
echo "< WinBoLL Tag To: $tag >";
# 检查是否已经添加了 WinBoLL Tag
if [ "$(git tag -l ${tag})" == "${tag}" ]; then
echo -e "< WinBoLL Tag ${tag} exist! >"
return 1 # WinBoLL标签重复
fi
# 添加WinBoLL标签
git tag -a ${tag} -F $1/app_update_description.txt
return 0
}
function addWorkflowsTag {
# 就读取脚本 .winboll/winboll_app_build.gradle 生成的 baseBetaVersion。
# 如果文件中有 baseBetaVersion 这一项,
# 使用grep找到包含"baseBetaVersion="的那一行然后用awk提取其后的值
BASE_BETA_VERSION=$(grep -o "baseBetaVersion=.*" $1/build.properties | awk -F '=' '{print $2}')
echo "< $1/build.properties baseBetaVersion : ${BASE_BETA_VERSION} >"
## 设新的 workflows 标签
# 脚本调试时使用
#tag="projectname-v7.6.4-beta"
# 正式设置标签时使用
tag=$1"-v"${BASE_BETA_VERSION}-beta
echo "< Workflows Tag To: $tag >";
# 检查是否已经添加了工作流 Tag
if [ "$(git tag -l ${tag})" == "${tag}" ]; then
echo -e "< Github Workflows Tag ${tag} exist! >"
return 1 # 工作流标签重复
fi
# 添加工作流标签
git tag -a ${tag} -F $1/app_update_description.txt
return 0
}
## 开始执行脚本
echo -e "Current dir : \n"`pwd`
# 检查当前目录是否是项目根目录
if [[ -e $1/build.properties ]]; then
echo "The $1/build.properties file exists."
echo -e "Work dir correctly."
else
echo "The $1/build.properties file does not exist."
echo "尝试进入根目录"
# 进入项目根目录
cd ..
fi
## 本脚本需要在项目根目录下执行
echo -e "Current dir : \n"`pwd`
# 检查当前目录是否是项目根目录
if [[ -e $1/build.properties ]]; then
echo "The $1/build.properties file exists."
echo -e "Work dir correctly."
else
echo "The $1/build.properties file does not exist."
echo -e "Work dir error."
exit 1
fi
# 检查源码状态
result=$(checkGitSources)
if [[ $? -eq 0 ]]; then
echo $result
# 如果Git已经提交了所有代码就执行标签和应用发布操作
# 预先询问是否添加工作流标签
#echo "Add Github Workflows Tag? (yes/No)"
#result=$(askAddWorkflowsTag)
#nAskAddWorkflowsTag=$?
#echo $result
# 发布应用
echo "Publishing WinBoLL APK ..."
# 脚本调试时使用
#bash gradlew :$1:assembleBetaDebug
# 正式发布
bash gradlew :$1:assembleStageRelease
echo "Publishing WinBoLL APK OK."
# 添加 WinBoLL 标签
result=$(addWinBoLLTag $1)
echo $result
if [[ $? -eq 0 ]]; then
echo $result
# WinBoLL 标签添加成功
else
echo -e "${0}: addWinBoLLTag $1\n${result}\nAdd WinBoLL tag cancel."
exit 1 # addWinBoLLTag 异常
fi
# 添加 GitHub 工作流标签
#if [[ $nAskAddWorkflowsTag -eq 1 ]]; then
# 如果用户选择添加工作流标签
#result=$(addWorkflowsTag $1)
#if [[ $? -eq 0 ]]; then
# echo $result
# 工作流标签添加成功
#else
#echo -e "${0}: addWorkflowsTag $1\n${result}\nAdd workflows tag cancel."
#exit 1 # addWorkflowsTag 异常
#fi
#fi
## 清理更新描述文件内容
echo "" > $1/app_update_description.txt
# 设置新版本开发参数配置
# 提交配置
git add .
git commit -m "<$1>Start New Stage Version."
echo "Push sources to git repositories ..."
# 推送源码到所有仓库
git push origin && git push origin --tags
else
echo -e "${0}: checkGitSources\n${result}\nShell cancel."
exit 1 # checkGitSources 异常
fi

View File

@ -0,0 +1,166 @@
#!/usr/bin/bash
# 检查是否指定了将要发布的调试版应用名称
# 使用 `-z` 命令检查变量是否为空
if [ -z "$1" ]; then
echo "No APP name specified : $0"
exit 2
fi
## 定义相关函数
## 检查 Git 源码是否完全提交了完全提交就返回0
function checkGitSources {
#local input="$1"
#echo "The string is: $input"
git config --global --add safe.directory `pwd`
if [[ -n $(git diff --stat) ]]
then
local result="Source is no commit completely."
echo $result
# 脚本调试时使用
#return 0
# 正式检查源码时使用
return 1
fi
local result="Git Source Check OK."
echo $result
return 0
}
function askAddWorkflowsTag {
read answer
if [[ $answer =~ ^[Yy]$ ]]; then
#echo "You chose yes."
return 1
else
#echo "You chose no."
return 0
fi
}
function addWinBoLLTag {
# 就读取脚本 .winboll/winboll_app_build.gradle 生成的 publishVersion。
# 如果文件中有 publishVersion 这一项,
# 使用grep找到包含"publishVersion="的那一行然后用awk提取其后的值
PUBLISH_VERSION=$(grep -o "publishVersion=.*" $1/build.properties | awk -F '=' '{print $2}')
echo "< $1/build.properties publishVersion : ${PUBLISH_VERSION} >"
## 设新的 WinBoLL 标签
# 脚本调试时使用
#tag="v7.6.4-test1"
# 正式调试版设置标签时使用
tag=$1"-v"${PUBLISH_VERSION}"-debug"
echo "< WinBoLL Tag To: $tag >";
# 检查是否已经添加了 WinBoLL Tag
if [ "$(git tag -l ${tag})" == "${tag}" ]; then
echo -e "< WinBoLL Tag ${tag} exist! >"
return 1 # WinBoLL标签重复
fi
# 添加WinBoLL标签
git tag -a ${tag} -F $1/app_update_description.txt
return 0
}
function addWorkflowsTag {
# 就读取脚本 .winboll/winboll_app_build.gradle 生成的 baseBetaVersion。
# 如果文件中有 baseBetaVersion 这一项,
# 使用grep找到包含"baseBetaVersion="的那一行然后用awk提取其后的值
BASE_BETA_VERSION=$(grep -o "baseBetaVersion=.*" $1/build.properties | awk -F '=' '{print $2}')
echo "< $1/build.properties baseBetaVersion : ${BASE_BETA_VERSION} >"
## 设新的 workflows 标签
# 脚本调试时使用
#tag="v7.6.4-beta"
# 正式设置标签时使用
tag=$1"-"v"${BASE_BETA_VERSION}-beta-debug
echo "< Workflows Tag To: $tag >";
# 检查是否已经添加了工作流 Tag
if [ "$(git tag -l ${tag})" == "${tag}" ]; then
echo -e "< Github Workflows Tag ${tag} exist! >"
return 1 # 工作流标签重复
fi
# 添加工作流标签
git tag -a ${tag} -F $1/app_update_description.txt
return 0
}
## 开始执行脚本
echo -e "Current dir : \n"`pwd`
# 检查当前目录是否是项目根目录
if [[ -e $1/build.properties ]]; then
echo "The $1/build.properties file exists."
echo -e "Work dir correctly."
else
echo "The $1/build.properties file does not exist."
echo "尝试进入根目录"
# 进入项目根目录
cd ..
fi
## 本脚本需要在项目根目录下执行
echo -e "Current dir : \n"`pwd`
# 检查当前目录是否是项目根目录
if [[ -e $1/build.properties ]]; then
echo "The $1/build.properties file exists."
echo -e "Work dir correctly."
else
echo "The $1/build.properties file does not exist."
echo -e "Work dir error."
exit 1
fi
# 检查源码状态
result=$(checkGitSources)
if [[ $? -eq 0 ]]; then
echo $result
# 如果Git已经提交了所有代码就执行标签和应用发布操作
# 预先询问是否添加工作流标签
echo "Add Github Workflows Tag? (yes/no)"
result=$(askAddWorkflowsTag)
nAskAddWorkflowsTag=$?
echo $result
# 发布应用
echo "Publishing WinBoLL Debug APK ..."
# 脚本调试时使用
#bash gradlew :$1:assembleBetaDebug
# 正式发布调试版
bash gradlew :$1:assembleStageDebug
echo "Publishing WinBoLL Debug APK OK."
# 添加 WinBoLL 标签
result=$(addWinBoLLTag $1)
echo $result
if [[ $? -eq 0 ]]; then
echo $result
# WinBoLL 标签添加成功
else
echo -e "${0}: addWinBoLLTag $1\n${result}\nAdd WinBoLL tag cancel."
exit 1 # addWinBoLLTag 异常
fi
# 添加 GitHub 工作流标签
if [[ $nAskAddWorkflowsTag -eq 1 ]]; then
# 如果用户选择添加工作流标签
result=$(addWorkflowsTag $1)
if [[ $? -eq 0 ]]; then
echo $result
# 工作流标签添加成功
else
echo -e "${0}: addWorkflowsTag $1\n${result}\nAdd workflows tag cancel."
exit 1 # addWorkflowsTag 异常
fi
fi
## 清理更新描述文件内容
echo "" > $1/app_update_description.txt
# 设置新版本开发参数配置
# 提交配置
git add .
git commit -m "<$1>Start New Stage Debug Version."
echo "Push sources to git repositories ..."
# 推送源码到所有仓库
git push origin && git push origin --tags
else
echo -e "${0}: checkGitSources\n${result}\nShell cancel."
exit 1 # checkGitSources 异常
fi

View File

@ -0,0 +1,14 @@
#!/usr/bin/bash
# 检查是否指定了将要发布的类库名称
# 使用 `-z` 命令检查变量是否为空
if [ -z "$1" ]; then
echo "No Library name specified : $0"
exit 2
fi
## 正式发布使用
git pull && bash gradlew :$1:publishReleasePublicationToWinBoLLReleaseRepository && bash .winboll/bashCommitLibReleaseBuildFlagInfo.sh $1
## 调试使用
#bash gradlew :$1:publishSnapshotWinBoLLPublicationToWinBoLLSnapshotRepository && bash .winboll/bashCommitLibReleaseBuildFlagInfo.sh $1

View File

@ -0,0 +1,255 @@
// WinBoLL
//
android {
//
//
def keyProps = new Properties()
def keyPropsFile = rootProject.file("${keyPropsFilePath}")
//println 'Test keystore path'
//println 'KeyProsFile :' + Boolean.toString(keyPropsFile.exists())
//assert(false)
assert(keyPropsFile.exists())
keyProps.load(new FileInputStream(keyPropsFile))
//
signingConfigs {
winboll {
assert(keyProps['keyAlias'] != null && keyProps['keyPassword'] != null && keyProps['storeFile'] != null && keyProps['storePassword'] != null)
keyAlias keyProps['keyAlias']
keyPassword keyProps['keyPassword']
storeFile keyProps['storeFile'] ? file(keyProps['storeFile']) : null
storePassword keyProps['storePassword']
}
}
buildTypes {
release {
signingConfig signingConfigs.winboll
}
debug {
signingConfig signingConfigs.winboll
}
}
flavorDimensions "WinBoLLApp"
productFlavors {
beta {
//
assert (winbollBuildProps['buildCount'] != null)
dimension "WinBoLLApp"
applicationIdSuffix ".beta"
LocalDateTime localDateTimeNow = LocalDateTime.now(ZoneId.of("Asia/Shanghai"));
versionNameSuffix "-beta" + winbollBuildProps['buildCount'] + "_" + localDateTimeNow.format('mmss')
}
stage {
dimension "WinBoLLApp"
}
}
//
//
android.applicationVariants.all { variant ->
//
// GitHub
// 1. Beta Release
// GitHub 使 android.yml "bash ./gradlew assembleBetaRelease"
//
if(variant.flavorName == "beta" && variant.buildType.name == "release") {
/* 后期管理预留代码 */
/* 暂时没有需要的 GitHub 应用包输出配置 */
/* GitHub 部分代码忽略 */
}
//
// WinBoLL
// 1. Stage Release
// 2. Beta Debug
//
if((variant.flavorName == "beta" && variant.buildType.name == "debug")
|| (variant.flavorName == "stage" && variant.buildType.name == "debug")
|| (variant.flavorName == "stage" && variant.buildType.name == "release")) {
println "Project root directory: " + project.rootDir.toString()
println "Project root directory name : " + project.rootDir.name
def outputPath="${project.projectDir.absolutePath}/build/outputs/apk/${variant.buildType.name}"
//def outputFileName="${rootProject.name}_${versionName}.apk"
def outputFileName=project.rootDir.name + "_${versionName}.apk"
// WinBoLL Studio
File fWinBoLLStudioDir = file("/sdcard/WinBoLLStudio/APKs");
if(!fWinBoLLStudioDir.exists()) {
//fWinBoLLStudioDir.mkdirs();
// APK发布和源码管理操作
// WinBoLL , APK发布和源码管理操作
println 'The current compilation environment is not in WinBoLL host, and the following APK publishing and source management operations will be ignore.'
} else {
/// WINBOLL 主机的 APK 发布和源码管理操作 ///
variant.getAssembleProvider().get().doFirst {
/* 后期管理预留代码 */
} //doFirst {
//
//
variant.getAssembleProvider().get().doLast {
variant.outputs.forEach{ file->
// WinBoLL
//
if(variant.flavorName == "beta"&&variant.buildType.name == "debug"){
//File outBuildBckDir = new File(fWinBoLLStudioDir, "/${rootProject.name}/${variant.buildType.name}")
File outBuildBckDir = new File(fWinBoLLStudioDir, "/" + project.rootDir.name + "/${variant.buildType.name}")
//
if(!outBuildBckDir.exists()) {
outBuildBckDir.mkdirs();
println "Output Folder Created.(WinBoLLStudio) : " + outBuildBckDir.getAbsolutePath()
}
if(outBuildBckDir.exists()) {
copy{
from file.outputFile
into outBuildBckDir
rename {
String fileName -> "${outputFileName}"
}
println "Output APK (WinBoLLStudio): " + outBuildBckDir.getAbsolutePath() + "/${outputFileName}"
}
//
assert (winbollBuildProps['buildCount'] != null)
assert (winbollBuildProps['libraryProject'] != null)
//
int buildCount = Integer.parseInt(winbollBuildProps['buildCount']) + 1;
//
winbollBuildProps.setProperty("buildCount", Integer.toString(buildCount));
//
FileOutputStream fos = new FileOutputStream(winbollBuildPropsFile)
winbollBuildProps.store(fos, "${winbollBuildPropsDesc}");
fos.close();
if(winbollBuildProps['libraryProject'] != "") {
// build.properties
//
File libraryProjectBuildPropsFile = new File("$RootProjectDir/" + winbollBuildProps['libraryProject'] + "/build.properties")
assert(winbollBuildPropsFile.exists())
assert(libraryProjectBuildPropsFile.exists())
java.nio.file.Path sourceFilePath = winbollBuildPropsFile.toPath();
java.nio.file.Path targetFilePath = libraryProjectBuildPropsFile.toPath();
// 使copyTo()
java.nio.file.Files.copy(sourceFilePath, targetFilePath, java.nio.file.StandardCopyOption.REPLACE_EXISTING);
}
}
}
// WinBoLL
//
if((variant.flavorName == "stage"&&variant.buildType.name == "debug")
|| (variant.flavorName == "stage"&&variant.buildType.name == "release")){
// APK
//
//
String szVersionName = "${versionName}"
String[] szlistTemp = szVersionName.split("-")
String szShortVersionName = szlistTemp[0]
//String szCommonTagAPKName = "${rootProject.name}_" + szShortVersionName + ".apk"
String szCommonTagAPKName = project.rootDir.name + "_" + szShortVersionName + ".apk"
println "CommonTagAPKName is : " + szCommonTagAPKName
//File outTagDir = new File(fWinBoLLStudioDir, "/${rootProject.name}/tag/")
File outTagDir = new File(fWinBoLLStudioDir, "/" + project.rootDir.name + "/tag/")
//
if(!outTagDir.exists()) {
outTagDir.mkdirs();
println "Output Folder Created.(Tags) : " + outTagDir.getAbsolutePath()
}
if(outTagDir.exists()) {
File targetAPK = new File(outTagDir, "${szCommonTagAPKName}")
if(targetAPK.exists()) {
// APK文件已经存在
assert (!targetAPK.exists())
// APK文件
//delete targetAPK
}
//
copy{
from file.outputFile
into outTagDir
rename {
String fileName -> "${outputFileName}"
}
println "Output APK (Tags): "+ outTagDir.getAbsolutePath() + "/${outputFileName}"
}
//
copy{
from file.outputFile
into outTagDir
rename {
String fileName -> "${szCommonTagAPKName}"
}
println "Output APK (Tags): "+ outTagDir.getAbsolutePath() + "/${szCommonTagAPKName}"
}
//
assert (winbollBuildProps['stageCount'] != null)
assert (winbollBuildProps['publishVersion'] != null)
assert (winbollBuildProps['buildCount'] != null)
assert (winbollBuildProps['baseVersion'] != null)
assert (winbollBuildProps['baseBetaVersion'] != null)
assert (winbollBuildProps['libraryProject'] != null)
//
winbollBuildProps.setProperty("publishVersion", "${versionName}");
// Stage
int stageCount = Integer.parseInt(winbollBuildProps['stageCount']) + 1;
winbollBuildProps.setProperty("stageCount", Integer.toString(stageCount));
// Beta版本名
winbollBuildProps.setProperty("baseBetaVersion", winbollBuildProps['baseVersion'] + "." + Integer.toString(stageCount));
//
winbollBuildProps.setProperty("buildCount", "0");
//
FileOutputStream fos = new FileOutputStream(winbollBuildPropsFile)
winbollBuildProps.store(fos, "${winbollBuildPropsDesc}");
fos.close();
if(winbollBuildProps['libraryProject'] != "") {
// build.properties
//
File libraryProjectBuildPropsFile = new File("$RootProjectDir/" + winbollBuildProps['libraryProject'] + "/build.properties")
assert(winbollBuildPropsFile.exists())
assert(libraryProjectBuildPropsFile.exists())
java.nio.file.Path sourceFilePath = winbollBuildPropsFile.toPath();
java.nio.file.Path targetFilePath = libraryProjectBuildPropsFile.toPath();
// 使copyTo()
java.nio.file.Files.copy(sourceFilePath, targetFilePath, java.nio.file.StandardCopyOption.REPLACE_EXISTING);
}
//
def resultCommitBuildFlag = exec {
commandLine 'bash', '--', "${RootProjectDir}/${bashCommitAppPublishBuildFlagInfoFilePath}", "${RootProjectDir}", "${versionName}", variant.buildType.name , rootProject.name
}
// bash命令的返回值
assert(resultCommitBuildFlag.getExitValue() == 0)
}
} // if(variant.buildType.name == "release"){
// app.apk
//
File outCommonDir = new File("/sdcard/AppProjects")
String commandAPKName = "app.apk"
if(outCommonDir.exists()) {
copy{
from file.outputFile
into outCommonDir
rename {
String fileName -> "${commandAPKName}"
}
println "Output APK (Common): " + outCommonDir.getAbsolutePath() + "/${commandAPKName}"
}
}
}
}// End of (variant.getAssembleProvider().get().doLast {)
}/// WINBOLL 主机的 APK 发布和源码管理操作结束 ///
}
} // End of (android.applicationVariants.all { variant ->)
}

View File

@ -0,0 +1,211 @@
// WinBoLL Maven
//
def getDefaultVersion(){
//
assert (winbollBuildProps['publishVersion'] != null)
//
return winbollBuildProps['publishVersion']
}
def siteUrl = 'https://winboll.cc/?page=studio/details.php&app=${rootProject.name}' //
def gitUrl = 'https://gitea.winboll.cc/WinBoLL/${rootProject.name}' // git地址
def DefaultGroupId = 'cc.winboll.studio' // groupId
def DefaultVersion = getDefaultVersion() //
def DeveloperId='zhangsken' //
def DeveloperName='ZhanGSKen' //
def DeveloperEMail='zhangsken@188.com' //
def LicenseName='The Apache Software License, Version 2.0'
def LicenseUrl='http://www.apache.org/licenses/LICENSE-2.0.txt'
Properties properties = new Properties()
afterEvaluate {
publishing {
repositories {
if(file("${RootProjectDir}/${winbollFilePath}").exists()) {
properties.load(file("${RootProjectDir}/${winbollFilePath}").newDataInputStream())
def NexusUserName = properties.getProperty("Nexus.name")
def NexusPassword = properties.getProperty("Nexus.password")
// WinBoLL Release
maven{
//
name = "WinBoLLRelease"
url="https://nexus.winboll.cc/repository/maven-releases/"
//
credentials {
username = NexusUserName
password = NexusPassword
}
}
// WinBoLL Snapshot
maven{
//
name = "WinBoLLSnapshot"
url="https://nexus.winboll.cc/repository/maven-snapshots/"
//
credentials {
username = NexusUserName
password = NexusPassword
}
}
}
}
publications {
// Local Maven
//
release(MavenPublication) {
groupId = DefaultGroupId
artifactId = project.name
version = DefaultVersion
//from components.java
// AAR包
afterEvaluate { artifact(tasks.getByName("bundleReleaseAar")) }
// source使
//artifact generateSourcesJar
//aar路径
//artifact "$buildDir/outputs/aar/${project.getName()}-release.aar"
//artifact "$buildDir/outputs/aar/${project.getName()}-debug.aar"
//pom进行的操作
pom.withXml{
Node pomNode = asNode()
pomNode.dependencies.'*'.findAll() {
//
//it.parent().remove(it)
}
}
pom {
name = artifactId
url = siteUrl
licenses {
license { //
name=LicenseName //
url=LicenseUrl //
}
}
developers {
developer {
id=DeveloperId //
name=DeveloperName //
email=DeveloperEMail //
}
}
//
scm {
connection=gitUrl
developerConnection=gitUrl
url=siteUrl
}
}
}
// WinBoLL Maven Release
//
releaseWinBoLL(MavenPublication) {
// 使free和pay两个变体
//from components.free
groupId = DefaultGroupId // groupId
artifactId = project.name //
version = DefaultVersion //
//from components.java
// AAR包
afterEvaluate { artifact(tasks.getByName("bundleReleaseAar")) }
// source使
//artifact generateSourcesJar
//aar路径
//artifact "$buildDir/outputs/aar/${project.getName()}-release.aar"
//artifact "$buildDir/outputs/aar/${project.getName()}-debug.aar"
//pom进行的操作
pom.withXml{
Node pomNode = asNode()
pomNode.dependencies.'*'.findAll() {
//
//it.parent().remove(it)
}
}
pom {
name = artifactId
url = siteUrl
licenses {
license { //
name=LicenseName //
url=LicenseUrl //
}
}
developers {
developer {
id=DeveloperId //
name=DeveloperName //
email=DeveloperEMail //
}
}
//
scm {
connection=gitUrl
developerConnection=gitUrl
url=siteUrl
}
}
} // release
// WinBoLL Maven Snapshot
//
snapshotWinBoLL(MavenPublication) {
// 使free和pay两个变体
//from components.free
groupId = DefaultGroupId // groupId
artifactId = project.name //
version = DefaultVersion + "-SNAPSHOT" //
//from components.java
// AAR包
afterEvaluate { artifact(tasks.getByName("bundleReleaseAar")) }
// source使
//artifact generateSourcesJar
//aar路径
//artifact "$buildDir/outputs/aar/${project.getName()}-release.aar"
//artifact "$buildDir/outputs/aar/${project.getName()}-debug.aar"
//pom进行的操作
pom.withXml{
Node pomNode = asNode()
pomNode.dependencies.'*'.findAll() {
//
//it.parent().remove(it)
}
}
pom {
name = artifactId
url = siteUrl
licenses {
license { //
name=LicenseName //
url=LicenseUrl //
}
}
developers {
developer {
id=DeveloperId //
name=DeveloperName //
email=DeveloperEMail //
}
}
//
scm {
connection=gitUrl
developerConnection=gitUrl
url=siteUrl
}
}
} // snapshot
}
}
}

View File

@ -0,0 +1,50 @@
android {
lintOptions {
// true--lint报告的分析进度
//quiet true
// true--gradle构建
abortOnError false
// true--error
//ignoreWarnings true
// true--/(true)
//absolutePaths true
// true--
checkAllWarnings true
// true--warning当做error
//warningsAsErrors true
//
//disable 'ExpiredTargetSdkVersion','HardcodedText','UnknownNullness','ButtonStyle','GradleDependency','UnusedResources'
//
//enable 'RtlHardcoded','RtlCompat', 'RtlEnabled'
//
//check 'NewApi', 'InlinedApi'
// true--error输出文件不包含源码行号
//noLines true
// true--
showAll true
// 退lint设置()
//lintConfig file("default-lint.xml")
// true--txt格式报告(false)
//textReport true
// 'stdout'
//textOutput 'stdout'
// true--XML格式报告
xmlReport true
// xml报告文档(lint-results.xml)
xmlOutput file("${lintXmlReportFilePath}")
// true--HTML报告()
htmlReport true
// html报告可选路径(lint-results.html )
htmlOutput file("${lintHTMLReportFilePath}")
// true--lint检查
checkReleaseBuilds true
// (使lint目标)
//fatal 'NewApi', 'InlineApi'
//
//error 'Wakelock', 'TextViewEdits'
//
//warning 'ResourceAsColor'
// ()
//ignore 'TypographyQuotes'
}
}

View File

@ -0,0 +1,49 @@
#!/bin/bash
# 应用秘钥创建脚本
# Linux 命令行创建JKS秘钥alias和keyAlias可配置文件名含时间戳
# 可配置参数(按需修改)
ALIAS="WinBoLL.CC_Debug" # 别名与keyAlias一致
STORE_PASS="androiddebugkey"
KEY_PASS="androiddebugkey"
COUNTRY="CN" # 国家代码
# 获取当前时间戳
TIMESTAMP=$(date +%Y%m%d%H%M%S)
FILENAME="${ALIAS}_${TIMESTAMP}.jks"
STORENAME="${ALIAS}_${TIMESTAMP}.keystore"
# 生成JKS文件alias与keyAlias同步
keytool -genkeypair \
-alias "${ALIAS}" \
-keyalg RSA \
-keysize 2048 \
-validity 1 \
-keystore "${FILENAME}" \
-dname "CN=WBFans, OU=Studio, O=WinBoLL, L=Shanwei, ST=Guangdong, C=${COUNTRY}" \
-storepass "${STORE_PASS}" \
-keypass "${KEY_PASS}"
# 写入配置文件
cat <<EOF > ${STORENAME}
keyAlias=${ALIAS}
keyPassword=${KEY_PASS}
storeFile=../appkey.jks
storePassword=${STORE_PASS}
EOF
echo "已生成秘钥:${FILENAME}"
echo "配置已写入 ${STORENAME}keyAlias=${ALIAS}"
# 询问是否复制文件
read -p "是否需要将文件复制为 appkey.jks 和 appkey.keystore(y/n): " CONFIRM
if [[ $CONFIRM =~ ^[Yy]$ ]]; then
# 复制 jks 文件为 appkey.jks
cp -v ${FILENAME} ../appkey.jks
# 复制 keystore 文件为 appkey.keystore
cp -v ${STORENAME} ../appkey.keystore
echo "文件复制完成"
else
echo "已取消文件复制"
fi

136
README.md
View File

@ -1,2 +1,138 @@
# OriginMaster
【OriginMaster】WinBoLL 源生态计划。正如话,我需要一个 Point, 去撬动成个地球。
########
## ☁ ☁ ☁ WinBoLL APP ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁
# ☁ ☁ WinBoLL Studio Android 应用开源项目。☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁
# ☁ ☁ ☁ WinBoLL 网站地址 https://www.winboll.cc/ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁
## WinBoLL 提问
同样是 /sdcard 目录,在开发 Android 应用时,
能否实现手机编译与电脑编译的源码同步。
☁因而 WinBoLL 项目组诞生了。
## WinBoLL 项目组研发计划
致力于把 WinBoLL-APP 应用在手机端 Android 项目开发。
也在探索 https://gitea.winboll.cc/<WinBoLL 项目组>/APP.git 应用于 WinBoLL-APP APK 分发。
更想进阶 https://github.com/<WinBoLL 项目组>/APP.git 应用于 WinBoLL-APP Beta APK 分发。
## WinBoLL-APP 汗下...
#### ☁应用何置如此呢。且观用户云云。
#### ☁ 正当下 ☁ ###
#### ☁ 且容傻家叙说 ☁ WinBoLL-APP 应用场景
### ☁ WinBoLL 设备资源概述
#### ☁ 1. Raid Disk.
概述:这是一个矩阵存储类设备。
优点:该设备具有数据容错存储功能,
数据存储具有特长持久性。
缺点:设备使用能源消耗比较高,
设备存取速度一般。
#### ☁ 2. Data Disk.
概述:这是一个普通硬盘存储设备
优点:该设备独立于操作系统,
数据持久性一般,
存取能源消耗小于 Raid Disk。
缺点:数据存储速度一般,存储能源消耗一般。
#### ☁ 3. SSD Disk.
概述:这是一个 SSD 硬盘存储设备。
优点:存取速度快于 Data Disk 与 Raid Disk
存取能源消耗小于 Data Disk 与 Raid Disk。
缺点:数据持久性一般,
设备位于操作系统内部文件系统。
数据持久性与操作系统挂钩。
#### ☁ 4. WinBoLL 用户资源概述。
1> /home/<用户名> 位于 WinBoLL 操作系统目录下。
2> /rdisk/<用户名> 挂载用户 Raid Disk.
3> /data/<用户名> 挂载用户 Data Disk.
4> /sdcard/<用户名> 挂载用户 SSD Disk.
#### ☁ 5. WinBoLL-APP 用户资源概述。
1> /sdcard 挂载用户手机 SD 存储/storage/emulated/0
### ☁ 稍稍歇 ☁ ###
### ☁ 急急停 ☁ WinBoLL 应用前置条件
☁ WinBoLL 主机建立 1Panel MySQL 应用。
☁ WinBoLL 主机建立 1Panel Gitea 应用。
☁ WinBoLL 主机设置 WinBoLL 应用为非登录状态。
☁ WinBoLL 主机建立 WinBoLL 账户与 WinBoLL 用户组。
☁ WinBoLL 账户 User ID 为: J。
☁ WinBoLL 用户组 Group ID 为: Studio。
☁ WinBoLL 主机 WinBoLL 1Panel Gitea 建立 WinBoLL 工作组。
☁ WinBoLL 主机 WinBoLL 1Panel Gitea 用户项目 APK 编译输出目录为 /sdcard/WinBoLLStudio/<用户名>/APKs/
☁ WinBoLL 项目配置文件示例为 "<WinBoLL 项目根目录>/.winboll/winboll.properties-demo"(WinBoLL 项目已设置)
☁ WinBoLL 项目配置文件为 "<WinBoLL 项目根目录>/.winboll/winboll.properties"
☁ WinBoLL 项目配置文件设定为源码提交时忽略。(WinBoLL 项目已设置)
☁ Gradle 项目配置文件示例为 "<WinBoLL 项目根目录>/.winboll/local.properties-demo"(WinBoLL 项目已设置)
☁ Gradle 项目配置文件为 "<WinBoLL 项目根目录>/local.properties"(WinBoLL 项目已设置)
☁ Gradle 项目配置文件设定为源码提交时忽略。(WinBoLL 项目已设置)
### ☁ 登高处 ☁ WinBoLL 应用需求规划
☁ WinBoLL 主机建立 WinBoLL 客户端用户数据库为 MySQL winbollclient 数据库。
☁ WinBoLL 主机设置 WinBoLL 客户端用户信息存储在 winbollclient 数据库中。
☁ MySQL winbollclient 数据库中
WinBoLL 客户端用户信息设定为:
<用户名, 验证密码, 验证邮箱, 验证手机, 唯一存储令牌Token, 备用验证邮箱>
☁ WinBoLL 项目源码仓库托管在 WinBoLL 1Panel Gitea 目录 /opt/1panel/apps/gitea/gitea/data/git/repositories/studio/app.git中。
☁ WinBoLL 主机提供 WinBoLL 1Panel Gitea 应用的 WinBoLL 项目源码仓库存取功能。Gitea 应用已提供)
☁ WinBoLL 主机提供 WinBoLL Gitea 项目仓库存档功能。Gitea 应用已提供)
☁ 提供 WinBoLL 客户端用户登录功能。Gitea 应用已提供)
### ☁ 看远方 ☁ ###
### ☁ 心忧虑 ☁ WinBoLL-APP 应用前置需求
☁ WinBoLL-APP WinBoLL 项目根目录设定为手机的 /sdcard/WinBoLLStudio/Sources 目录。(需要用户手动建立文件夹)
☁ WinBoLL-APP 具有手机 /sdcard/WinBoLL 目录的存储权限。(需要手机操作系统授权)
☁ WinBoLL-APP WinBoLL 项目仓库源码存储路径为 /sdcard/WinBoLLStudio/Sources/APP.git需要用户手动建立文件夹
☁ WinBoLL-APP 项目 APK 编译输出目录为 /sdcard/WinBoLLStudio/APKs/
☁ WinBoLL-APP 应用签名验证可定制化。WinBoLL 项目已提供)
☁ WinBoLL-APP 与系列衍生 APP 应用共享 cc.winboll.studio 命名空间资源。WinBoLL 项目已提供)
☁ WinBoLL-APP 用户客户端信息存储在命名空间为 WinBoLL APP MySQLLite 应用的 winbollappclient 数据库中。
☁ WinBoLL-APP MySQLLite 应用的 winbollappclient 数据库中,
WinBoLL 用户客户端信息设定为:
<用户名, 唯一存储令牌Token>
### ☁ 云游四方 ☁ ###
### ☁ 呔! ☁ WinBoLL-APP 应用需求规划
☁ 如要使用 WinBoLL Android 项目的 Gradle 编译功能,则需要设置以下两个文件夹。
☁ 1. 则需要建立数据存储目录 /sdcard/WinBoLLStudio/APKs。
WinBoLL 项目源码编译出来的安装包会拷贝一份到 /sdcard/WinBoLLStudio/APKs 目录下。
☁ 2. 则需要建立数据存储目录 /sdcard/AppProjects。
WinBoLL 项目源码编译出来的安装包会拷贝一份并命名 "app.apk" 的安装文件为到 /sdcard/AppProjects 目录下。
### ☁ 吁! ☁ WinBoLL-APP 共享计划前景
☁ WinBoLL-APP 将会实现 https://winboll.cc/api 访问功能。
☁ WinBoLL-APP 将会实现手机端 Android 应用的开发与管理功能。
## ☁ WinBoLL ☁ WinBoLL 主机忧虑
☁ WinBoLL 将会提供 gitea.winboll.cc 域名用户注册登录功能。
☁ WinBoLL 将会提供 WinBoLL-APP 及其衍生应用的 Gitea 仓库管理服务。
☁ WinBoLL 将会提供 winboll.cc 域名 WinBoLL 项目组注册登录功能。
# 本项目要实际运用需要注意以下几个步骤:
# 在项目根目录下:
## ★. 项目模块编译环境设置(必须)settings.gradle-demo 要复制为 settings.gradle并取消相应项目模块的注释。
## ★. 项目 Android SDK 编译环境设置(可选)local.properties-demo 要复制为 local.properties并按需要设置 Android SDK 目录。
## ★. 应用签名密钥 keystore 设置问题。一般调试编译只需用【Termux】cd 进 GenKeyStore 目录执行 $ bash gen_debug_keystore.sh 命令即可完成设置。
## ☆. 应用 WiBoLL 签名密钥配置问题<非必须考虑>。设置时需要 clone 【keystore】模块源码并拷贝模块目录的 appkey.jks 与 appkey.keystore 到项目根目录即可。
## ☆. 类库型模块编译环境设置(可选)winboll.properties-demo 要复制为 winboll.properties并按需要设置 WinBoLL Maven 库登录用户信息。
# ☆类库型项目编译方法
## 先编译类库对应的模块测试项目
### 修改模块测试项目的 build.properties 文件
设置属性 libraryProject=<类库项目模块文件夹名称>
### 再编译测试项目
$ bash .winboll/bashPublishAPKAddTag.sh <应用项目模块文件夹名称>
#### 测试项目编译后,编译器会复制一份 APK 到以下路径:"/sdcard/WinBoLLStudio/APKs/<项目根目录名称>/tag/" 文件夹。
### 最后编译类库项目
$ bash .winboll/bashPublishLIBAddTag.sh <类库项目模块文件夹名称>
#### 类库模块编译命令执行后,编译器会发布到 WinBoLL Nexus Maven 库Maven 库地址可以参阅根项目目录配置 build.gradle 文件。
# ☆应用型项目编译方法
## 直接调用以下命令编译应用型项目
$ bash .winboll/bashPublishAPKAddTag.sh <应用项目模块文件夹名称>
#### 应用模块编译命令执行后,编译器会复制一份 APK 到以下路径:"/sdcard/WinBoLLStudio/APKs/<项目根目录名称>/tag/" 文件夹。

1
aes/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/build

35
aes/README.md Normal file
View File

@ -0,0 +1,35 @@
# AES
#### 介绍
安卓视图元素类库
#### 软件架构
适配安卓应用 [AIDE Pro] 的 Gradle 编译结构。
也适配安卓应用 [AndroidIDE] 的 Gradle 编译结构。
#### Gradle 编译说明
调试版编译命令 gradle assembleBetaDebug
阶段版编译命令 bash .winboll/bashPublishAPKAddTag.sh aes
阶段版类库发布命令 git pull &&bash .winboll/bashPublishLIBAddTag.sh libaes
#### 使用说明
#### 参与贡献
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/)
#### 参考文档

View File

@ -0,0 +1 @@

49
aes/build.gradle Normal file
View File

@ -0,0 +1,49 @@
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 32
buildToolsVersion "32.0.0"
defaultConfig {
applicationId "cc.winboll.studio.aes"
minSdkVersion 24
targetSdkVersion 30
versionCode 1
// versionName
// build.gradle stageCount=0
// Gradle编译环境下合起来的 versionName "${versionName}.0"
versionName "15.9"
if(true) {
versionName = genVersionName("${versionName}")
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
api project(':libaes')
api fileTree(dir: 'libs', include: ['*.jar'])
}

8
aes/build.properties Normal file
View File

@ -0,0 +1,8 @@
#Created by .winboll/winboll_app_build.gradle
#Thu Jun 19 20:42:40 HKT 2025
stageCount=2
libraryProject=libaes
baseVersion=15.9
publishVersion=15.9.1
buildCount=0
baseBetaVersion=15.9.2

17
aes/proguard-rules.pro vendored Normal file
View 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 *;
#}

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" >
<application>
<!-- Put flavor specific code here -->
</application>
</manifest>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Put flavor specific strings here -->
<string name="app_name">AES+</string>
</resources>

View File

@ -0,0 +1,38 @@
<?xml version='1.0' encoding='utf-8'?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="cc.winboll.studio.aes">
<application
android:name=".App"
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/MyAESTheme"
android:requestLegacyExternalStorage="true"
android:supportsRtl="true"
android:networkSecurityConfig="@xml/network_security_config">
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<meta-data
android:name="android.max_aspect"
android:value="4.0"/>
<activity android:name=".AboutActivity"/>
</application>
</manifest>

View File

@ -0,0 +1,93 @@
package cc.winboll.studio.aes;
/**
* @Author ZhanGSKen<zhangsken@188.com>
* @Date 2025/03/24 23:52:29
* @Describe AES应用介绍窗口
*/
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import cc.winboll.studio.libaes.winboll.APPInfo;
import cc.winboll.studio.libaes.winboll.AboutView;
import cc.winboll.studio.libappbase.GlobalApplication;
import cc.winboll.studio.libappbase.winboll.IWinBoLLActivity;
public class AboutActivity extends AppCompatActivity implements IWinBoLLActivity {
public static final String TAG = "AboutActivity";
Context mContext;
Toolbar mToolbar;
@Override
public Activity getActivity() {
return this;
}
@Override
public String getTag() {
return TAG;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mContext = this;
setContentView(R.layout.activity_about);
mToolbar = findViewById(R.id.toolbar);
setSupportActionBar(mToolbar);
mToolbar.setSubtitle(TAG);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
AboutView aboutView = CreateAboutView();
// Activity onCreate 或其他生命周期方法中调用
// LinearLayout layout = new LinearLayout(this);
// layout.setOrientation(LinearLayout.VERTICAL);
// // 创建布局参数宽度和高度
// ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(
// ViewGroup.LayoutParams.MATCH_PARENT,
// ViewGroup.LayoutParams.MATCH_PARENT
// );
// addContentView(aboutView, params);
LinearLayout layout = findViewById(R.id.aboutviewroot_ll);
// 创建布局参数宽度和高度
ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT
);
layout.addView(aboutView, params);
GlobalApplication.getWinBoLLActivityManager().add(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
GlobalApplication.getWinBoLLActivityManager().registeRemove(this);
}
public AboutView CreateAboutView() {
String szBranchName = "aes";
APPInfo appInfo = new APPInfo();
appInfo.setAppName("AES");
appInfo.setAppIcon(cc.winboll.studio.libaes.R.drawable.ic_winboll);
appInfo.setAppDescription("AES Description");
appInfo.setAppGitName("APPBase");
appInfo.setAppGitOwner("Studio");
appInfo.setAppGitAPPBranch(szBranchName);
appInfo.setAppGitAPPSubProjectFolder(szBranchName);
appInfo.setAppHomePage("https://discuz.winboll.cc/forum.php?mod=viewthread&tid=2&fromuid=1");
appInfo.setAppAPKName("AES");
appInfo.setAppAPKFolderName("AES");
//appInfo.setIsAddDebugTools(false);
appInfo.setIsAddDebugTools(BuildConfig.DEBUG);
return new AboutView(mContext, appInfo);
}
}

View File

@ -0,0 +1,31 @@
package cc.winboll.studio.aes;
/**
* @Author ZhanGSKen<zhangsken@188.com>
* @Date 2024/06/13 19:03:58
* @Describe AES应用类
*/
import android.view.Gravity;
import cc.winboll.studio.libappbase.GlobalApplication;
import com.hjq.toast.ToastUtils;
import com.hjq.toast.style.WhiteToastStyle;
public class App extends GlobalApplication {
public static final String TAG = "App";
@Override
public void onCreate() {
super.onCreate();
// 初始化 Toast 框架
ToastUtils.init(this);
// 设置 Toast 布局样式
//ToastUtils.setView(R.layout.view_toast);
ToastUtils.setStyle(new WhiteToastStyle());
ToastUtils.setGravity(Gravity.BOTTOM, 0, 200);
}
}

View File

@ -0,0 +1,197 @@
package cc.winboll.studio.aes;
/**
* @Author ZhanGSKen<zhangsken@188.com>
* @Date 2024/06/13 19:05:52
* @Describe 应用主窗口
*/
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Toast;
import cc.winboll.studio.aes.R;
import cc.winboll.studio.libaes.activitys.DrawerFragmentActivity;
import cc.winboll.studio.libaes.beans.DrawerMenuBean;
import cc.winboll.studio.libaes.dialogs.LocalFileSelectDialog;
import cc.winboll.studio.libaes.dialogs.StoragePathDialog;
import cc.winboll.studio.libaes.unittests.SecondaryLibraryActivity;
import cc.winboll.studio.libaes.unittests.TestAButtonFragment;
import cc.winboll.studio.libaes.unittests.TestASupportToolbarActivity;
import cc.winboll.studio.libaes.unittests.TestAToolbarActivity;
import cc.winboll.studio.libaes.unittests.TestDrawerFragmentActivity;
import cc.winboll.studio.libaes.unittests.TestViewPageFragment;
import cc.winboll.studio.libappbase.LogUtils;
import cc.winboll.studio.libappbase.winboll.IWinBoLLActivity;
import com.a4455jkjh.colorpicker.ColorPickerDialog;
import com.hjq.toast.ToastUtils;
import java.util.ArrayList;
public class MainActivity extends DrawerFragmentActivity implements IWinBoLLActivity {
public static final String TAG = "MainActivity";
TestAButtonFragment mTestAButtonFragment;
TestViewPageFragment mTestViewPageFragment;
@Override
public Activity getActivity() {
return this;
}
@Override
public String getTag() {
return TAG;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (mTestAButtonFragment == null) {
mTestAButtonFragment = new TestAButtonFragment();
addFragment(mTestAButtonFragment);
}
showFragment(mTestAButtonFragment);
//setSubtitle(TAG);
//ToastUtils.show("onCreate");
}
@Override
public void initDrawerMenuItemList(ArrayList<DrawerMenuBean> listDrawerMenu) {
super.initDrawerMenuItemList(listDrawerMenu);
LogUtils.d(TAG, "initDrawerMenuItemList");
//listDrawerMenu.clear();
// 添加抽屉菜单项
listDrawerMenu.add(new DrawerMenuBean(R.drawable.ic_launcher, TestAButtonFragment.TAG));
listDrawerMenu.add(new DrawerMenuBean(R.drawable.ic_launcher, TestViewPageFragment.TAG));
notifyDrawerMenuDataChanged();
}
@Override
public void reinitDrawerMenuItemList(ArrayList<DrawerMenuBean> listDrawerMenu) {
super.reinitDrawerMenuItemList(listDrawerMenu);
LogUtils.d(TAG, "reinitDrawerMenuItemList");
//listDrawerMenu.clear();
// 添加抽屉菜单项
listDrawerMenu.add(new DrawerMenuBean(R.drawable.ic_launcher, TestAButtonFragment.TAG));
listDrawerMenu.add(new DrawerMenuBean(R.drawable.ic_launcher, TestViewPageFragment.TAG));
notifyDrawerMenuDataChanged();
}
@Override
public DrawerFragmentActivity.ActivityType initActivityType() {
return DrawerFragmentActivity.ActivityType.Main;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.toolbar_library, menu);
if(App.isDebuging()) {
getMenuInflater().inflate(cc.winboll.studio.libapputils.R.menu.toolbar_studio_debug, menu);
}
return super.onCreateOptionsMenu(menu);
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
super.onItemClick(parent, view, position, id);
switch (position) {
case 0 : {
if (mTestAButtonFragment == null) {
mTestAButtonFragment = new TestAButtonFragment();
addFragment(mTestAButtonFragment);
}
showFragment(mTestAButtonFragment);
break;
}
case 1 : {
if (mTestViewPageFragment == null) {
mTestViewPageFragment = new TestViewPageFragment();
addFragment(mTestViewPageFragment);
}
showFragment(mTestViewPageFragment);
break;
}
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int nItemId = item.getItemId();
// if (item.getItemId() == R.id.item_log) {
// WinBoLLActivityManager.getInstance(this).startWinBoLLActivity(getApplicationContext(), LogActivity.class);
// } else
if (nItemId == R.id.item_atoast) {
Toast.makeText(getApplication(), "item_testatoast", Toast.LENGTH_SHORT).show();
} else if (nItemId == R.id.item_atoolbar) {
Intent intent = new Intent(this, TestAToolbarActivity.class);
startActivity(intent);
} else if (nItemId == R.id.item_asupporttoolbar) {
Intent intent = new Intent(this, TestASupportToolbarActivity.class);
startActivity(intent);
} else if (nItemId == R.id.item_colordialog) {
ColorPickerDialog dlg = new ColorPickerDialog(this, getResources().getColor(R.color.colorPrimary));
dlg.setOnColorChangedListener(new com.a4455jkjh.colorpicker.view.OnColorChangedListener() {
@Override
public void beforeColorChanged() {
}
@Override
public void onColorChanged(int color) {
}
@Override
public void afterColorChanged() {
}
});
dlg.show();
} else if (nItemId == R.id.item_dialogstoragepath) {
final StoragePathDialog dialog = new StoragePathDialog(this, 0);
dialog.setOnOKClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
dialog.show();
} else if (nItemId == R.id.item_localfileselectdialog) {
final LocalFileSelectDialog dialog = new LocalFileSelectDialog(this);
dialog.setOnOKClickListener(new LocalFileSelectDialog.OKClickListener() {
@Override
public void onOKClick(String sz) {
Toast.makeText(getApplication(), sz, Toast.LENGTH_SHORT).show();
//dialog.dismiss();
}
});
dialog.open();
} else if (nItemId == R.id.item_secondarylibraryactivity) {
Intent intent = new Intent(this, SecondaryLibraryActivity.class);
startActivity(intent);
} else if (nItemId == R.id.item_drawerfragmentactivity) {
Intent intent = new Intent(this, TestDrawerFragmentActivity.class);
startActivity(intent);
}
else if (nItemId == R.id.item_about) {
Intent intent = new Intent(this, AboutActivity.class);
startActivity(intent);
return true;
}
return super.onOptionsItemSelected(item);
}
}

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<cc.winboll.studio.libaes.views.ASupportToolbar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/toolbar"/>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1.0"
android:id="@+id/aboutviewroot_ll"/>
</LinearLayout>

View File

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/item_log"
android:title="LogActivity"/>
<item
android:id="@+id/item_colordialog"
android:title="ColorDialog"/>
<item
android:id="@+id/item_dialogstoragepath"
android:title="StoragePathDialog"/>
<item
android:id="@+id/item_localfileselectdialog"
android:title="LocalFileSelectDialog"/>
<item
android:id="@+id/item_atoolbar"
android:title="Test AToolbar"/>
<item
android:id="@+id/item_asupporttoolbar"
android:title="Test ASupportToolbar"/>
<item
android:id="@+id/item_atoast"
android:title="Test AToast"/>
<item
android:id="@+id/item_secondarylibraryactivity"
android:title="Test SecondaryLibraryActivity"/>
<item
android:id="@+id/item_drawerfragmentactivity"
android:title="Test DrawerFragmentActivity"/>
</menu>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#FF00B322</color>
<color name="colorPrimaryDark">#FF005C12</color>
<color name="colorAccent">#FF8DFFA2</color>
<color name="colorText">#FFFFFB8D</color>
</resources>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">AES</string>
</resources>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="MyAESTheme" parent="AESTheme">
</style>
</resources>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">winboll.cc</domain>
</domain-config>
</network-security-config>

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" >
<application>
<!-- Put flavor specific code here -->
</application>
</manifest>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Put flavor specific strings here -->
</resources>

1
androiddemo/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/build

View File

72
androiddemo/build.gradle Normal file
View File

@ -0,0 +1,72 @@
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 32
buildToolsVersion "32.0.0"
defaultConfig {
applicationId "cc.winboll.studio.androiddemo"
minSdkVersion 24
targetSdkVersion 30
versionCode 1
// versionName
// .winboll/winbollBuildProps.properties stageCount=0
// Gradle编译环境下合起来的 versionName "${versionName}.0"
versionName "15.0"
if(true) {
versionName = genVersionName("${versionName}")
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
api fileTree(dir: 'libs', include: ['*.jar'])
// Android
//api 'com.android.support:appcompat-v7:28.0.0'
api('com.android.support:appcompat-v7:28.0.0'){
//exclude group: "com.android.support", module: "support-vector-drawable"
exclude group: "com.android.support:animated-vector-drawable:28.0.0"
}
// https://mvnrepository.com/artifact/com.android.support/support-compat
api 'com.android.support:support-compat:28.0.0' //
// https://mvnrepository.com/artifact/com.android.support/support-v4
api 'com.android.support:support-v4:28.0.0'
// https://mvnrepository.com/artifact/com.android.support/support-media-compat
api 'com.android.support:support-media-compat:28.0.0'
// https://mvnrepository.com/artifact/com.android.support/support-core-utils
api 'com.android.support:support-core-utils:28.0.0'
// https://mvnrepository.com/artifact/com.android.support/support-core-ui
api 'com.android.support:support-core-ui:28.0.0'
// https://mvnrepository.com/artifact/com.android.support/support-fragment
api 'com.android.support:support-fragment:28.0.0'
// https://mvnrepository.com/artifact/com.android.support/recyclerview-v7
api 'com.android.support:recyclerview-v7:28.0.0'
api 'cc.winboll.studio:libapputils:15.8.2'
api 'cc.winboll.studio:libappbase:15.8.2'
}

View File

@ -0,0 +1,8 @@
#Created by .winboll/winboll_app_build.gradle
#Sun Jun 01 08:02:46 GMT 2025
stageCount=0
libraryProject=
baseVersion=15.0
publishVersion=15.0.0
buildCount=27
baseBetaVersion=15.0.1

21
androiddemo/proguard-rules.pro vendored Normal file
View File

@ -0,0 +1,21 @@
# 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

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" >
<application>
<!-- Put flavor specific code here -->
</application>
</manifest>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Android Demo +</string>
</resources>

View File

@ -0,0 +1,39 @@
<?xml version='1.0' encoding='utf-8'?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="cc.winboll.studio.androiddemo">
<application
tools:replace="android:appComponentFactory"
android:appComponentFactory="android.support.v4.app.CoreComponentFactory"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"
android:resizeableActivity="true"
android:name=".App">
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<meta-data
android:name="android.max_aspect"
android:value="4.0"/>
<activity android:name=".GlobalApplication$CrashActivity"/>
</application>
</manifest>

View File

@ -0,0 +1,334 @@
package cc.winboll.studio.androiddemo;
import android.app.Activity;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.res.Resources;
import android.graphics.Typeface;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.text.TextUtils;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.ViewGroup;
import android.widget.HorizontalScrollView;
import android.widget.ScrollView;
import android.widget.TextView;
import android.widget.Toast;
import cc.winboll.studio.libappbase.GlobalApplication;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.Closeable;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.lang.Thread.UncaughtExceptionHandler;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.concurrent.atomic.AtomicBoolean;
public class App extends GlobalApplication {
private static Handler MAIN_HANDLER = new Handler(Looper.getMainLooper());
@Override
public void onCreate() {
super.onCreate();
//CrashHandler.getInstance().registerGlobal(this);
//CrashHandler.getInstance().registerPart(this);
}
public static void write(InputStream input, OutputStream output) throws IOException {
byte[] buf = new byte[1024 * 8];
int len;
while ((len = input.read(buf)) != -1) {
output.write(buf, 0, len);
}
}
public static void write(File file, byte[] data) throws IOException {
File parent = file.getParentFile();
if (parent != null && !parent.exists()) parent.mkdirs();
ByteArrayInputStream input = new ByteArrayInputStream(data);
FileOutputStream output = new FileOutputStream(file);
try {
write(input, output);
} finally {
closeIO(input, output);
}
}
public static String toString(InputStream input) throws IOException {
ByteArrayOutputStream output = new ByteArrayOutputStream();
write(input, output);
try {
return output.toString("UTF-8");
} finally {
closeIO(input, output);
}
}
public static void closeIO(Closeable... closeables) {
for (Closeable closeable : closeables) {
try {
if (closeable != null) closeable.close();
} catch (IOException ignored) {}
}
}
public static class CrashHandler {
public static final UncaughtExceptionHandler DEFAULT_UNCAUGHT_EXCEPTION_HANDLER = Thread.getDefaultUncaughtExceptionHandler();
private static CrashHandler sInstance;
private PartCrashHandler mPartCrashHandler;
public static CrashHandler getInstance() {
if (sInstance == null) {
sInstance = new CrashHandler();
}
return sInstance;
}
public void registerGlobal(Context context) {
registerGlobal(context, null);
}
public void registerGlobal(Context context, String crashDir) {
Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandlerImpl(context.getApplicationContext(), crashDir));
}
public void unregister() {
Thread.setDefaultUncaughtExceptionHandler(DEFAULT_UNCAUGHT_EXCEPTION_HANDLER);
}
public void registerPart(Context context) {
unregisterPart(context);
mPartCrashHandler = new PartCrashHandler(context.getApplicationContext());
MAIN_HANDLER.postAtFrontOfQueue(mPartCrashHandler);
}
public void unregisterPart(Context context) {
if (mPartCrashHandler != null) {
mPartCrashHandler.isRunning.set(false);
mPartCrashHandler = null;
}
}
private static class PartCrashHandler implements Runnable {
private final Context mContext;
public AtomicBoolean isRunning = new AtomicBoolean(true);
public PartCrashHandler(Context context) {
this.mContext = context;
}
@Override
public void run() {
while (isRunning.get()) {
try {
Looper.loop();
} catch (final Throwable e) {
e.printStackTrace();
if (isRunning.get()) {
MAIN_HANDLER.post(new Runnable(){
@Override
public void run() {
Toast.makeText(mContext, e.toString(), Toast.LENGTH_LONG).show();
}
});
} else {
if (e instanceof RuntimeException) {
throw (RuntimeException)e;
} else {
throw new RuntimeException(e);
}
}
}
}
}
}
private static class UncaughtExceptionHandlerImpl implements UncaughtExceptionHandler {
private static DateFormat DATE_FORMAT = new SimpleDateFormat("yyyy_MM_dd-HH_mm_ss");
private final Context mContext;
private final File mCrashDir;
public UncaughtExceptionHandlerImpl(Context context, String crashDir) {
this.mContext = context;
this.mCrashDir = TextUtils.isEmpty(crashDir) ? new File(mContext.getExternalCacheDir(), "crash") : new File(crashDir);
}
@Override
public void uncaughtException(Thread thread, Throwable throwable) {
try {
String log = buildLog(throwable);
writeLog(log);
try {
Intent intent = new Intent(mContext, CrashActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(Intent.EXTRA_TEXT, log);
mContext.startActivity(intent);
} catch (Throwable e) {
e.printStackTrace();
writeLog(e.toString());
}
throwable.printStackTrace();
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(0);
} catch (Throwable e) {
if (DEFAULT_UNCAUGHT_EXCEPTION_HANDLER != null) DEFAULT_UNCAUGHT_EXCEPTION_HANDLER.uncaughtException(thread, throwable);
}
}
private String buildLog(Throwable throwable) {
String time = DATE_FORMAT.format(new Date());
String versionName = "unknown";
long versionCode = 0;
try {
PackageInfo packageInfo = mContext.getPackageManager().getPackageInfo(mContext.getPackageName(), 0);
versionName = packageInfo.versionName;
versionCode = Build.VERSION.SDK_INT >= 28 ? packageInfo.getLongVersionCode() : packageInfo.versionCode;
} catch (Throwable ignored) {}
LinkedHashMap<String, String> head = new LinkedHashMap<String, String>();
head.put("Time Of Crash", time);
head.put("Device", String.format("%s, %s", Build.MANUFACTURER, Build.MODEL));
head.put("Android Version", String.format("%s (%d)", Build.VERSION.RELEASE, Build.VERSION.SDK_INT));
head.put("App Version", String.format("%s (%d)", versionName, versionCode));
head.put("Kernel", getKernel());
head.put("Support Abis", Build.VERSION.SDK_INT >= 21 && Build.SUPPORTED_ABIS != null ? Arrays.toString(Build.SUPPORTED_ABIS): "unknown");
head.put("Fingerprint", Build.FINGERPRINT);
StringBuilder builder = new StringBuilder();
for (String key : head.keySet()) {
if (builder.length() != 0) builder.append("\n");
builder.append(key);
builder.append(" : ");
builder.append(head.get(key));
}
builder.append("\n\n");
builder.append(Log.getStackTraceString(throwable));
return builder.toString();
}
private void writeLog(String log) {
String time = DATE_FORMAT.format(new Date());
File file = new File(mCrashDir, "crash_" + time + ".txt");
try {
write(file, log.getBytes("UTF-8"));
} catch (Throwable e) {
e.printStackTrace();
}
}
private static String getKernel() {
try {
return App.toString(new FileInputStream("/proc/version")).trim();
} catch (Throwable e) {
return e.getMessage();
}
}
}
}
public static final class CrashActivity extends Activity {
private String mLog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTheme(android.R.style.Theme_DeviceDefault);
setTitle("App Crash");
mLog = getIntent().getStringExtra(Intent.EXTRA_TEXT);
ScrollView contentView = new ScrollView(this);
contentView.setFillViewport(true);
HorizontalScrollView horizontalScrollView = new HorizontalScrollView(this);
TextView textView = new TextView(this);
int padding = dp2px(16);
textView.setPadding(padding, padding, padding, padding);
textView.setText(mLog);
textView.setTextIsSelectable(true);
textView.setTypeface(Typeface.DEFAULT);
textView.setLinksClickable(true);
horizontalScrollView.addView(textView);
contentView.addView(horizontalScrollView, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
setContentView(contentView);
}
private void restart() {
Intent intent = getPackageManager().getLaunchIntentForPackage(getPackageName());
if (intent != null) {
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
finish();
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(0);
}
private static int dp2px(float dpValue) {
final float scale = Resources.getSystem().getDisplayMetrics().density;
return (int) (dpValue * scale + 0.5f);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, android.R.id.copy, 0, android.R.string.copy)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.copy:
ClipboardManager cm = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
cm.setPrimaryClip(ClipData.newPlainText(getPackageName(), mLog));
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onBackPressed() {
restart();
}
}
}

View File

@ -0,0 +1,25 @@
package cc.winboll.studio.androiddemo;
import android.app.Activity;
import android.os.Bundle;
import cc.winboll.studio.libappbase.LogView;
public class MainActivity extends Activity {
LogView mLogView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mLogView = findViewById(R.id.logview);
mLogView.start();
}
@Override
protected void onResume() {
super.onResume();
mLogView.start();
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

View File

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:gravity="center_vertical|center_horizontal"
android:layout_weight="1.0">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Android Demo"
android:textAppearance="?android:attr/textAppearanceLarge"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1.0">
<cc.winboll.studio.libappbase.LogView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Text"
android:id="@+id/logview"/>
</LinearLayout>
</LinearLayout>

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AppTheme" parent="@android:style/Theme.Material.Light.DarkActionBar">
<item name="android:colorPrimary">@color/colorPrimary</item>
<item name="android:colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="android:colorAccent">@color/colorAccent</item>
<item name="android:navigationBarColor">?android:colorPrimary</item>
</style>
</resources>

View 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>

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Android Demo</string>
</resources>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AppTheme" parent="@android:style/Theme.Holo.Light.DarkActionBar">
</style>
</resources>

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" >
<application>
<!-- Put flavor specific code here -->
</application>
</manifest>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Put flavor specific strings here -->
</resources>

1
androidxdemo/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/build

View File

73
androidxdemo/build.gradle Normal file
View File

@ -0,0 +1,73 @@
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 32
buildToolsVersion "32.0.0"
defaultConfig {
applicationId "cc.winboll.studio.androidxdemo"
minSdkVersion 24
targetSdkVersion 30
versionCode 1
// versionName
// .winboll/winbollBuildProps.properties stageCount=0
// Gradle编译环境下合起来的 versionName "${versionName}.0"
versionName "15.0"
if(true) {
versionName = genVersionName("${versionName}")
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
api fileTree(dir: 'libs', include: ['*.jar'])
// 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.github.getActivity:ToastUtils:10.5'
//
api 'com.squareup.okhttp3:okhttp:4.4.1'
// AndroidX
api 'androidx.appcompat:appcompat:1.1.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'
api 'cc.winboll.studio:libaes:15.8.0'
api 'cc.winboll.studio:libapputils:15.8.2'
api 'cc.winboll.studio:libappbase:15.8.2'
}

View File

@ -0,0 +1,8 @@
#Created by .winboll/winboll_app_build.gradle
#Thu Jun 19 12:49:47 GMT 2025
stageCount=0
libraryProject=
baseVersion=15.0
publishVersion=15.0.0
buildCount=26
baseBetaVersion=15.0.1

21
androidxdemo/proguard-rules.pro vendored Normal file
View File

@ -0,0 +1,21 @@
# 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

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" >
<application>
<!-- Put flavor specific code here -->
</application>
</manifest>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">AndroidX Demo +</string>
</resources>

View File

@ -0,0 +1,37 @@
<?xml version='1.0' encoding='utf-8'?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="cc.winboll.studio.androidxdemo">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:roundIcon="@mipmap/ic_launcher_round"
android:label="@string/app_name"
android:theme="@style/MyAppTheme"
android:resizeableActivity="true"
android:name=".App">
<activity
android:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<meta-data
android:name="android.max_aspect"
android:value="4.0"/>
<activity android:name=".GlobalApplication$CrashActivity"/>
</application>
</manifest>

View File

@ -0,0 +1,345 @@
package cc.winboll.studio.androidxdemo;
import android.app.Activity;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.res.Resources;
import android.graphics.Typeface;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.text.TextUtils;
import android.util.Log;
import android.view.Gravity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.ViewGroup;
import android.widget.HorizontalScrollView;
import android.widget.ScrollView;
import android.widget.TextView;
import android.widget.Toast;
import cc.winboll.studio.libappbase.GlobalApplication;
import com.hjq.toast.ToastUtils;
import com.hjq.toast.style.WhiteToastStyle;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.Closeable;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.lang.Thread.UncaughtExceptionHandler;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.concurrent.atomic.AtomicBoolean;
public class App extends GlobalApplication {
private static Handler MAIN_HANDLER = new Handler(Looper.getMainLooper());
@Override
public void onCreate() {
super.onCreate();
// 初始化 Toast 框架
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().registerPart(this);
}
public static void write(InputStream input, OutputStream output) throws IOException {
byte[] buf = new byte[1024 * 8];
int len;
while ((len = input.read(buf)) != -1) {
output.write(buf, 0, len);
}
}
public static void write(File file, byte[] data) throws IOException {
File parent = file.getParentFile();
if (parent != null && !parent.exists()) parent.mkdirs();
ByteArrayInputStream input = new ByteArrayInputStream(data);
FileOutputStream output = new FileOutputStream(file);
try {
write(input, output);
} finally {
closeIO(input, output);
}
}
public static String toString(InputStream input) throws IOException {
ByteArrayOutputStream output = new ByteArrayOutputStream();
write(input, output);
try {
return output.toString("UTF-8");
} finally {
closeIO(input, output);
}
}
public static void closeIO(Closeable... closeables) {
for (Closeable closeable : closeables) {
try {
if (closeable != null) closeable.close();
} catch (IOException ignored) {}
}
}
public static class CrashHandler {
public static final UncaughtExceptionHandler DEFAULT_UNCAUGHT_EXCEPTION_HANDLER = Thread.getDefaultUncaughtExceptionHandler();
private static CrashHandler sInstance;
private PartCrashHandler mPartCrashHandler;
public static CrashHandler getInstance() {
if (sInstance == null) {
sInstance = new CrashHandler();
}
return sInstance;
}
public void registerGlobal(Context context) {
registerGlobal(context, null);
}
public void registerGlobal(Context context, String crashDir) {
Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandlerImpl(context.getApplicationContext(), crashDir));
}
public void unregister() {
Thread.setDefaultUncaughtExceptionHandler(DEFAULT_UNCAUGHT_EXCEPTION_HANDLER);
}
public void registerPart(Context context) {
unregisterPart(context);
mPartCrashHandler = new PartCrashHandler(context.getApplicationContext());
MAIN_HANDLER.postAtFrontOfQueue(mPartCrashHandler);
}
public void unregisterPart(Context context) {
if (mPartCrashHandler != null) {
mPartCrashHandler.isRunning.set(false);
mPartCrashHandler = null;
}
}
private static class PartCrashHandler implements Runnable {
private final Context mContext;
public AtomicBoolean isRunning = new AtomicBoolean(true);
public PartCrashHandler(Context context) {
this.mContext = context;
}
@Override
public void run() {
while (isRunning.get()) {
try {
Looper.loop();
} catch (final Throwable e) {
e.printStackTrace();
if (isRunning.get()) {
MAIN_HANDLER.post(new Runnable(){
@Override
public void run() {
Toast.makeText(mContext, e.toString(), Toast.LENGTH_LONG).show();
}
});
} else {
if (e instanceof RuntimeException) {
throw (RuntimeException)e;
} else {
throw new RuntimeException(e);
}
}
}
}
}
}
private static class UncaughtExceptionHandlerImpl implements UncaughtExceptionHandler {
private static DateFormat DATE_FORMAT = new SimpleDateFormat("yyyy_MM_dd-HH_mm_ss");
private final Context mContext;
private final File mCrashDir;
public UncaughtExceptionHandlerImpl(Context context, String crashDir) {
this.mContext = context;
this.mCrashDir = TextUtils.isEmpty(crashDir) ? new File(mContext.getExternalCacheDir(), "crash") : new File(crashDir);
}
@Override
public void uncaughtException(Thread thread, Throwable throwable) {
try {
String log = buildLog(throwable);
writeLog(log);
try {
Intent intent = new Intent(mContext, CrashActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(Intent.EXTRA_TEXT, log);
mContext.startActivity(intent);
} catch (Throwable e) {
e.printStackTrace();
writeLog(e.toString());
}
throwable.printStackTrace();
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(0);
} catch (Throwable e) {
if (DEFAULT_UNCAUGHT_EXCEPTION_HANDLER != null) DEFAULT_UNCAUGHT_EXCEPTION_HANDLER.uncaughtException(thread, throwable);
}
}
private String buildLog(Throwable throwable) {
String time = DATE_FORMAT.format(new Date());
String versionName = "unknown";
long versionCode = 0;
try {
PackageInfo packageInfo = mContext.getPackageManager().getPackageInfo(mContext.getPackageName(), 0);
versionName = packageInfo.versionName;
versionCode = Build.VERSION.SDK_INT >= 28 ? packageInfo.getLongVersionCode() : packageInfo.versionCode;
} catch (Throwable ignored) {}
LinkedHashMap<String, String> head = new LinkedHashMap<String, String>();
head.put("Time Of Crash", time);
head.put("Device", String.format("%s, %s", Build.MANUFACTURER, Build.MODEL));
head.put("Android Version", String.format("%s (%d)", Build.VERSION.RELEASE, Build.VERSION.SDK_INT));
head.put("App Version", String.format("%s (%d)", versionName, versionCode));
head.put("Kernel", getKernel());
head.put("Support Abis", Build.VERSION.SDK_INT >= 21 && Build.SUPPORTED_ABIS != null ? Arrays.toString(Build.SUPPORTED_ABIS): "unknown");
head.put("Fingerprint", Build.FINGERPRINT);
StringBuilder builder = new StringBuilder();
for (String key : head.keySet()) {
if (builder.length() != 0) builder.append("\n");
builder.append(key);
builder.append(" : ");
builder.append(head.get(key));
}
builder.append("\n\n");
builder.append(Log.getStackTraceString(throwable));
return builder.toString();
}
private void writeLog(String log) {
String time = DATE_FORMAT.format(new Date());
File file = new File(mCrashDir, "crash_" + time + ".txt");
try {
write(file, log.getBytes("UTF-8"));
} catch (Throwable e) {
e.printStackTrace();
}
}
private static String getKernel() {
try {
return App.toString(new FileInputStream("/proc/version")).trim();
} catch (Throwable e) {
return e.getMessage();
}
}
}
}
public static final class CrashActivity extends Activity {
private String mLog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTheme(android.R.style.Theme_DeviceDefault);
setTitle("App Crash");
mLog = getIntent().getStringExtra(Intent.EXTRA_TEXT);
ScrollView contentView = new ScrollView(this);
contentView.setFillViewport(true);
HorizontalScrollView horizontalScrollView = new HorizontalScrollView(this);
TextView textView = new TextView(this);
int padding = dp2px(16);
textView.setPadding(padding, padding, padding, padding);
textView.setText(mLog);
textView.setTextIsSelectable(true);
textView.setTypeface(Typeface.DEFAULT);
textView.setLinksClickable(true);
horizontalScrollView.addView(textView);
contentView.addView(horizontalScrollView, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
setContentView(contentView);
}
private void restart() {
Intent intent = getPackageManager().getLaunchIntentForPackage(getPackageName());
if (intent != null) {
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
finish();
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(0);
}
private static int dp2px(float dpValue) {
final float scale = Resources.getSystem().getDisplayMetrics().density;
return (int) (dpValue * scale + 0.5f);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, android.R.id.copy, 0, android.R.string.copy)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.copy:
ClipboardManager cm = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
cm.setPrimaryClip(ClipData.newPlainText(getPackageName(), mLog));
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onBackPressed() {
restart();
}
}
}

View File

@ -0,0 +1,31 @@
package cc.winboll.studio.androidxdemo;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import cc.winboll.studio.libappbase.LogView;
import com.hjq.toast.ToastUtils;
public class MainActivity extends AppCompatActivity {
LogView mLogView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar=(Toolbar)findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
mLogView = findViewById(R.id.logview);
ToastUtils.show("onCreate");
}
@Override
protected void onResume() {
super.onResume();
mLogView.start();
}
}

View File

@ -0,0 +1,34 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="108dp"
android:height="108dp"
android:viewportHeight="108"
android:viewportWidth="108">
<path
android:fillType="evenOdd"
android:pathData="M32,64C32,64 38.39,52.99 44.13,50.95C51.37,48.37 70.14,49.57 70.14,49.57L108.26,87.69L108,109.01L75.97,107.97L32,64Z"
android:strokeColor="#00000000"
android:strokeWidth="1">
<aapt:attr name="android:fillColor">
<gradient
android:endX="78.5885"
android:endY="90.9159"
android:startX="48.7653"
android:startY="61.0927"
android:type="linear">
<item
android:color="#44000000"
android:offset="0.0" />
<item
android:color="#00000000"
android:offset="1.0" />
</gradient>
</aapt:attr>
</path>
<path
android:fillColor="#FFFFFF"
android:fillType="nonZero"
android:pathData="M66.94,46.02L66.94,46.02C72.44,50.07 76,56.61 76,64L32,64C32,56.61 35.56,50.11 40.98,46.06L36.18,41.19C35.45,40.45 35.45,39.3 36.18,38.56C36.91,37.81 38.05,37.81 38.78,38.56L44.25,44.05C47.18,42.57 50.48,41.71 54,41.71C57.48,41.71 60.78,42.57 63.68,44.05L69.11,38.56C69.84,37.81 70.98,37.81 71.71,38.56C72.44,39.3 72.44,40.45 71.71,41.19L66.94,46.02ZM62.94,56.92C64.08,56.92 65,56.01 65,54.88C65,53.76 64.08,52.85 62.94,52.85C61.8,52.85 60.88,53.76 60.88,54.88C60.88,56.01 61.8,56.92 62.94,56.92ZM45.06,56.92C46.2,56.92 47.13,56.01 47.13,54.88C47.13,53.76 46.2,52.85 45.06,52.85C43.92,52.85 43,53.76 43,54.88C43,56.01 43.92,56.92 45.06,56.92Z"
android:strokeColor="#00000000"
android:strokeWidth="1" />
</vector>

View File

@ -0,0 +1,170 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportHeight="108"
android:viewportWidth="108">
<path
android:fillColor="#26A69A"
android:pathData="M0,0h108v108h-108z" />
<path
android:fillColor="#00000000"
android:pathData="M9,0L9,108"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M19,0L19,108"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M29,0L29,108"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M39,0L39,108"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M49,0L49,108"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M59,0L59,108"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M69,0L69,108"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M79,0L79,108"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M89,0L89,108"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M99,0L99,108"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M0,9L108,9"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M0,19L108,19"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M0,29L108,29"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M0,39L108,39"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M0,49L108,49"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M0,59L108,59"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M0,69L108,69"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M0,79L108,79"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M0,89L108,89"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M0,99L108,99"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M19,29L89,29"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M19,39L89,39"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M19,49L89,49"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M19,59L89,59"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M19,69L89,69"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M19,79L89,79"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M29,19L29,89"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M39,19L39,89"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M49,19L49,89"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M59,19L59,89"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M69,19L69,89"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
<path
android:fillColor="#00000000"
android:pathData="M79,19L79,89"
android:strokeColor="#33FFFFFF"
android:strokeWidth="0.8" />
</vector>

View File

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>
</com.google.android.material.appbar.AppBarLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1.0"
android:gravity="center_vertical|center_horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="AndroidX Demo"
android:textAppearance="?android:attr/textAppearanceLarge"/>
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1.0">
<cc.winboll.studio.libappbase.LogView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/logview"/>
</LinearLayout>
</LinearLayout>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View 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>

View File

@ -0,0 +1,4 @@
<resources>
<string name="app_name">AndroidX Demo</string>
</resources>

View 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>

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" >
<application>
<!-- Put flavor specific code here -->
</application>
</manifest>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Put flavor specific strings here -->
</resources>

1
appbase/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/build

View File

@ -0,0 +1 @@

50
appbase/build.gradle Normal file
View File

@ -0,0 +1,50 @@
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 32
buildToolsVersion "32.0.0"
defaultConfig {
applicationId "cc.winboll.studio.appbase"
minSdkVersion 24
targetSdkVersion 30
versionCode 1
// versionName
// .winboll/winbollBuildProps.properties stageCount=0
// Gradle编译环境下合起来的 versionName "${versionName}.0"
versionName "15.8"
if(true) {
versionName = genVersionName("${versionName}")
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
api project(':libappbase')
api fileTree(dir: 'libs', include: ['*.jar'])
}

8
appbase/build.properties Normal file
View File

@ -0,0 +1,8 @@
#Created by .winboll/winboll_app_build.gradle
#Mon Jun 09 09:38:19 HKT 2025
stageCount=9
libraryProject=libappbase
baseVersion=15.8
publishVersion=15.8.8
buildCount=0
baseBetaVersion=15.8.9

17
appbase/proguard-rules.pro vendored Normal file
View 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 *;
#}

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" >
<application>
<!-- Put flavor specific code here -->
</application>
</manifest>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">AppBase+</string>
</resources>

View File

@ -0,0 +1,131 @@
<?xml version='1.0' encoding='utf-8'?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="cc.winboll.studio.appbase">
<application
android:name=".App"
android:icon="@drawable/ic_miapp"
android:label="@string/app_name"
android:theme="@style/MyAPPBaseTheme"
android:resizeableActivity="true"
android:process=":App"
android:networkSecurityConfig="@xml/network_security_config">
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:exported="true"
android:resizeableActivity="true"
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
<action android:name="android.service.quicksettings.action.QS_TILE_PREFERENCES"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
<activity
android:name=".activities.NewActivity"
android:label="NewActivity"
android:exported="true"
android:resizeableActivity="true"
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"/>
<activity
android:name=".activities.New2Activity"
android:label="New2Activity"
android:exported="true"
android:resizeableActivity="true"
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"/>
<service
android:name=".MyTileService"
android:exported="true"
android:label="@string/tileservice_name"
android:icon="@drawable/ic_launcher"
android:permission="android.permission.BIND_QUICK_SETTINGS_TILE">
<intent-filter>
<action android:name="android.service.quicksettings.action.QS_TILE"/>
</intent-filter>
</service>
<service
android:name=".services.MainService"
android:exported="true"/>
<service
android:name="cc.winboll.studio.appbase.services.TestDemoBindService"
android:exported="true"/>
<service
android:name="cc.winboll.studio.appbase.services.TestDemoService"
android:exported="true"/>
<service android:name=".services.AssistantService"/>
<receiver
android:name="cc.winboll.studio.appbase.receivers.MainReceiver"
android:exported="true">
<intent-filter>
<action android:name="cc.winboll.studio.appbase.receivers.MainReceiver"/>
</intent-filter>
</receiver>
<receiver
android:name=".widgets.APPNewsWidget"
android:exported="true">
<intent-filter>
<action android:name="cc.winboll.studio.appbase.widgets.APPNewsWidget.ACTION_WAKEUP_SERVICE"/>
<action android:name="cc.winboll.studio.appbase.widgets.APPNewsWidget.ACTION_RELOAD_REPORT"/>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/widget_provider_info_sos"/>
</receiver>
<receiver
android:name=".receivers.APPNewsWidgetClickListener"
android:exported="true">
<intent-filter>
<action android:name="cc.winboll.studio.appbase.receivers.APPNewsWidgetClickListener.ACTION_PRE"/>
<action android:name="cc.winboll.studio.appbase.receivers.APPNewsWidgetClickListener.ACTION_NEXT"/>
</intent-filter>
</receiver>
<meta-data
android:name="android.max_aspect"
android:value="4.0"/>
</application>
</manifest>

View File

@ -0,0 +1,27 @@
package cc.winboll.studio.appbase;
/**
* @Author ZhanGSKen<zhangsken@188.com>
* @Date 2025/01/05 09:54:42
* @Describe APPbase 应用类
*/
import cc.winboll.studio.libappbase.GlobalApplication;
import android.content.IntentFilter;
import cc.winboll.studio.libappbase.sos.SOSCenterServiceReceiver;
import cc.winboll.studio.libappbase.sos.SOS;
public class App extends GlobalApplication {
public static final String TAG = "App";
SOSCenterServiceReceiver mSOSCenterServiceReceiver;
@Override
public void onCreate() {
super.onCreate();
mSOSCenterServiceReceiver = new SOSCenterServiceReceiver();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(SOS.ACTION_SOS);
registerReceiver(mSOSCenterServiceReceiver, intentFilter);
}
}

View File

@ -0,0 +1,183 @@
package cc.winboll.studio.appbase;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.CheckBox;
import android.widget.Toolbar;
import cc.winboll.studio.appbase.R;
import cc.winboll.studio.appbase.activities.NewActivity;
import cc.winboll.studio.appbase.activities.WinBoLLActivity;
import cc.winboll.studio.appbase.services.MainService;
import cc.winboll.studio.appbase.services.TestDemoBindService;
import cc.winboll.studio.appbase.services.TestDemoService;
import cc.winboll.studio.libappbase.CrashHandler;
import cc.winboll.studio.libappbase.GlobalApplication;
import cc.winboll.studio.libappbase.GlobalCrashActivity;
import cc.winboll.studio.libappbase.LogUtils;
import cc.winboll.studio.libappbase.LogView;
import cc.winboll.studio.libappbase.sos.SOS;
import cc.winboll.studio.libappbase.utils.ToastUtils;
import cc.winboll.studio.libappbase.widgets.StatusWidget;
import cc.winboll.studio.libappbase.winboll.IWinBoLLActivity;
public class MainActivity extends WinBoLLActivity implements IWinBoLLActivity {
public static final String TAG = "MainActivity";
@Override
public Activity getActivity() {
return this;
}
@Override
public String getTag() {
return TAG;
}
Toolbar mToolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ToastUtils.show("onCreate");
setContentView(R.layout.activity_main);
mToolbar = findViewById(R.id.toolbar);
setActionBar(mToolbar);
CheckBox cbIsDebugMode = findViewById(R.id.activitymainCheckBox1);
cbIsDebugMode.setChecked(GlobalApplication.isDebuging());
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.toolbar_main, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(item.getItemId() == R.id.item_yun) {
GlobalApplication.getWinBoLLActivityManager().startWinBoLLActivity(this, cc.winboll.studio.libappbase.activities.YunActivity.class);
} else if(item.getItemId() == R.id.item_logon) {
GlobalApplication.getWinBoLLActivityManager().startWinBoLLActivity(this, cc.winboll.studio.libappbase.activities.LogonActivity.class);
}
// 在switch语句中处理每个ID并在处理完后返回true未处理的情况返回false
return super.onOptionsItemSelected(item);
}
@Override
protected void onDestroy() {
super.onDestroy();
Intent intentAPPWidget = new Intent(this, StatusWidget.class);
intentAPPWidget.setAction(StatusWidget.ACTION_STATUS_UPDATE);
sendBroadcast(intentAPPWidget);
}
public void onSwitchDebugMode(View view) {
boolean isDebuging = ((CheckBox)view).isChecked();
GlobalApplication.setIsDebuging(isDebuging);
GlobalApplication.saveDebugStatus();
}
public void onPreviewGlobalCrashActivity(View view) {
Intent intent = new Intent(this, GlobalCrashActivity.class);
intent.putExtra(CrashHandler.EXTRA_CRASH_INFO, "Demo log...");
startActivity(intent);
}
public void onStartCenter(View view) {
MainService.startMainService(this);
}
public void onStopCenter(View view) {
MainService.stopMainService(this);
}
public void onTestStopMainServiceWithoutSettingEnable(View view) {
LogUtils.d(TAG, "onTestStopMainServiceWithoutSettingEnable");
stopService(new Intent(this, MainService.class));
}
public void onTestUseComponentStartService(View view) {
LogUtils.d(TAG, "onTestUseComponentStartService");
// 目标服务的包名和类名
String packageName = this.getPackageName();
String serviceClassName = TestDemoService.class.getName();
// 构建Intent
Intent intentService = new Intent();
intentService.setComponent(new ComponentName(packageName, serviceClassName));
startService(intentService);
}
public void onTestDemoServiceSOS(View view) {
Intent intent = new Intent(this, TestDemoService.class);
stopService(intent);
if (App.isDebuging()) {
SOS.sosToAppBaseBeta(this, TestDemoService.class.getName());
} else {
SOS.sosToAppBase(this, TestDemoService.class.getName());
}
}
public void onSartTestDemoService(View view) {
Intent intent = new Intent(this, TestDemoService.class);
intent.setAction(TestDemoService.ACTION_ENABLE);
startService(intent);
}
public void onStopTestDemoService(View view) {
Intent intent = new Intent(this, TestDemoService.class);
intent.setAction(TestDemoService.ACTION_DISABLE);
startService(intent);
Intent intentStop = new Intent(this, TestDemoService.class);
stopService(intentStop);
}
public void onStopTestDemoServiceNoSettings(View view) {
Intent intent = new Intent(this, TestDemoService.class);
stopService(intent);
}
public void onSartTestDemoBindService(View view) {
Intent intent = new Intent(this, TestDemoBindService.class);
intent.setAction(TestDemoBindService.ACTION_ENABLE);
startService(intent);
}
public void onStopTestDemoBindService(View view) {
Intent intent = new Intent(this, TestDemoBindService.class);
intent.setAction(TestDemoBindService.ACTION_DISABLE);
startService(intent);
Intent intentStop = new Intent(this, TestDemoBindService.class);
stopService(intentStop);
}
public void onStopTestDemoBindServiceNoSettings(View view) {
Intent intent = new Intent(this, TestDemoBindService.class);
stopService(intent);
}
public void onTestOpenNewActivity(View view) {
GlobalApplication.getWinBoLLActivityManager().startWinBoLLActivity(this, NewActivity.class);
}
@Override
protected void onResume() {
super.onResume();
}
}

View File

@ -0,0 +1,79 @@
package cc.winboll.studio.appbase;
/**
* @Author ZhanGSKen<zhangsken@188.com>
* @Date 2025/02/13 19:30:10
*/
import android.content.Context;
import android.service.quicksettings.Tile;
import android.service.quicksettings.TileService;
import cc.winboll.studio.appbase.models.MainServiceBean;
import cc.winboll.studio.appbase.services.MainService;
public class MyTileService extends TileService {
public static final String TAG = "MyTileService";
volatile static MyTileService _MyTileService;
@Override
public void onStartListening() {
super.onStartListening();
_MyTileService = this;
Tile tile = getQsTile();
MainServiceBean bean = MainServiceBean.loadBean(this, MainServiceBean.class);
if (bean != null && bean.isEnable()) {
//MainService.startMainService(context);
tile.setState(Tile.STATE_ACTIVE);
tile.setIcon(android.graphics.drawable.Icon.createWithResource(this, R.drawable.ic_cloud));
} else {
//MainService.stopMainService(context);
tile.setState(Tile.STATE_INACTIVE);
tile.setIcon(android.graphics.drawable.Icon.createWithResource(this, R.drawable.ic_cloud_outline));
}
tile.updateTile();
// Tile tile = getQsTile();
// tile.setState(Tile.STATE_INACTIVE);
// tile.setLabel(getString(R.string.tileservice_name));
// tile.setIcon(android.graphics.drawable.Icon.createWithResource(this, R.drawable.ic_cloud_outline));
// tile.updateTile();
}
@Override
public void onClick() {
super.onClick();
Tile tile = getQsTile();
MainServiceBean bean = MainServiceBean.loadBean(this, MainServiceBean.class);
if (bean == null) {
bean = new MainServiceBean();
}
if (tile.getState() == Tile.STATE_ACTIVE) {
bean.setIsEnable(false);
MainServiceBean.saveBean(this, bean);
MainService.stopMainService(this);
} else if (tile.getState() == Tile.STATE_INACTIVE) {
bean.setIsEnable(true);
MainServiceBean.saveBean(this, bean);
MainService.startMainService(this);
}
updateServiceIconStatus(this);
}
public static void updateServiceIconStatus(Context context) {
if (_MyTileService == null) {
return;
}
Tile tile = _MyTileService.getQsTile();
MainServiceBean bean = MainServiceBean.loadBean(context, MainServiceBean.class);
if (bean != null && bean.isEnable()) {
tile.setState(Tile.STATE_ACTIVE);
tile.setIcon(android.graphics.drawable.Icon.createWithResource(context, R.drawable.ic_cloud));
} else {
tile.setState(Tile.STATE_INACTIVE);
tile.setIcon(android.graphics.drawable.Icon.createWithResource(context, R.drawable.ic_cloud_outline));
}
tile.updateTile();
}
}

Some files were not shown because too many files have changed in this diff Show More