Compare commits

...

837 Commits

Author SHA1 Message Date
945eadb617 <mymessagemanager>APK 15.3.1 release Publish. 2025-07-03 13:50:15 +08:00
c5bffc5eef <mymessagemanager>APK 15.3.0 release Publish. 2025-07-03 13:47:44 +08:00
88597fe407 介于UI界面有调整,版本号升级以区分。 2025-07-03 13:28:17 +08:00
53f985533a Merge branch 'mymessagemanager' into appbase 2025-07-03 13:00:51 +08:00
a3950f13ad 应用介绍页链接更新 2025-07-03 12:56:57 +08:00
c878e9dc02 菜单功能BugFix 2025-07-03 12:53:33 +08:00
f2f7cab330 应用菜单排列调整 2025-07-03 12:38:09 +08:00
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
ZhanGSKen
77bdf886e9
Initial commit 2025-05-08 17:43:51 +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
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
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
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
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
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
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
888e2c7a4d Merge remote-tracking branch 'origin/appbase' into apputils 2025-03-28 15:51:48 +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
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
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
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
83a061856a 更新类库,设置适配安卓版本和应用版本号。 2025-03-24 13:47:31 +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
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
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
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
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
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
6ccbaf8c32 更新类库 2025-03-15 15:21:41 +08:00
ZhanGSKen
a2e963b53e Merge branch 'appbase' into apputils 2025-03-15 12:57:46 +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
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
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
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
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
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
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
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
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
35835d746e 更新类库,应用崩溃报告风格化设置。 2025-02-12 15:21:27 +08:00
ZhanGSKen
5f3d03ba7d 更新类库 2025-02-09 15:14:33 +08:00
ZhanGSKen
1d372ff9ae 更新类库 2025-02-09 13:13:35 +08:00
ZhanGSKen
4a1e398755 更新类库 2025-02-09 11:43:53 +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
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
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
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
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
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
834 changed files with 13673 additions and 47806 deletions

6
.gitmodules vendored
View File

@ -1,6 +1,6 @@
[submodule "winboll-x"]
path = winboll-x
url = https://gitea.winboll.cc/Studio/WinBollX.git
[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

View File

@ -1,4 +1,4 @@
## WinBoll 主机编译事项提醒
## WinBoLL 主机编译事项提醒
## 类库类型源码发布
# 类库发布使用以下面命令

View File

@ -1,3 +0,0 @@
#!/bin/usr/bash
## Change Back To Beta KeyStore in keystore module.
cd keystore;git reset --hard f5bc75ff45fcb8894b5bd3f49b91bdd8fe3c317e;cd ..

View File

@ -1,3 +0,0 @@
#!/bin/usr/bash
## Change Back To StageMG KeyStore in keystore module.
cd keystore;git reset --hard d22519b11253f85f495400b01b6373e9657defb4;cd ..

View File

@ -37,7 +37,7 @@ fi
# 使用grep找到包含"publishVersion="的那一行然后用awk提取其后的值
PUBLISH_VERSION=$(grep -o "publishVersion=.*" $1/build.properties | awk -F '=' '{print $2}')
echo "< $1/build.properties publishVersion : ${PUBLISH_VERSION} >"
## 设新的 WinBoll 标签
## 设新的 WinBoLL 标签
# 脚本调试时使用
#tag="v7.6.4-test1"
# 正式设置标签时使用

View File

@ -38,24 +38,24 @@ function askAddWorkflowsTag {
fi
}
function addWinBollTag {
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 标签
## 设新的 WinBoLL 标签
# 脚本调试时使用
#tag="projectname-v7.6.4-test1"
# 正式设置标签时使用
tag=$1"-v"${PUBLISH_VERSION}
echo "< WinBoll Tag To: $tag >";
# 检查是否已经添加了 WinBoll Tag
echo "< WinBoLL Tag To: $tag >";
# 检查是否已经添加了 WinBoLL Tag
if [ "$(git tag -l ${tag})" == "${tag}" ]; then
echo -e "< WinBoll Tag ${tag} exist! >"
return 1 # WinBoll标签重复
echo -e "< WinBoLL Tag ${tag} exist! >"
return 1 # WinBoLL标签重复
fi
# 添加WinBoll标签
# 添加WinBoLL标签
git tag -a ${tag} -F $1/app_update_description.txt
return 0
}
@ -113,42 +113,42 @@ if [[ $? -eq 0 ]]; then
# 如果Git已经提交了所有代码就执行标签和应用发布操作
# 预先询问是否添加工作流标签
echo "Add Github Workflows Tag? (yes/No)"
result=$(askAddWorkflowsTag)
nAskAddWorkflowsTag=$?
echo $result
#echo "Add Github Workflows Tag? (yes/No)"
#result=$(askAddWorkflowsTag)
#nAskAddWorkflowsTag=$?
#echo $result
# 发布应用
echo "Publishing WinBoll APK ..."
echo "Publishing WinBoLL APK ..."
# 脚本调试时使用
#bash gradlew :$1:assembleBetaDebug
# 正式发布
bash gradlew :$1:assembleStageRelease
echo "Publishing WinBoll APK OK."
echo "Publishing WinBoLL APK OK."
# 添加 WinBoll 标签
result=$(addWinBollTag $1)
# 添加 WinBoLL 标签
result=$(addWinBoLLTag $1)
echo $result
if [[ $? -eq 0 ]]; then
echo $result
# WinBoll 标签添加成功
# WinBoLL 标签添加成功
else
echo -e "${0}: addWinBollTag $1\n${result}\nAdd WinBoll tag cancel."
exit 1 # addWinBollTag 异常
echo -e "${0}: addWinBoLLTag $1\n${result}\nAdd WinBoLL tag cancel."
exit 1 # addWinBoLLTag 异常
fi
# 添加 GitHub 工作流标签
if [[ $nAskAddWorkflowsTag -eq 1 ]]; then
#if [[ $nAskAddWorkflowsTag -eq 1 ]]; then
# 如果用户选择添加工作流标签
result=$(addWorkflowsTag $1)
if [[ $? -eq 0 ]]; then
echo $result
#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
#else
#echo -e "${0}: addWorkflowsTag $1\n${result}\nAdd workflows tag cancel."
#exit 1 # addWorkflowsTag 异常
#fi
#fi
## 清理更新描述文件内容
echo "" > $1/app_update_description.txt

View File

@ -38,24 +38,24 @@ function askAddWorkflowsTag {
fi
}
function addWinBollTag {
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 标签
## 设新的 WinBoLL 标签
# 脚本调试时使用
#tag="v7.6.4-test1"
# 正式调试版设置标签时使用
tag=$1"-v"${PUBLISH_VERSION}"-debug"
echo "< WinBoll Tag To: $tag >";
# 检查是否已经添加了 WinBoll Tag
echo "< WinBoLL Tag To: $tag >";
# 检查是否已经添加了 WinBoLL Tag
if [ "$(git tag -l ${tag})" == "${tag}" ]; then
echo -e "< WinBoll Tag ${tag} exist! >"
return 1 # WinBoll标签重复
echo -e "< WinBoLL Tag ${tag} exist! >"
return 1 # WinBoLL标签重复
fi
# 添加WinBoll标签
# 添加WinBoLL标签
git tag -a ${tag} -F $1/app_update_description.txt
return 0
}
@ -119,22 +119,22 @@ if [[ $? -eq 0 ]]; then
echo $result
# 发布应用
echo "Publishing WinBoll Debug APK ..."
echo "Publishing WinBoLL Debug APK ..."
# 脚本调试时使用
#bash gradlew :$1:assembleBetaDebug
# 正式发布调试版
bash gradlew :$1:assembleStageDebug
echo "Publishing WinBoll Debug APK OK."
echo "Publishing WinBoLL Debug APK OK."
# 添加 WinBoll 标签
result=$(addWinBollTag $1)
# 添加 WinBoLL 标签
result=$(addWinBoLLTag $1)
echo $result
if [[ $? -eq 0 ]]; then
echo $result
# WinBoll 标签添加成功
# WinBoLL 标签添加成功
else
echo -e "${0}: addWinBollTag $1\n${result}\nAdd WinBoll tag cancel."
exit 1 # addWinBollTag 异常
echo -e "${0}: addWinBoLLTag $1\n${result}\nAdd WinBoLL tag cancel."
exit 1 # addWinBoLLTag 异常
fi
# 添加 GitHub 工作流标签

View File

@ -8,7 +8,7 @@ if [ -z "$1" ]; then
fi
## 正式发布使用
git pull && bash gradlew :$1:publishReleasePublicationToWinBollReleaseRepository && bash .winboll/bashCommitLibReleaseBuildFlagInfo.sh $1
git pull && bash gradlew :$1:publishReleasePublicationToWinBoLLReleaseRepository && bash .winboll/bashCommitLibReleaseBuildFlagInfo.sh $1
## 调试使用
#bash gradlew :$1:publishSnapshotWinBollPublicationToWinBollSnapshotRepository && bash .winboll/bashCommitLibReleaseBuildFlagInfo.sh $1
#bash gradlew :$1:publishSnapshotWinBoLLPublicationToWinBoLLSnapshotRepository && bash .winboll/bashCommitLibReleaseBuildFlagInfo.sh $1

View File

@ -1,4 +1,4 @@
// WinBoll
// WinBoLL
//
android {
@ -31,18 +31,18 @@ android {
}
}
flavorDimensions "WinBollApp"
flavorDimensions "WinBoLLApp"
productFlavors {
beta {
//
assert (winbollBuildProps['buildCount'] != null)
dimension "WinBollApp"
dimension "WinBoLLApp"
applicationIdSuffix ".beta"
LocalDateTime localDateTimeNow = LocalDateTime.now(ZoneId.of("Asia/Shanghai"));
versionNameSuffix "-beta" + winbollBuildProps['buildCount'] + "_" + localDateTimeNow.format('mmss')
}
stage {
dimension "WinBollApp"
dimension "WinBoLLApp"
}
}
@ -61,7 +61,7 @@ android {
}
//
// WinBoll
// WinBoLL
// 1. Stage Release
// 2. Beta Debug
//
@ -74,13 +74,13 @@ android {
//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();
// 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.'
// 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 {
@ -91,15 +91,15 @@ android {
//
variant.getAssembleProvider().get().doLast {
variant.outputs.forEach{ file->
// WinBoll
// 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}")
//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()
println "Output Folder Created.(WinBoLLStudio) : " + outBuildBckDir.getAbsolutePath()
}
if(outBuildBckDir.exists()) {
copy{
@ -108,7 +108,7 @@ android {
rename {
String fileName -> "${outputFileName}"
}
println "Output APK (WinBollStudio): " + outBuildBckDir.getAbsolutePath() + "/${outputFileName}"
println "Output APK (WinBoLLStudio): " + outBuildBckDir.getAbsolutePath() + "/${outputFileName}"
}
//
assert (winbollBuildProps['buildCount'] != null)
@ -137,7 +137,7 @@ android {
}
}
// WinBoll
// WinBoLL
//
if((variant.flavorName == "stage"&&variant.buildType.name == "debug")
|| (variant.flavorName == "stage"&&variant.buildType.name == "release")){
@ -151,8 +151,8 @@ android {
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/")
//File outTagDir = new File(fWinBoLLStudioDir, "/${rootProject.name}/tag/")
File outTagDir = new File(fWinBoLLStudioDir, "/" + project.rootDir.name + "/tag/")
//
if(!outTagDir.exists()) {
outTagDir.mkdirs();

View File

@ -1,4 +1,4 @@
// WinBoll Maven
// WinBoLL Maven
//
def getDefaultVersion(){
@ -9,12 +9,12 @@ def getDefaultVersion(){
}
def siteUrl = 'https://winboll.cc/?page=studio/details.php&app=${rootProject.name}' //
def gitUrl = 'https://gitea.winboll.cc/WinBoll/${rootProject.name}' // git地址
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@QQ.COM' //
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'
@ -27,10 +27,10 @@ afterEvaluate {
properties.load(file("${RootProjectDir}/${winbollFilePath}").newDataInputStream())
def NexusUserName = properties.getProperty("Nexus.name")
def NexusPassword = properties.getProperty("Nexus.password")
// WinBoll Release
// WinBoLL Release
maven{
//
name = "WinBollRelease"
name = "WinBoLLRelease"
url="https://nexus.winboll.cc/repository/maven-releases/"
//
credentials {
@ -38,10 +38,10 @@ afterEvaluate {
password = NexusPassword
}
}
// WinBoll Snapshot
// WinBoLL Snapshot
maven{
//
name = "WinBollSnapshot"
name = "WinBoLLSnapshot"
url="https://nexus.winboll.cc/repository/maven-snapshots/"
//
credentials {
@ -101,9 +101,9 @@ afterEvaluate {
}
}
// WinBoll Maven Release
// WinBoLL Maven Release
//
releaseWinBoll(MavenPublication) {
releaseWinBoLL(MavenPublication) {
// 使free和pay两个变体
//from components.free
@ -154,9 +154,9 @@ afterEvaluate {
} // release
// WinBoll Maven Snapshot
// WinBoLL Maven Snapshot
//
snapshotWinBoll(MavenPublication) {
snapshotWinBoLL(MavenPublication) {
// 使free和pay两个变体
//from components.free

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

210
LICENSE
View File

@ -1,73 +1,201 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or Derivative Works a copy of this License; and
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices stating that You changed the files; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright 2024 ZhanGSKen
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

137
README.md
View File

@ -1,23 +1,27 @@
# ☁ ☁ ☁ WinBoll APP ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁
# ☁ ☁ 这是 WinBoll 系列 APP 汇总项目。☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁
# ☁ ☁ ☁ WinBoll 网站地址 https://www.winboll.cc/studio/app/ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁
# OriginMaster
【OriginMaster】WinBoLL 源生态计划。正如话,我需要一个 Point, 去撬动成个地球。
## WinBoll 提问
########
## ☁ ☁ ☁ WinBoLL APP ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁
# ☁ ☁ WinBoLL Studio Android 应用开源项目。☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁
# ☁ ☁ ☁ WinBoLL 网站地址 https://www.winboll.cc/ ☁ ☁ ☁ ☁ ☁ ☁ ☁ ☁
## WinBoLL 提问
同样是 /sdcard 目录,在开发 Android 应用时,
能否实现手机编译与电脑编译的源码同步。
☁因而 WinBoll 项目组诞生了。
☁因而 WinBoLL 项目组诞生了。
## WinBoll 项目组研发计划
致力于把 WinBoll-APP 应用在手机端 Android 项目开发。
也在探索 https://gitea.winboll.cc/<WinBoll 项目组>/WinBoll-APP.git 应用于 WinBoll-APP APK 分发。
更想进阶 https://github.com/<WinBoll 项目组>/WinBoll-APP.git 应用于 WinBoll-APP Beta APK 分发。
## 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-APP 应用场景
### ☁ WinBoll 设备资源概述
#### ☁ 且容傻家叙说 ☁ WinBoLL-APP 应用场景
### ☁ WinBoLL 设备资源概述
#### ☁ 1. Raid Disk.
概述:这是一个矩阵存储类设备。
优点:该设备具有数据容错存储功能,
@ -40,74 +44,81 @@
设备位于操作系统内部文件系统。
数据持久性与操作系统挂钩。
#### ☁ 4. WinBoll 用户资源概述。
1> /home/<用户名> 位于 WinBoll 操作系统目录下。
#### ☁ 4. WinBoLL 用户资源概述。
1> /home/<用户名> 位于 WinBoLL 操作系统目录下。
2> /rdisk/<用户名> 挂载用户 Raid Disk.
3> /data/<用户名> 挂载用户 Data Disk.
4> /sdcard/<用户名> 挂载用户 SSD Disk.
#### ☁ 5. WinBoll-APP 用户资源概述。
#### ☁ 5. WinBoLL-APP 用户资源概述。
1> /sdcard 挂载用户手机 SD 存储/storage/emulated/0
### ☁ 稍稍歇 ☁ ###
### ☁ 急急停 ☁ WinBoll 应用前置条件
☁ WinBoll 主机建立 1Panel MySQL 应用。
☁ WinBoll 主机建立 1Panel Gitea 应用。
☁ WinBoll 主机设置 WinBoll 应用为非登录状态。
☁ WinBoll 主机建立 WinBoll 账户与 WinBoll 用户组。
☁ WinBoll 账户 User ID 为: winboll
☁ WinBoll 用户组 Group ID 为: winboll
☁ WinBoll 主机 WinBoll 1Panel Gitea 建立 WinBoll 工作组。
☁ WinBoll 主机 WinBoll 1Panel Gitea 用户项目 APK 编译输出目录为 /sdcard/<用户名>/WinBoll/app/
☁ 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 主机建立 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 数据库中。
### ☁ 登高处 ☁ WinBoLL 应用需求规划
☁ WinBoLL 主机建立 WinBoLL 客户端用户数据库为 MySQL winbollclient 数据库。
☁ WinBoLL 主机设置 WinBoLL 客户端用户信息存储在 winbollclient 数据库中。
☁ MySQL winbollclient 数据库中
WinBoll 客户端用户信息设定为:
WinBoLL 客户端用户信息设定为:
<用户名, 验证密码, 验证邮箱, 验证手机, 唯一存储令牌Token, 备用验证邮箱>
☁ WinBoll 项目源码仓库托管在 WinBoll 1Panel Gitea 目录 /opt/1panel/apps/gitea/gitea/data/git/repositories/winboll/winboll.git中。
☁ WinBoll 主机提供 WinBoll 1Panel Gitea 应用的 WinBoll 项目源码仓库存取功能。Gitea 应用已提供)
☁ WinBoll 主机提供 WinBoll Gitea 项目仓库存档功能。Gitea 应用已提供)
☁ 提供 WinBoll 客户端用户登录功能。Gitea 应用已提供)
☁ 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/WinBoll 目录。(需要用户手动建立文件夹)
☁ WinBoll-APP 具有手机 /sdcard/WinBoll 目录的存储权限。(需要手机操作系统授权)
☁ WinBoll-APP WinBoll 项目仓库源码存储路径为 /sdcard/WinBoll/repositories/winboll.git需要用户手动建立文件夹
☁ WinBoll-APP 项目 APK 编译输出目录为 /sdcard/WinBoll/app/
☁ WinBoll-APP 应用签名验证可定制化。WinBoll 项目已提供)
☁ WinBoll-APP 与系列衍生 APP 应用共享 cc.winboll.studio 命名空间资源。WinBoll 项目已提供)
☁ WinBoll-APP 用户客户端信息存储在命名空间为 WinBoll APP MySQLLite 应用的 winbollappclient 数据库中。
☁ WinBoll-APP MySQLLite 应用的 winbollappclient 数据库中,
WinBoll 用户客户端信息设定为:
### ☁ 心忧虑 ☁ 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-APP 提供手机目录 /sdcard/WinBoll 的 WinBoll 项目源码管理功能。
### ☁ 呔! ☁ 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 项目组注册登录功能。
### ☁ 吁! ☁ 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 项目组注册登录功能。
# 本项目要实际运用需要注意以下几个步骤:
# 在项目根目录下:
## 1. 项目模块编译环境设置(必须)settings.gradle-demo 要复制为 settings.gradle并取消相应项目模块的注释。
## 2. 项目 Android SDK 编译环境设置(可选)local.properties-demo 要复制为 local.properties并按需要设置 Android SDK 目录。
## 3. 类库型模块编译环境设置(可选)winboll.properties-demo 要复制为 winboll.properties并按需要设置 WinBoll Maven 库登录用户信息。
## ★. 项目模块编译环境设置(必须)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 库登录用户信息。
# ☆类库型项目编译方法
@ -116,12 +127,12 @@
设置属性 libraryProject=<类库项目模块文件夹名称>
### 再编译测试项目
$ bash .winboll/bashPublishAPKAddTag.sh <应用项目模块文件夹名称>
#### 测试项目编译后,编译器会复制一份 APK 到以下路径:"/sdcard/WinBollStudio/APKs/<项目根目录名称>/tag/" 文件夹。
#### 测试项目编译后,编译器会复制一份 APK 到以下路径:"/sdcard/WinBoLLStudio/APKs/<项目根目录名称>/tag/" 文件夹。
### 最后编译类库项目
$ bash .winboll/bashPublishLIBAddTag.sh <类库项目模块文件夹名称>
#### 类库模块编译命令执行后,编译器会发布到 WinBoll Nexus Maven 库Maven 库地址可以参阅根项目目录配置 build.gradle 文件。
#### 类库模块编译命令执行后,编译器会发布到 WinBoLL Nexus Maven 库Maven 库地址可以参阅根项目目录配置 build.gradle 文件。
# ☆应用型项目编译方法
## 直接调用以下命令编译应用型项目
$ bash .winboll/bashPublishAPKAddTag.sh <应用项目模块文件夹名称>
#### 应用模块编译命令执行后,编译器会复制一份 APK 到以下路径:"/sdcard/WinBollStudio/APKs/<项目根目录名称>/tag/" 文件夹。
#### 应用模块编译命令执行后,编译器会复制一份 APK 到以下路径:"/sdcard/WinBoLLStudio/APKs/<项目根目录名称>/tag/" 文件夹。

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

@ -19,7 +19,7 @@ def genVersionName(def versionName){
android {
compileSdkVersion 32
buildToolsVersion "33.0.3"
buildToolsVersion "32.0.0"
defaultConfig {
applicationId "cc.winboll.studio.aes"
@ -29,7 +29,7 @@ android {
// versionName
// build.gradle stageCount=0
// Gradle编译环境下合起来的 versionName "${versionName}.0"
versionName "7.6"
versionName "15.9"
if(true) {
versionName = genVersionName("${versionName}")
}
@ -41,29 +41,9 @@ android {
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
}
}
dependencies {
api project(':libaes')
//api 'cc.winboll.studio:winboll-shared:1.6.5'
api 'io.github.medyo:android-about-page:2.0.0'
api 'com.github.getActivity:ToastUtils:10.5'
api 'com.jcraft:jsch:0.1.55'
api 'org.jsoup:jsoup:1.13.1'
api 'com.squareup.okhttp3:okhttp:4.4.1'
api 'androidx.appcompat:appcompat:1.0.0'
api 'androidx.fragment:fragment:1.0.0'
api 'com.google.android.material:material:1.0.0'
api 'cc.winboll.studio:libapputils:9.2.1'
api 'cc.winboll.studio:libappbase:1.0.3'
api fileTree(dir: 'libs', include: ['*.jar'])
}

View File

@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle
#Sun Jan 19 04:58:59 GMT 2025
stageCount=3
#Thu Jun 19 20:42:40 HKT 2025
stageCount=2
libraryProject=libaes
baseVersion=7.6
publishVersion=7.6.2
buildCount=4
baseBetaVersion=7.6.3
baseVersion=15.9
publishVersion=15.9.1
buildCount=0
baseBetaVersion=15.9.2

View File

@ -8,9 +8,10 @@
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/WinBoll.SupportThemeNoActionBar"
android:theme="@style/MyAESTheme"
android:requestLegacyExternalStorage="true"
android:supportsRtl="true">
android:supportsRtl="true"
android:networkSecurityConfig="@xml/network_security_config">
<activity
android:name=".MainActivity"
@ -30,6 +31,8 @@
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

@ -1,20 +1,31 @@
package cc.winboll.studio.aes;
/**
* @Author ZhanGSKen@QQ.COM
* @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();
//setIsDebug(BuildConfig.DEBUG);
// 初始化 Toast 框架
ToastUtils.init(this);
// 设置 Toast 布局样式
//ToastUtils.setView(R.layout.view_toast);
ToastUtils.setStyle(new WhiteToastStyle());
ToastUtils.setGravity(Gravity.BOTTOM, 0, 200);
}
}

View File

@ -1,16 +1,197 @@
package cc.winboll.studio.aes;
/**
* @Author ZhanGSKen@QQ.COM
* @Author ZhanGSKen<zhangsken@188.com>
* @Date 2024/06/13 19:05:52
* @Describe 应用主窗口
*/
import cc.winboll.studio.libaes.unittests.LibraryActivity;
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 class MainActivity extends LibraryActivity {
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

@ -6,16 +6,17 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.appcompat.widget.Toolbar
<cc.winboll.studio.libaes.views.ASupportToolbar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/activityassetshtmlToolbar1"/>
android:id="@+id/toolbar"/>
<cc.winboll.studio.libapputils.view.SimpleWebView
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1.0"
android:id="@+id/activityassetshtmlSimpleWebView1"/>
android:id="@+id/aboutviewroot_ll"/>
</LinearLayout>

View File

@ -13,7 +13,7 @@
<item
android:id="@+id/item_localfileselectdialog"
android:title="LocalFileSelectDialog"/>
<item
android:id="@+id/item_atoolbar"
android:title="Test AToolbar"/>

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

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<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

@ -24,7 +24,7 @@ android {
defaultConfig {
applicationId "cc.winboll.studio.androiddemo"
minSdkVersion 24
targetSdkVersion 29
targetSdkVersion 30
versionCode 1
// versionName
// .winboll/winbollBuildProps.properties stageCount=0
@ -49,7 +49,8 @@ dependencies {
// 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", 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' //
@ -66,6 +67,6 @@ dependencies {
// https://mvnrepository.com/artifact/com.android.support/recyclerview-v7
api 'com.android.support:recyclerview-v7:28.0.0'
api 'cc.winboll.studio:libapputils:15.2.1'
api 'cc.winboll.studio:libappbase:15.2.2'
api 'cc.winboll.studio:libapputils:15.8.2'
api 'cc.winboll.studio:libappbase:15.8.2'
}

View File

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

View File

@ -23,8 +23,8 @@ android {
defaultConfig {
applicationId "cc.winboll.studio.androidxdemo"
minSdkVersion 26
targetSdkVersion 29
minSdkVersion 24
targetSdkVersion 30
versionCode 1
// versionName
// .winboll/winbollBuildProps.properties stageCount=0
@ -67,7 +67,7 @@ dependencies {
//api 'androidx.vectordrawable:vectordrawable-animated:1.1.0'
//api 'androidx.fragment:fragment:1.1.0'
api 'cc.winboll.studio:libaes:15.2.1'
api 'cc.winboll.studio:libapputils:15.2.1'
api 'cc.winboll.studio:libappbase:15.2.2'
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

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

View File

@ -14,6 +14,7 @@ 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;
@ -22,6 +23,8 @@ 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;
@ -46,6 +49,14 @@ public class App extends GlobalApplication {
@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);
}

View File

@ -4,6 +4,7 @@ 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 {
@ -18,6 +19,8 @@ public class MainActivity extends AppCompatActivity {
setSupportActionBar(toolbar);
mLogView = findViewById(R.id.logview);
ToastUtils.show("onCreate");
}
@Override

View File

View File

View File

View File

View File

View File

View File

@ -1,8 +0,0 @@
#Created by .winboll/winboll_app_build.gradle
#Sun Jan 05 07:55:24 HKT 2025
stageCount=17
libraryProject=winboll-shared
baseVersion=1.8
publishVersion=1.8.16
buildCount=0
baseBetaVersion=1.8.17

View File

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

@ -1,48 +0,0 @@
<?xml version='1.0' encoding='utf-8'?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="cc.winboll.studio.app">
<!-- BIND_AUTOFILL_SERVICE -->
<uses-permission android:name="android.permission.BIND_AUTOFILL_SERVICE"/>
<application
android:name=".App"
android:allowBackup="true"
android:icon="@drawable/ic_winboll"
android:label="@string/app_name"
android:theme="@style/WinBoll.SupportThemeNoActionBar"
android:supportsRtl="true">
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:launchMode="singleTask"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/studio_provider"/>
</provider>
</application>
</manifest>

View File

@ -1,24 +0,0 @@
package cc.winboll.studio.app;
/**
* @Author ZhanGSKen@QQ.COM
* @Date 2024/12/08 15:10:51
* @Describe 全局应用类
*/
import cc.winboll.studio.shared.app.WinBollApplication;
import cc.winboll.studio.shared.log.LogUtils;
public class App extends WinBollApplication {
public static final String TAG = "App";
@Override
public void onCreate() {
// 必须在调用基类前设置应用调试标志
// 这样可以预先设置日志与数据的存储根目录
//setIsDebug(BuildConfig.DEBUG);
super.onCreate();
LogUtils.d(TAG, "onCreate");
}
}

View File

@ -1,168 +0,0 @@
package cc.winboll.studio.app;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.Menu;
import android.view.MenuItem;
import androidx.appcompat.widget.Toolbar;
import cc.winboll.studio.shared.app.WinBollActivity;
import cc.winboll.studio.shared.app.WinBollActivityManager;
import cc.winboll.studio.shared.app.WinBollApplication;
import cc.winboll.studio.shared.log.LogUtils;
import cc.winboll.studio.shared.util.UriUtils;
import cc.winboll.studio.shared.view.StringToQrCodeView;
import cc.winboll.studio.shared.view.YesNoAlertDialog;
import cc.winboll.studio.unittest.UnitTestActivity;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.UUID;
final public class MainActivity extends WinBollActivity {
public static final String TAG = "MainActivity";
public static final int REQUEST_HOME_ACTIVITY = 0;
public static final int REQUEST_ABOUT_ACTIVITY = 1;
@Override
protected boolean isEnableDisplayHomeAsUp() {
return false;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
// 接收并处理 Intent 数据函数 Intent 处理接收就直接返回
if (prosessIntents(getIntent())) return;
// 以下正常创建主窗口
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 设置 WinBoll 应用 UI 类型
WinBollApplication.setWinBollUI_TYPE(WinBollApplication.WinBollUI_TYPE.Aplication);
//ToastUtils.show("WinBollUI_TYPE " + WinBollApplication.getWinBollUI_TYPE());
LogUtils.d(TAG, "BuildConfig.DEBUG : " + Boolean.toString(BuildConfig.DEBUG));
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
setSubTitle("");
}
//
// 处理传入的 Intent 数据
//
boolean prosessIntents(Intent intent) {
if (intent == null
|| intent.getAction() == null
|| intent.getAction().equals(""))
return false;
if (intent.getAction().equals(StringToQrCodeView.ACTION_UNITTEST_QRCODE)) {
try {
WinBollActivity clazzActivity = UnitTestActivity.class.newInstance();
String tag = clazzActivity.getTag();
LogUtils.d(TAG, "String tag = clazzActivity.getTag(); tag " + tag);
Intent subIntent = new Intent(this, UnitTestActivity.class);
subIntent.setAction(intent.getAction());
File file = new File(getCacheDir(), UUID.randomUUID().toString());
//取出文件uri
Uri uri = intent.getData();
if (uri == null) {
uri = intent.getParcelableExtra(Intent.EXTRA_STREAM);
}
//获取文件真实地址
String szSrcPath = UriUtils.getFileFromUri(getApplication(), uri);
if (TextUtils.isEmpty(szSrcPath)) {
return false;
}
Files.copy(Paths.get(szSrcPath), Paths.get(file.getPath()));
//startWinBollActivity(subIntent, tag);
WinBollActivityManager.getInstance(this).startWinBollActivity(this, subIntent, UnitTestActivity.class);
} catch (IllegalAccessException | InstantiationException | IOException e) {
LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
// 函数处理异常返回失败
return false;
}
} else {
LogUtils.d(TAG, "prosessIntents|" + intent.getAction() + "|yet");
return false;
}
return true;
}
@Override
public String getTag() {
return TAG;
}
@Override
protected boolean isAddWinBollToolBar() {
return true;
}
@Override
public void onBackPressed() {
exit();
}
void exit() {
YesNoAlertDialog.OnDialogResultListener listener = new YesNoAlertDialog.OnDialogResultListener(){
@Override
public void onYes() {
WinBollActivityManager.getInstance(getApplicationContext()).finishAll();
}
@Override
public void onNo() {
}
};
YesNoAlertDialog.show(this, "[ " + getString(R.string.app_name) + " ]", "Exit(Yes/No).\nIs close all activity?", listener);
}
@Override
protected Toolbar initToolBar() {
return findViewById(R.id.activitymainToolbar1);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.toolbar_winboll_app_main, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.item_unittest) {
WinBollActivityManager.getInstance(this).startWinBollActivity(this, UnitTestActivity.class);
} else if (item.getItemId() == R.id.item_exit) {
exit();
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (resultCode) {
case REQUEST_HOME_ACTIVITY : {
LogUtils.d(TAG, "REQUEST_HOME_ACTIVITY");
break;
}
case REQUEST_ABOUT_ACTIVITY : {
LogUtils.d(TAG, "REQUEST_ABOUT_ACTIVITY");
break;
}
default : {
super.onActivityResult(requestCode, resultCode, data);
}
}
}
}

View File

@ -1,29 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.appcompat.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/activitymainToolbar1"/>
<LinearLayout
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="0dp"
android:gravity="center"
android:layout_weight="1.0">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello, WinBoll!"/>
</LinearLayout>
</LinearLayout>

View File

@ -1,32 +0,0 @@
<?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="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/shape_gradient"
android:gravity="center"
android:orientation="vertical"
android:padding="10dp">
<LinearLayout
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@drawable/ic_launcher"/>
<TextView
android:id="@android:id/message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:textColor="#FF000000"
android:textSize="16sp"/>
</LinearLayout>
</LinearLayout>

View File

@ -1,5 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
</menu>

View File

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- WinBoll 默认方案 -->
<color name="colorPrimary">#FF196ABC</color>
<color name="colorPrimaryDark">#FF002B57</color>
<color name="colorAccent">#FF80BFFF</color>
<color name="colorToastFrame">#FFA9A9A9</color>
<color name="colorToastShadow">#FF000000</color>
<color name="colorToastBackgroung">#FFFFFFFF</color>
</resources>

View File

@ -1,3 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>

View File

@ -1,25 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-path
name="external_storage_root"
path="." />
<files-path
name="files_path"
path="." />
<cache-path
name="cache_path"
path="." />
<!--/storage/emulated/0/Android/data/...-->
<external-files-path
name="external_file_path"
path="." />
<!--代表app 外部存储区域根目录下的文件 Context.getExternalCacheDir目录下的目录-->
<external-cache-path
name="external_cache_path"
path="." />
<!--配置root-path。这样子可以读取到sd卡和一些应用分身的目录否则微信分身保存的图片就会导致 java.lang.IllegalArgumentException: Failed to find configured root that contains /storage/emulated/999/tencent/MicroMsg/WeiXin/export1544062754693.jpg在小米6的手机上微信分身有这个crash华为没有
-->
<root-path
name="root_path"
path="" />
</paths>

View File

@ -25,12 +25,12 @@ android {
defaultConfig {
applicationId "cc.winboll.studio.appbase"
minSdkVersion 24
targetSdkVersion 29
targetSdkVersion 30
versionCode 1
// versionName
// .winboll/winbollBuildProps.properties stageCount=0
// Gradle编译环境下合起来的 versionName "${versionName}.0"
versionName "15.2"
versionName "15.8"
if(true) {
versionName = genVersionName("${versionName}")
}

View File

@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle
#Sat Mar 29 11:28:02 HKT 2025
stageCount=3
#Mon Jun 09 09:38:19 HKT 2025
stageCount=9
libraryProject=libappbase
baseVersion=15.2
publishVersion=15.2.2
baseVersion=15.8
publishVersion=15.8.8
buildCount=0
baseBetaVersion=15.2.3
baseBetaVersion=15.8.9

View File

@ -5,11 +5,12 @@
<application
android:name=".App"
android:icon="@drawable/ic_launcher"
android:icon="@drawable/ic_miapp"
android:label="@string/app_name"
android:theme="@style/MyAPPBaseTheme"
android:resizeableActivity="true"
android:process=":App">
android:process=":App"
android:networkSecurityConfig="@xml/network_security_config">
<activity
android:name=".MainActivity"
@ -39,7 +40,8 @@
android:resizeableActivity="true"
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"/>
<activity android:name=".activities.New2Activity"
<activity
android:name=".activities.New2Activity"
android:label="New2Activity"
android:exported="true"
android:resizeableActivity="true"
@ -74,7 +76,8 @@
<service android:name=".services.AssistantService"/>
<receiver android:name="cc.winboll.studio.appbase.receivers.MainReceiver"
<receiver
android:name="cc.winboll.studio.appbase.receivers.MainReceiver"
android:exported="true">
<intent-filter>
@ -105,7 +108,8 @@
</receiver>
<receiver android:name=".receivers.APPNewsWidgetClickListener"
<receiver
android:name=".receivers.APPNewsWidgetClickListener"
android:exported="true">
<intent-filter>
@ -122,7 +126,6 @@
android:name="android.max_aspect"
android:value="4.0"/>
</application>
</manifest>

View File

@ -1,7 +1,7 @@
package cc.winboll.studio.appbase;
/**
* @Author ZhanGSKen@QQ.COM
* @Author ZhanGSKen<zhangsken@188.com>
* @Date 2025/01/05 09:54:42
* @Describe APPbase 应用类
*/

View File

@ -4,13 +4,14 @@ import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
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;
@ -18,13 +19,13 @@ 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;
import cc.winboll.studio.libappbase.dialogs.YesNoAlertDialog;
import cc.winboll.studio.libappbase.winboll.IWinBoLLActivity;
public class MainActivity extends WinBollActivityBase implements IWinBollActivity {
public class MainActivity extends WinBoLLActivity implements IWinBoLLActivity {
public static final String TAG = "MainActivity";
@ -39,7 +40,6 @@ public class MainActivity extends WinBollActivityBase implements IWinBollActivit
}
Toolbar mToolbar;
//LogView mLogView;
@Override
protected void onCreate(Bundle savedInstanceState) {
@ -48,33 +48,29 @@ public class MainActivity extends WinBollActivityBase implements IWinBollActivit
setContentView(R.layout.activity_main);
mToolbar = findViewById(R.id.toolbar);
setSupportActionBar(mToolbar);
setActionBar(mToolbar);
CheckBox cbIsDebugMode = findViewById(R.id.activitymainCheckBox1);
cbIsDebugMode.setChecked(GlobalApplication.isDebuging());
//mLogView = findViewById(R.id.activitymainLogView1);
// if (GlobalApplication.isDebuging()) {
// mLogView.start();
// ToastUtils.show("LogView start.");
// }
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.toolbar_main, menu);
getMenuInflater().inflate(R.menu.toolbar_appbase, 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();
@ -88,7 +84,7 @@ public class MainActivity extends WinBollActivityBase implements IWinBollActivit
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...");
@ -138,8 +134,6 @@ public class MainActivity extends WinBollActivityBase implements IWinBollActivit
startService(intent);
}
public void onStopTestDemoService(View view) {
Intent intent = new Intent(this, TestDemoService.class);
@ -177,8 +171,13 @@ public class MainActivity extends WinBollActivityBase implements IWinBollActivit
}
public void onTestOpenNewActivity(View view) {
GlobalApplication.getWinBollActivityManager().startWinBollActivity(this, NewActivity.class);
GlobalApplication.getWinBoLLActivityManager().startWinBoLLActivity(this, NewActivity.class);
}
@Override
protected void onResume() {
super.onResume();
}
}

View File

@ -1,7 +1,7 @@
package cc.winboll.studio.appbase;
/**
* @Author ZhanGSKen@AliYun.Com
* @Author ZhanGSKen<zhangsken@188.com>
* @Date 2025/02/13 19:30:10
*/
import android.content.Context;

View File

@ -1,82 +0,0 @@
package cc.winboll.studio.appbase;
/**
* @Author ZhanGSKen@AliYun.Com
* @Date 2025/03/28 15:34:16
* @Describe 应用活动窗口基类
*/
import android.app.Activity;
import android.os.Bundle;
import android.os.PersistableBundle;
import android.support.v7.app.AppCompatActivity;
import android.view.MenuItem;
import cc.winboll.studio.appbase.App;
import cc.winboll.studio.appbase.R;
import cc.winboll.studio.libappbase.GlobalApplication;
import cc.winboll.studio.libappbase.dialogs.YesNoAlertDialog;
import cc.winboll.studio.libappbase.winboll.IWinBollActivity;
import cc.winboll.studio.libappbase.winboll.WinBollActivityManager;
public class WinBollActivityBase extends AppCompatActivity implements IWinBollActivity {
public static final String TAG = "WinBollActivityBase";
@Override
public Activity getActivity() {
return this;
}
@Override
public String getTag() {
return TAG;
}
WinBollActivityManager getWinBollActivityManager() {
return WinBollActivityManager.getInstance(GlobalApplication.getInstance());
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWinBollActivityManager().add(this);
}
@Override
public void onPostCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
super.onPostCreate(savedInstanceState, persistentState);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == cc.winboll.studio.appbase.R.id.item_log) {
GlobalApplication.getWinBollActivityManager().startLogActivity(this);
return true;
} else if(item.getItemId() == cc.winboll.studio.appbase.R.id.item_minimal) {
//moveTaskToBack(true);
exit();
}
// 在switch语句中处理每个ID并在处理完后返回true未处理的情况返回false
return super.onOptionsItemSelected(item);
}
void exit() {
YesNoAlertDialog.show(this, "Exit " + getString(R.string.app_name), "Close all activity and exit?", new YesNoAlertDialog.OnDialogResultListener(){
@Override
public void onYes() {
App.getWinBollActivityManager().finishAll();
}
@Override
public void onNo() {
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
getWinBollActivityManager().registeRemove(this);
}
}

View File

@ -1,22 +1,21 @@
package cc.winboll.studio.appbase.activities;
/**
* @Author ZhanGSKen@AliYun.Com
* @Author ZhanGSKen<zhangsken@188.com>
* @Date 2025/03/25 11:46:40
* @Describe 测试窗口2
*/
import android.app.Activity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toolbar;
import cc.winboll.studio.appbase.R;
import cc.winboll.studio.appbase.WinBollActivityBase;
import cc.winboll.studio.libappbase.GlobalApplication;
import cc.winboll.studio.libappbase.winboll.IWinBollActivity;
import cc.winboll.studio.libappbase.winboll.IWinBoLLActivity;
public class New2Activity extends WinBollActivityBase implements IWinBollActivity {
public class New2Activity extends WinBoLLActivity implements IWinBoLLActivity {
public static final String TAG = "New2Activity";
@ -41,7 +40,7 @@ public class New2Activity extends WinBollActivityBase implements IWinBollActivit
// mLogView = findViewById(R.id.logview);
// mLogView.start();
mToolbar = findViewById(R.id.toolbar);
setSupportActionBar(mToolbar);
setActionBar(mToolbar);
}
@ -52,31 +51,26 @@ public class New2Activity extends WinBollActivityBase implements IWinBollActivit
}
public void onCloseThisActivity(View view) {
GlobalApplication.getWinBollActivityManager().finish(this);
GlobalApplication.getWinBoLLActivityManager().finish(this);
}
public void onCloseAllActivity(View view) {
GlobalApplication.getWinBollActivityManager().finishAll();
GlobalApplication.getWinBoLLActivityManager().finishAll();
}
public void onNewActivity(View view) {
GlobalApplication.getWinBollActivityManager().startWinBollActivity(this, NewActivity.class);
GlobalApplication.getWinBoLLActivityManager().startWinBoLLActivity(this, NewActivity.class);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.toolbar_main, menu);
getMenuInflater().inflate(R.menu.toolbar_appbase, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == cc.winboll.studio.appbase.R.id.item_log) {
GlobalApplication.getWinBollActivityManager().startLogActivity(this);
return true;
}
// 在switch语句中处理每个ID并在处理完后返回true未处理的情况返回false
return super.onOptionsItemSelected(item);
}

View File

@ -1,21 +1,20 @@
package cc.winboll.studio.appbase.activities;
/**
* @Author ZhanGSKen@AliYun.Com
* @Author ZhanGSKen<zhangsken@188.com>
* @Date 2025/03/25 05:04:22
*/
import android.app.Activity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toolbar;
import cc.winboll.studio.appbase.R;
import cc.winboll.studio.appbase.WinBollActivityBase;
import cc.winboll.studio.libappbase.GlobalApplication;
import cc.winboll.studio.libappbase.winboll.IWinBollActivity;
import cc.winboll.studio.libappbase.winboll.IWinBoLLActivity;
public class NewActivity extends WinBollActivityBase implements IWinBollActivity {
public class NewActivity extends WinBoLLActivity implements IWinBoLLActivity {
public static final String TAG = "NewActivity";
@ -39,7 +38,7 @@ public class NewActivity extends WinBollActivityBase implements IWinBollActivity
// mLogView = findViewById(R.id.logview);
// mLogView.start();
mToolbar = findViewById(R.id.toolbar);
setSupportActionBar(mToolbar);
setActionBar(mToolbar);
}
@ -50,31 +49,26 @@ public class NewActivity extends WinBollActivityBase implements IWinBollActivity
}
public void onCloseThisActivity(View view) {
GlobalApplication.getWinBollActivityManager().finish(this);
GlobalApplication.getWinBoLLActivityManager().finish(this);
}
public void onCloseAllActivity(View view) {
GlobalApplication.getWinBollActivityManager().finishAll();
GlobalApplication.getWinBoLLActivityManager().finishAll();
}
public void onNew2Activity(View view) {
GlobalApplication.getWinBollActivityManager().startWinBollActivity(this, New2Activity.class);
GlobalApplication.getWinBoLLActivityManager().startWinBoLLActivity(this, New2Activity.class);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.toolbar_main, menu);
getMenuInflater().inflate(R.menu.toolbar_appbase, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == cc.winboll.studio.appbase.R.id.item_log) {
GlobalApplication.getWinBollActivityManager().startLogActivity(this);
return true;
}
// 在switch语句中处理每个ID并在处理完后返回true未处理的情况返回false
return super.onOptionsItemSelected(item);
}

View File

@ -0,0 +1,61 @@
package cc.winboll.studio.appbase.activities;
/**
* @Author ZhanGSKen<zhangsken@188.com>
* @Date 2025/05/10 09:48
* @Describe WinBoLL 窗口基础类
*/
import android.app.Activity;
import android.os.Bundle;
import android.view.MenuItem;
import cc.winboll.studio.appbase.MainActivity;
import cc.winboll.studio.appbase.R;
import cc.winboll.studio.libappbase.GlobalApplication;
import cc.winboll.studio.libappbase.LogUtils;
import cc.winboll.studio.libappbase.winboll.IWinBoLLActivity;
public class WinBoLLActivity extends Activity implements IWinBoLLActivity {
public static final String TAG = "WinBoLLActivity";
@Override
public Activity getActivity() {
return this;
}
@Override
public String getTag() {
return TAG;
}
@Override
protected void onResume() {
super.onResume();
LogUtils.d(TAG, String.format("onResume %s", getTag()));
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.item_log) {
GlobalApplication.getWinBoLLActivityManager().startLogActivity(this);
return true;
} else if (item.getItemId() == R.id.item_home) {
GlobalApplication.getWinBoLLActivityManager().startWinBoLLActivity(getApplicationContext(), MainActivity.class);
return true;
}
// 在switch语句中处理每个ID并在处理完后返回true未处理的情况返回false
return super.onOptionsItemSelected(item);
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
GlobalApplication.getWinBoLLActivityManager().add(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
GlobalApplication.getWinBoLLActivityManager().registeRemove(this);
}
}

View File

@ -1,7 +1,7 @@
package cc.winboll.studio.appbase.handlers;
/**
* @Author ZhanGSKen@AliYun.Com
* @Author ZhanGSKen<zhangsken@188.com>
* @Date 2025/02/14 03:51:40
*/
import android.os.Handler;

View File

@ -1,7 +1,7 @@
package cc.winboll.studio.appbase.models;
/**
* @Author ZhanGSKen@AliYun.Com
* @Author ZhanGSKen<zhangsken@188.com>
* @Date 2025/02/13 07:06:13
*/
import android.util.JsonReader;

View File

@ -1,7 +1,7 @@
package cc.winboll.studio.appbase.models;
/**
* @Author ZhanGSKen@AliYun.Com
* @Author ZhanGSKen<zhangsken@188.com>
* @Date 2025/03/07 12:47:22
* @Describe TestServiceBean
*/

View File

@ -1,7 +1,7 @@
package cc.winboll.studio.appbase.models;
/**
* @Author ZhanGSKen@AliYun.Com
* @Author ZhanGSKen<zhangsken@188.com>
* @Date 2025/03/07 12:49:21
* @Describe TestDemoServiceBean
*/

View File

@ -1,7 +1,7 @@
package cc.winboll.studio.appbase.receivers;
/**
* @Author ZhanGSKen@AliYun.Com
* @Author ZhanGSKen<zhangsken@188.com>
* @Date 2025/03/24 07:11:44
*/
import android.content.BroadcastReceiver;

View File

@ -1,7 +1,7 @@
package cc.winboll.studio.appbase.receivers;
/**
* @Author ZhanGSKen@AliYun.Com
* @Author ZhanGSKen<zhangsken@188.com>
* @Date 2025/02/13 06:58:04
* @Describe 主要广播接收器
*/
@ -10,16 +10,18 @@ import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import cc.winboll.studio.appbase.models.WinBollNewsBean;
import cc.winboll.studio.appbase.services.MainService;
import cc.winboll.studio.appbase.widgets.APPNewsWidget;
import cc.winboll.studio.libappbase.AppUtils;
import cc.winboll.studio.libappbase.LogUtils;
import cc.winboll.studio.libappbase.sos.APPModel;
import cc.winboll.studio.libappbase.models.APPModel;
import cc.winboll.studio.libappbase.models.WinBoLLModel;
import cc.winboll.studio.libappbase.models.WinBoLLNewsBean;
import cc.winboll.studio.libappbase.sos.SOS;
import cc.winboll.studio.libappbase.sos.SOSObject;
import cc.winboll.studio.libappbase.sos.WinBoll;
import cc.winboll.studio.libappbase.utils.ToastUtils;
import cc.winboll.studio.libappbase.winboll.IWinBoLLActivity;
import cc.winboll.studio.libappbase.winboll.WinBoLL;
import java.io.IOException;
import java.lang.ref.WeakReference;
import java.text.SimpleDateFormat;
@ -42,21 +44,21 @@ public class MainReceiver extends BroadcastReceiver {
String szAction = intent.getAction();
if (szAction.equals(ACTION_BOOT_COMPLETED)) {
ToastUtils.show("ACTION_BOOT_COMPLETED");
} else if (szAction.equals(WinBoll.ACTION_BIND)) {
} else if (szAction.equals(IWinBoLLActivity.ACTION_BIND)) {
LogUtils.d(TAG, "ACTION_BIND");
LogUtils.d(TAG, String.format("context.getPackageName() %s", context.getPackageName()));
LogUtils.d(TAG, String.format("intent.getAction() %s", intent.getAction()));
String szAPPModel = intent.getStringExtra(WinBoll.EXTRA_APPMODEL);
LogUtils.d(TAG, String.format("szAPPModel %s", szAPPModel));
if (szAPPModel != null && !szAPPModel.equals("")) {
String szWinBoLLModel = intent.getStringExtra(WinBoLL.EXTRA_WINBOLLMODEL);
LogUtils.d(TAG, String.format("szAPPModel %s", szWinBoLLModel));
if (szWinBoLLModel != null && !szWinBoLLModel.equals("")) {
try {
APPModel bean = APPModel.parseStringToBean(szAPPModel, APPModel.class);
WinBoLLModel bean = WinBoLLModel.parseStringToBean(szWinBoLLModel, WinBoLLModel.class);
if (bean != null) {
String szAppPackageName = bean.getAppPackageName();
LogUtils.d(TAG, String.format("szAppPackageName %s", szAppPackageName));
String szAppMainServiveName = bean.getAppMainServiveName();
LogUtils.d(TAG, String.format("szAppMainServiveName %s", szAppMainServiveName));
mwrService.get().bindAPPModelConnection(bean);
mwrService.get().bindWinBoLLModelConnection(bean);
}
} catch (IOException e) {
LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
@ -80,7 +82,7 @@ public class MainReceiver extends BroadcastReceiver {
String appName = AppUtils.getAppNameByPackageName(context, szObjectPackageName);
LogUtils.d(TAG, String.format("appName %s", appName));
WinBollNewsBean appWinBollNewsBean = new WinBollNewsBean(appName);
WinBoLLNewsBean appWinBoLLNewsBean = new WinBoLLNewsBean(appName);
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
String currentTime = sdf.format(new Date());
StringBuilder sbLine = new StringBuilder();
@ -88,9 +90,9 @@ public class MainReceiver extends BroadcastReceiver {
sbLine.append(currentTime);
sbLine.append("] Power to ");
sbLine.append(appName);
appWinBollNewsBean.setMessage(sbLine.toString());
appWinBoLLNewsBean.setMessage(sbLine.toString());
APPNewsWidget.addWinBollNewsBean(context, appWinBollNewsBean);
APPNewsWidget.addWinBoLLNewsBean(context, appWinBoLLNewsBean);
Intent intentWidget = new Intent(context, APPNewsWidget.class);
intentWidget.setAction(APPNewsWidget.ACTION_RELOAD_REPORT);
@ -110,7 +112,7 @@ public class MainReceiver extends BroadcastReceiver {
IntentFilter filter=new IntentFilter();
filter.addAction(ACTION_BOOT_COMPLETED);
filter.addAction(SOS.ACTION_SOS);
filter.addAction(WinBoll.ACTION_BIND);
filter.addAction(WinBoLL.ACTION_BIND);
//filter.addAction(Intent.ACTION_BATTERY_CHANGED);
service.registerReceiver(this, filter);
}

View File

@ -1,7 +1,7 @@
package cc.winboll.studio.appbase.services;
/**
* @Author ZhanGSKen@AliYun.Com
* @Author ZhanGSKen<zhangsken@188.com>
* @Date 2025/02/14 03:38:31
* @Describe 守护进程服务
*/

View File

@ -1,7 +1,7 @@
package cc.winboll.studio.appbase.services;
/**
* @Author ZhanGSKen@AliYun.Com
* @Author ZhanGSKen<zhangsken@188.com>
* @Date 2025/02/13 06:56:41
* @Describe 拨号主服务
* 参考:
@ -18,15 +18,16 @@ import android.content.ServiceConnection;
import android.os.Binder;
import android.os.IBinder;
import cc.winboll.studio.appbase.MyTileService;
import cc.winboll.studio.appbase.models.MainServiceBean;
import cc.winboll.studio.appbase.handlers.MainServiceHandler;
import cc.winboll.studio.appbase.models.MainServiceBean;
import cc.winboll.studio.appbase.receivers.MainReceiver;
import cc.winboll.studio.appbase.services.AssistantService;
import cc.winboll.studio.appbase.threads.MainServiceThread;
import cc.winboll.studio.appbase.widgets.APPNewsWidget;
import cc.winboll.studio.libappbase.LogUtils;
import cc.winboll.studio.libappbase.models.APPModel;
import cc.winboll.studio.libappbase.models.WinBoLLModel;
import java.util.ArrayList;
import cc.winboll.studio.libappbase.sos.APPModel;
public class MainService extends Service {
@ -182,7 +183,7 @@ public class MainService extends Service {
}
}
public void bindAPPModelConnection(APPModel bean) {
public void bindWinBoLLModelConnection(WinBoLLModel bean) {
LogUtils.d(TAG, "bindAPPModelConnection(...)");
// 清理旧的绑定链接
for (int i = mAPPModelConnectionList.size() - 1; i > -1; i--) {
@ -203,7 +204,7 @@ public class MainService extends Service {
Intent intentWidget = new Intent(this, APPNewsWidget.class);
intentWidget.setAction(APPNewsWidget.ACTION_WAKEUP_SERVICE);
APPModel appSOSBean = new APPModel(bean.getAppPackageName(), bean.getAppMainServiveName());
WinBoLLModel appSOSBean = new WinBoLLModel(bean.getAppPackageName(), bean.getAppMainServiveName());
intentWidget.putExtra("APPSOSBean", appSOSBean.toString());
sendBroadcast(intentWidget);
}
@ -212,7 +213,7 @@ public class MainService extends Service {
ComponentName mComponentName;
boolean isBindToAPP(APPModel bean) {
boolean isBindToAPP(WinBoLLModel bean) {
return mComponentName != null
&& mComponentName.getClassName().equals(bean.getAppMainServiveName())
&& mComponentName.getPackageName().equals(bean.getAppPackageName());

View File

@ -1,7 +1,7 @@
package cc.winboll.studio.appbase.services;
/**
* @Author ZhanGSKen@AliYun.Com
* @Author ZhanGSKen<zhangsken@188.com>
* @Date 2025/03/07 12:45:49
* @Describe 启动时申请绑定到APPBase主服务的服务示例
*/
@ -10,11 +10,12 @@ import android.content.Context;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;
import cc.winboll.studio.appbase.models.TestDemoBindServiceBean;
import cc.winboll.studio.libappbase.LogUtils;
import cc.winboll.studio.libappbase.sos.WinBoll;
import cc.winboll.studio.appbase.App;
import cc.winboll.studio.appbase.models.TestDemoBindServiceBean;
import cc.winboll.studio.appbase.services.TestDemoBindService;
import cc.winboll.studio.libappbase.LogUtils;
import cc.winboll.studio.libappbase.sos.SOS;
import cc.winboll.studio.libappbase.winboll.WinBoLL;
public class TestDemoBindService extends Service {
@ -156,9 +157,9 @@ public class TestDemoBindService extends Service {
super.run();
LogUtils.d(TAG, "run() start");
if (App.isDebuging()) {
WinBoll.bindToAPPBaseBeta(mContext, TestDemoBindService.class.getName());
WinBoLL.bindToAPPBaseBeta(mContext, TestDemoBindService.class.getName());
} else {
WinBoll.bindToAPPBase(mContext, TestDemoBindService.class.getName());
WinBoLL.bindToAPPBase(mContext, TestDemoBindService.class.getName());
}
while (!isExit()) {

View File

@ -1,7 +1,7 @@
package cc.winboll.studio.appbase.services;
/**
* @Author ZhanGSKen@AliYun.Com
* @Author ZhanGSKen<zhangsken@188.com>
* @Date 2025/03/07 12:39:24
* @Describe 普通服务示例
*/
@ -12,7 +12,6 @@ import android.os.Binder;
import android.os.IBinder;
import cc.winboll.studio.appbase.models.TestDemoServiceBean;
import cc.winboll.studio.libappbase.LogUtils;
import cc.winboll.studio.libappbase.sos.WinBoll;
public class TestDemoService extends Service {

View File

@ -1,7 +1,7 @@
package cc.winboll.studio.appbase.threads;
/**
* @Author ZhanGSKen@AliYun.Com
* @Author ZhanGSKen<zhangsken@188.com>
* @Date 2025/02/14 03:46:44
*/
import android.content.Context;

View File

@ -1,6 +1,6 @@
package cc.winboll.studio.appbase.widgets;
/**
* @Author ZhanGSKen@AliYun.Com
* @Author ZhanGSKen<zhangsken@188.com>
* @Date 2025/02/15 14:41:25
* @Describe TimeWidget
*/
@ -12,16 +12,17 @@ import android.content.Context;
import android.content.Intent;
import android.widget.RemoteViews;
import cc.winboll.studio.appbase.R;
import cc.winboll.studio.appbase.models.WinBollNewsBean;
import cc.winboll.studio.appbase.receivers.APPNewsWidgetClickListener;
import cc.winboll.studio.libappbase.AppUtils;
import cc.winboll.studio.libappbase.LogUtils;
import cc.winboll.studio.libappbase.sos.APPModel;
import cc.winboll.studio.libappbase.sos.WinBoll;
import cc.winboll.studio.libappbase.models.APPModel;
import cc.winboll.studio.libappbase.models.WinBoLLNewsBean;
import cc.winboll.studio.libappbase.winboll.WinBoLL;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import cc.winboll.studio.libappbase.models.WinBoLLModel;
public class APPNewsWidget extends AppWidgetProvider {
@ -31,14 +32,14 @@ public class APPNewsWidget extends AppWidgetProvider {
public static final String ACTION_RELOAD_REPORT = APPNewsWidget.class.getName() + ".ACTION_RELOAD_REPORT";
volatile static ArrayList<WinBollNewsBean> _WinBollNewsBeanList;
volatile static ArrayList<WinBoLLNewsBean> _WinBoLLNewsBeanList;
final static int _MAX_PAGES = 10;
final static int _OnePageLinesCount = 5;
volatile static int _CurrentPageIndex = 0;
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
initWinBollNewsBeanList(context);
initWinBoLLNewsBeanList(context);
for (int appWidgetId : appWidgetIds) {
updateAppWidget(context, appWidgetManager, appWidgetId);
}
@ -47,7 +48,7 @@ public class APPNewsWidget extends AppWidgetProvider {
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
initWinBollNewsBeanList(context);
initWinBoLLNewsBeanList(context);
if (intent.getAction().equals(ACTION_RELOAD_REPORT)) {
LogUtils.d(TAG, "ACTION_RELOAD_REPORT");
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
@ -57,11 +58,11 @@ public class APPNewsWidget extends AppWidgetProvider {
}
}else if (intent.getAction().equals(ACTION_WAKEUP_SERVICE)) {
LogUtils.d(TAG, "ACTION_WAKEUP_SERVICE");
String szAPPModel = intent.getStringExtra(WinBoll.EXTRA_APPMODEL);
LogUtils.d(TAG, String.format("szAPPModel %s", szAPPModel));
if (szAPPModel != null && !szAPPModel.equals("")) {
String szWinBoLLModel = intent.getStringExtra(WinBoLL.EXTRA_WINBOLLMODEL);
LogUtils.d(TAG, String.format("szWinBoLLModel %s", szWinBoLLModel));
if (szWinBoLLModel != null && !szWinBoLLModel.equals("")) {
try {
APPModel bean = APPModel.parseStringToBean(szAPPModel, APPModel.class);
WinBoLLModel bean = WinBoLLModel.parseStringToBean(szWinBoLLModel, WinBoLLModel.class);
if (bean != null) {
String szAppPackageName = bean.getAppPackageName();
LogUtils.d(TAG, String.format("szAppPackageName %s", szAppPackageName));
@ -71,7 +72,7 @@ public class APPNewsWidget extends AppWidgetProvider {
String appName = AppUtils.getAppNameByPackageName(context, szAppPackageName);
LogUtils.d(TAG, String.format("appName %s", appName));
WinBollNewsBean winBollNewsBean = new WinBollNewsBean(appName);
WinBoLLNewsBean winBollNewsBean = new WinBoLLNewsBean(appName);
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
String currentTime = sdf.format(new Date());
StringBuilder sbLine = new StringBuilder();
@ -81,7 +82,7 @@ public class APPNewsWidget extends AppWidgetProvider {
sbLine.append(appName);
winBollNewsBean.setMessage(sbLine.toString());
addWinBollNewsBean(context, winBollNewsBean);
addWinBoLLNewsBean(context, winBollNewsBean);
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
int[] appWidgetIds = appWidgetManager.getAppWidgetIds(new ComponentName(context, APPNewsWidget.class));
@ -99,24 +100,24 @@ public class APPNewsWidget extends AppWidgetProvider {
//
// 加入新报告信息
//
public synchronized static void addWinBollNewsBean(Context context, WinBollNewsBean bean) {
initWinBollNewsBeanList(context);
_WinBollNewsBeanList.add(0, bean);
public synchronized static void addWinBoLLNewsBean(Context context, WinBoLLNewsBean bean) {
initWinBoLLNewsBeanList(context);
_WinBoLLNewsBeanList.add(0, bean);
// 控制记录总数
while (_WinBollNewsBeanList.size() > _MAX_PAGES * _OnePageLinesCount) {
_WinBollNewsBeanList.remove(_WinBollNewsBeanList.size() - 1);
while (_WinBoLLNewsBeanList.size() > _MAX_PAGES * _OnePageLinesCount) {
_WinBoLLNewsBeanList.remove(_WinBoLLNewsBeanList.size() - 1);
}
WinBollNewsBean.saveBeanList(context, _WinBollNewsBeanList, WinBollNewsBean.class);
WinBoLLNewsBean.saveBeanList(context, _WinBoLLNewsBeanList, WinBoLLNewsBean.class);
}
synchronized static void initWinBollNewsBeanList(Context context) {
if (_WinBollNewsBeanList == null) {
_WinBollNewsBeanList = new ArrayList<WinBollNewsBean>();
WinBollNewsBean.loadBeanList(context, _WinBollNewsBeanList, WinBollNewsBean.class);
synchronized static void initWinBoLLNewsBeanList(Context context) {
if (_WinBoLLNewsBeanList == null) {
_WinBoLLNewsBeanList = new ArrayList<WinBoLLNewsBean>();
WinBoLLNewsBean.loadBeanList(context, _WinBoLLNewsBeanList, WinBoLLNewsBean.class);
}
if (_WinBollNewsBeanList == null) {
_WinBollNewsBeanList = new ArrayList<WinBollNewsBean>();
WinBollNewsBean.saveBeanList(context, _WinBollNewsBeanList, WinBollNewsBean.class);
if (_WinBoLLNewsBeanList == null) {
_WinBoLLNewsBeanList = new ArrayList<WinBoLLNewsBean>();
WinBoLLNewsBean.saveBeanList(context, _WinBoLLNewsBeanList, WinBoLLNewsBean.class);
}
}
@ -141,11 +142,11 @@ public class APPNewsWidget extends AppWidgetProvider {
public static String getMessage() {
ArrayList<String> msgTemp = new ArrayList<String>();
if (_WinBollNewsBeanList != null) {
if (_WinBoLLNewsBeanList != null) {
int start = _OnePageLinesCount * _CurrentPageIndex;
start = _WinBollNewsBeanList.size() > start ? start : _WinBollNewsBeanList.size() - 1;
for (int i = start, j = 0; i < _WinBollNewsBeanList.size() && j < _OnePageLinesCount && start > -1; i++, j++) {
msgTemp.add(_WinBollNewsBeanList.get(i).getMessage());
start = _WinBoLLNewsBeanList.size() > start ? start : _WinBoLLNewsBeanList.size() - 1;
for (int i = start, j = 0; i < _WinBoLLNewsBeanList.size() && j < _OnePageLinesCount && start > -1; i++, j++) {
msgTemp.add(_WinBoLLNewsBeanList.get(i).getMessage());
}
String message = String.join("\n", msgTemp);
return message;
@ -154,7 +155,7 @@ public class APPNewsWidget extends AppWidgetProvider {
}
public static void prePage(Context context) {
if (_WinBollNewsBeanList != null) {
if (_WinBoLLNewsBeanList != null) {
if (_CurrentPageIndex > 0) {
_CurrentPageIndex = _CurrentPageIndex - 1;
}
@ -165,8 +166,8 @@ public class APPNewsWidget extends AppWidgetProvider {
}
public static void nextPage(Context context) {
if (_WinBollNewsBeanList != null) {
if ((_CurrentPageIndex + 1) * _OnePageLinesCount < _WinBollNewsBeanList.size()) {
if (_WinBoLLNewsBeanList != null) {
if ((_CurrentPageIndex + 1) * _OnePageLinesCount < _WinBoLLNewsBeanList.size()) {
_CurrentPageIndex = _CurrentPageIndex + 1;
}
Intent intentWidget = new Intent(context, APPNewsWidget.class);
@ -176,11 +177,11 @@ public class APPNewsWidget extends AppWidgetProvider {
}
String getPageInfo() {
if (_WinBollNewsBeanList == null) {
if (_WinBoLLNewsBeanList == null) {
return "0/0";
}
int leftCount = _WinBollNewsBeanList.size() % _OnePageLinesCount;
int currentPageCount = _WinBollNewsBeanList.size() / _OnePageLinesCount + (leftCount == 0 ?0: 1);
int leftCount = _WinBoLLNewsBeanList.size() % _OnePageLinesCount;
int currentPageCount = _WinBoLLNewsBeanList.size() / _OnePageLinesCount + (leftCount == 0 ?0: 1);
return String.format("%d/%d", _CurrentPageIndex + 1, currentPageCount);
}
}

View File

@ -5,7 +5,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.Toolbar
<android.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/toolbar"/>
@ -32,13 +32,19 @@
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello, WinBoll!"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Android版本10的代号是“Q”API级别是29。 Android 10开始谷歌不再公开使用甜品作为版本代号但内部仍保留了大量与“Q”相关的元素。Android 10本身并没有严格对应某个特定的Java版本但在开发Android 10应用时通常可以使用Java 8或更高版本。 Java 8为Android开发带来了诸如Lambda表达式、方法引用等新特性能提高开发效率和代码可读性与Android 10开发适配良好。Java 9及更高版本也可用于Android 10开发能使用一些新的语言特性和API但可能需要注意兼容性和配置问题。"/>
android:text="安卓R对应的是Android 11其API级别是30。以下是Android 11中一些重要的API相关特性
\n- 隐私保护方面:引入单次授权,让用户可以选择授予应用对位置信息、麦克风和摄像头的临时访问权限。还增加了数据访问审核功能,能让开发者深入了解应用在何处访问私密数据。
\n- 系统功能方面提供了ControlsProviderService API用于向连接的外部设备提供控件这些控件显示于Android电源菜单中的设备控件下。媒体控件也得到更新显示于快捷设置旁来自多个应用的会话排列在一个可滑动的轮播界面中。
\n- 硬件支持方面提供了一些API以支持瀑布屏通过将窗口布局属性  layoutInDisplayCutoutMode  设为  LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS 可允许窗口延伸到屏幕各个边缘上的刘海和瀑布区域。对于合页式屏幕配置的设备提供了具有  TYPE_HINGE_ANGLE  的新传感器以及新的  SensorEvent 用于监控合页角度。
\n- 安全方面:对生物识别身份验证机制进行了更新,引入了  BiometricManager.Authenticators  接口,定义了  BIOMETRIC_STRONG  BIOMETRIC_WEAK  DEVICE_CREDENTIAL  等身份验证类型。还在  BiometricPrompt  类中提供了对“每次使用时进行身份验证”密钥的更多支持。
\n- 性能和质量方面支持无线调试通过Android调试桥adb从工作站以无线方式部署和调试应用避免了常见的USB连接问题。"/>
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
@ -211,6 +217,5 @@
</LinearLayout>
</ScrollView>
</LinearLayout>

View File

@ -6,7 +6,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.Toolbar
<android.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/toolbar"/>

View File

@ -6,7 +6,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.Toolbar
<android.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/toolbar"/>

View File

@ -18,7 +18,7 @@
android:layout_height="wrap_content"
android:id="@+id/tv_title"
android:layout_weight="1.0"
android:text="WinBollNews"
android:text="WinBoLLNews"
android:textStyle="bold"
android:textSize="16sp"/>

View File

@ -1,6 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/item_home"
android:title="HOME"
android:icon="@drawable/ic_winboll"/>
<item
android:id="@+id/item_yun"
android:title="YUN"
android:icon="@drawable/ic_winboll"/>
<item
android:id="@+id/item_logon"
android:title="Logon"
android:icon="@drawable/ic_winboll"/>
<item
android:id="@+id/item_log"
android:title="LOG"
android:icon="@drawable/ic_winboll_log"/>
</menu>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">AppBase</string>
<string name="tileservice_name">WinBoll</string>
<string name="tileservice_name">WinBoLL</string>
</resources>

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<!-- 允许访问 winboll.cc 及其子域名(原配置) -->
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">winboll.cc</domain>
</domain-config>
<!-- **新增:允许访问 IP 地址 10.8.0.250** -->
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="false">10.8.0.250</domain> <!-- 不包含子域名 -->
</domain-config>
</network-security-config>

View File

@ -19,17 +19,17 @@ def genVersionName(def versionName){
android {
compileSdkVersion 32
buildToolsVersion "33.0.3"
buildToolsVersion "32.0.0"
defaultConfig {
applicationId "cc.winboll.studio.apputils"
minSdkVersion 21
minSdkVersion 26
targetSdkVersion 30
versionCode 1
// versionName
// build.gradle stageCount=0
// Gradle编译环境下合起来的 versionName "${versionName}.0"
versionName "9.2"
versionName "15.8"
if(true) {
versionName = genVersionName("${versionName}")
}
@ -41,15 +41,9 @@ android {
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}
}
dependencies {
api project(':libapputils')
api 'cc.winboll.studio:libappbase:1.0.3'
api fileTree(dir: 'libs', include: ['*.jar'])
}

View File

@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle
#Sat Jan 18 13:03:10 HKT 2025
stageCount=2
#Tue Jun 03 15:05:48 HKT 2025
stageCount=5
libraryProject=libapputils
baseVersion=9.2
publishVersion=9.2.1
baseVersion=15.8
publishVersion=15.8.4
buildCount=0
baseBetaVersion=9.2.2
baseBetaVersion=15.8.5

View File

@ -8,7 +8,7 @@
android:allowBackup="true"
android:icon="@drawable/ic_winboll"
android:label="@string/app_name"
android:theme="@style/WinBoll.SupportThemeNoActionBar"
android:theme="@style/MyUtilsTheme"
android:supportsRtl="true">
<activity
@ -27,9 +27,13 @@
</activity>
<activity android:name=".TestWinBollActivity"/>
<activity android:name=".TestStringToQRCodeViewActivity"/>
<activity android:name=".TestStringToQrCodeViewActivity"/>
<activity android:name=".TestBBMorseCodeActivity"/>
<activity android:name=".AssetsHtmlActivity"/>
<activity android:name=".QRCodeDecodeActivity"/>
</application>

View File

@ -1,31 +1,20 @@
package cc.winboll.studio.apputils;
/**
* @Author ZhanGSKen@QQ.COM
* @Author ZhanGSKen<zhangsken@188.com>
* @Date 2024/12/08 15:10:51
* @Describe 全局应用类
*/
import android.view.Gravity;
import cc.winboll.studio.libapputils.app.WinBollApplication;
import com.hjq.toast.ToastUtils;
import com.hjq.toast.style.WhiteToastStyle;
import android.app.Application;
import android.content.Context;
import cc.winboll.studio.libappbase.GlobalApplication;
public class App extends WinBollApplication {
public class App extends GlobalApplication {
public static final String TAG = "App";
public static final String _ACTION_DEBUGVIEW = WinBollApplication.class.getName() + "_ACTION_DEBUGVIEW";
@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

@ -1,32 +1,31 @@
package cc.winboll.studio.libapputils.activities;
package cc.winboll.studio.apputils;
/**
* @Author ZhanGSKen@QQ.COM
* @Author ZhanGSKen<zhangsken@188.com>
* @Date 2025/01/03 11:02:49
* @Describe 一个可以浏览随 APP 附带的 Html 文档的窗口
*/
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import androidx.appcompat.widget.Toolbar;
import cc.winboll.studio.libapputils.R;
import cc.winboll.studio.libapputils.app.WinBollActivity;
import cc.winboll.studio.libapputils.log.LogUtils;
import cc.winboll.studio.libapputils.view.SimpleWebView;
import com.hjq.toast.ToastUtils;
import android.widget.Toolbar;
import cc.winboll.studio.apputils.R;
import cc.winboll.studio.libappbase.LogUtils;
import cc.winboll.studio.libappbase.winboll.IWinBoLLActivity;
import cc.winboll.studio.libapputils.views.SimpleWebView;
import java.io.IOException;
import java.io.InputStream;
import android.os.PersistableBundle;
public class AssetsHtmlActivity extends WinBollActivity {
public class AssetsHtmlActivity extends WinBoLLActivity implements IWinBoLLActivity {
public static final String TAG = "AssetsHtmlActivity";
public static final String EXTRA_HTMLFILENAME = "EXTRA_HTMLFILENAME";
String mszHelpIndexFilePath = "";
Uri mszHelpIndexFileUri;
Context mContext;
@ -34,27 +33,16 @@ public class AssetsHtmlActivity extends WinBollActivity {
// Assets 文件夹里的 Html 文件的名称
String mszHtmlFileName;
@Override
public Activity getActivity() {
return this;
}
@Override
public String getTag() {
return TAG;
}
@Override
protected boolean isEnableDisplayHomeAsUp() {
return true;
}
@Override
protected boolean isAddWinBollToolBar() {
return false;
}
@Override
protected Toolbar initToolBar() {
return findViewById(R.id.activityassetshtmlToolbar1);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
return super.onCreateOptionsMenu(menu);
@ -63,7 +51,7 @@ public class AssetsHtmlActivity extends WinBollActivity {
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// if (item.getItemId() == android.R.id.home) {
// WinBollActivityManager.getInstance(this).finish(this);
// WinBoLLActivityManager.getInstance(this).finish(this);
// }
return super.onOptionsItemSelected(item);
}
@ -73,6 +61,10 @@ public class AssetsHtmlActivity extends WinBollActivity {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_assetshtml);
// 初始化工具栏
Toolbar mToolbar = findViewById(R.id.toolbar);
setActionBar(mToolbar);
mszHtmlFileName = "index.html";
Intent intent = getIntent();
@ -81,7 +73,7 @@ public class AssetsHtmlActivity extends WinBollActivity {
if (szTemp != null && !szTemp.trim().equals("")) {
mszHtmlFileName = szTemp.trim();
}
ToastUtils.show(mszHtmlFileName);
//ToastUtils.show(mszHtmlFileName);
}
// 与其他应用分享 html 帮助
@ -107,13 +99,6 @@ public class AssetsHtmlActivity extends WinBollActivity {
// myWebView.loadUrl(mszHelpIndexFileUri.toString());
}
@Override
public void onPostCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
super.onPostCreate(savedInstanceState, persistentState);
setSubTitle(mszHtmlFileName);
//setSubTitle(TAG);
}
//
void initWebViewFromAssets(String szHtmlFileName) {
try {

View File

@ -1,87 +1,159 @@
package cc.winboll.studio.apputils;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.net.Uri;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;
import androidx.appcompat.widget.Toolbar;
import cc.winboll.studio.libapputils.activities.AssetsHtmlActivity;
import cc.winboll.studio.libapputils.activities.QRCodeDecodeActivity;
import cc.winboll.studio.libapputils.app.WinBollActivity;
import cc.winboll.studio.libapputils.app.WinBollActivityManager;
import cc.winboll.studio.libapputils.log.LogActivity;
import cc.winboll.studio.libapputils.log.LogUtils;
import com.hjq.toast.ToastUtils;
import android.widget.Toolbar;
import cc.winboll.studio.apputils.R;
import cc.winboll.studio.libappbase.LogUtils;
import cc.winboll.studio.libappbase.LogView;
import cc.winboll.studio.libappbase.utils.ToastUtils;
import java.util.List;
import java.util.Set;
final public class MainActivity extends WinBollActivity {
final public class MainActivity extends Activity {
public static final String TAG = "MainActivity";
public static final int REQUEST_QRCODEDECODE_ACTIVITY = 0;
@Override
protected boolean isEnableDisplayHomeAsUp() {
return false;
}
Toolbar mToolbar;
LogView mLogView;
//
// @Override
// public Activity getActivity() {
// return this;
// }
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Toolbar toolbar = findViewById(R.id.activitymainToolbar1);
//setActionBar(toolbar);
mLogView = findViewById(R.id.logview);
mLogView.start();
// 初始化工具栏
mToolbar = findViewById(R.id.toolbar);
setActionBar(mToolbar);
// if (isEnableDisplayHomeAsUp()) {
// // 显示后退按钮
// getActionBar().setDisplayHomeAsUpEnabled(true);
// }
// getActionBar().setSubtitle(getTag());
checkResolveActivity();
archiveInstance();
// 接收并处理 Intent 数据函数 Intent 处理接收就直接返回
//if (prosessIntents(getIntent())) return;
// 以下正常创建主窗口
// // 设置 WinBoll 应用 UI 类型
// WinBollApplication.setWinBollUI_TYPE(WinBollApplication.WinBollUI_TYPE.Aplication);
// //ToastUtils.show("WinBollUI_TYPE " + WinBollApplication.getWinBollUI_TYPE());
// // 设置 WinBoLL 应用 UI 类型
// WinBoLLApplication.setWinBoLLUI_TYPE(WinBoLLApplication.WinBoLLUI_TYPE.Aplication);
// //ToastUtils.show("WinBoLLUI_TYPE " + WinBoLLApplication.getWinBoLLUI_TYPE());
// LogUtils.d(TAG, "BuildConfig.DEBUG : " + Boolean.toString(BuildConfig.DEBUG));
}
boolean checkResolveActivity() {
PackageManager packageManager = getPackageManager();
//Intent intent = new Intent("your_action_here");
Intent intent = getIntent();
if (intent != null) {
List<ResolveInfo> resolveInfoList = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
if (resolveInfoList.size() > 0) {
// 传入的Intent action在Activity清单的intent-filter的action节点里有定义
if (intent.getAction() != null) {
// if (intent.getAction().equals(cc.winboll.studio.libapputils.intent.action.DEBUGVIEW)) {
// App.setIsDebug(true);
// //ToastUtils.show!("WinBoLLApplication.setIsDebug(true) by action : " + intent.getAction());
//
// }
}
return true;
} else {
// 传入的Intent action在Activity清单的intent-filter的action节点里没有定义
//ToastUtils.show("false : " + intent.getAction());
return false;
}
}
// action在清单文件中没有声明
ToastUtils.show("false");
return false;
}
void archiveInstance() {
Intent intent = getIntent();
StringBuilder sb = new StringBuilder("\n### Archive Instance ###\n");
if (intent != null) {
ComponentName componentName = intent.getComponent();
if (componentName != null) {
String packageName = componentName.getPackageName();
//Log.d("AppStarter", "启动本应用的应用包名: " + packageName);
sb.append("启动本应用的应用包名: \n" + packageName);
}
sb.append("\nImplicit Intent Tracker \n接收到的 Intent 动作: \n" + intent.getAction());
Set<String> categories = intent.getCategories();
if (categories != null) {
for (String category : categories) {
sb.append("\n接收到的 Intent 类别 :\n" + category);
}
}
Uri data = intent.getData();
if (data != null) {
sb.append("\n接收到的 Intent 数据 :\n" + data.toString());
}
} else {
sb.append("Intent is null.");
}
sb.append("\n\n");
LogUtils.d(TAG, sb.toString());
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
// 缓存当前 activity
//WinBoLLActivityManager.getInstance(this).add(this);
}
@Override
public void onDestroy() {
//WinBoLLActivityManager.getInstance(this).registeRemove(this);
super.onDestroy();
}
public void onTestLogClick(View view) {
LogUtils.d(TAG, "onTestLogClick");
Toast.makeText(getApplication(), "onTestLogClick", Toast.LENGTH_SHORT).show();
}
public void onLogUtilsClick(View view) {
Intent intent = new Intent(this, LogActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
intent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
startActivity(intent);
}
public void onTestLogActivity(View view) {
// Intent intent = new Intent(this, LogActivity.class);
// intent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
// intent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
// startActivity(intent);
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
// setSubTitle("");
//WinBoLLActivityManager.getInstance().printAvtivityListInfo();
//WinBoLLActivityManager.getInstance(this).startWinBoLLActivity(this, LogActivity.class);
}
@Override
public void onBackPressed() {
// exit();
}
// void exit() {
// YesNoAlertDialog.OnDialogResultListener listener = new YesNoAlertDialog.OnDialogResultListener(){
//
// @Override
// public void onYes() {
// WinBollActivityManager.getInstance(getApplicationContext()).finishAll();
// }
//
// @Override
// public void onNo() {
// }
// };
// YesNoAlertDialog.show(this, "[ " + getString(R.string.app_name) + " ]", "Exit(Yes/No).\nIs close all activity?", listener);
// }
//
// 处理传入的 Intent 数据
//
@ -93,7 +165,7 @@ final public class MainActivity extends WinBollActivity {
// if (intent.getAction().equals(StringToQrCodeView.ACTION_UNITTEST_QRCODE)) {
// try {
// WinBollActivity clazzActivity = UnitTestActivity.class.newInstance();
// WinBoLLActivity clazzActivity = UnitTestActivity.class.newInstance();
// String tag = clazzActivity.getTag();
// LogUtils.d(TAG, "String tag = clazzActivity.getTag(); tag " + tag);
// Intent subIntent = new Intent(this, UnitTestActivity.class);
@ -111,8 +183,8 @@ final public class MainActivity extends WinBollActivity {
// }
//
// Files.copy(Paths.get(szSrcPath), Paths.get(file.getPath()));
// //startWinBollActivity(subIntent, tag);
// WinBollActivityManager.getInstance(this).startWinBollActivity(this, subIntent, UnitTestActivity.class);
// //startWinBoLLActivity(subIntent, tag);
// WinBoLLActivityManager.getInstance(this).startWinBoLLActivity(this, subIntent, UnitTestActivity.class);
// } catch (IllegalAccessException | InstantiationException | IOException e) {
// LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
// // 函数处理异常返回失败
@ -125,58 +197,107 @@ final public class MainActivity extends WinBollActivity {
return true;
}
@Override
public String getTag() {
return TAG;
}
@Override
protected boolean isAddWinBollToolBar() {
return true;
}
@Override
protected Toolbar initToolBar() {
return findViewById(R.id.activitymainToolbar1);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//ToastUtils.show("onCreateOptionsMenu");
getMenuInflater().inflate(R.menu.toolbar_main, menu);
// if (isAddWinBoLLToolBar()) {
// //ToastUtils.show("mIWinBoLL.isAddWinBoLLToolBar()");
// getMenuInflater().inflate(R.menu.toolbar_winboll_shared_main, menu);
// }
if (App.isDebuging()) {
getMenuInflater().inflate(R.menu.toolbar_studio_debug, menu);
}
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.item_testwinboll) {
WinBollActivityManager.getInstance(this).startWinBollActivity(this, TestWinBollActivity.class);
} else if (item.getItemId() == R.id.item_teststringtoqrcodeview) {
WinBollActivityManager.getInstance(this).startWinBollActivity(this, TestStringToQrCodeViewActivity.class);
if (item.getItemId() == R.id.item_exit) {
//exit();
return true;
// } else if (item.getItemId() == R.id.item_teststringtoqrcodeview) {
// Intent intent = new Intent(this, TestStringToQRCodeViewActivity.class);
// startActivityForResult(intent, REQUEST_QRCODEDECODE_ACTIVITY);
// //WinBoLLActivityManager.getInstance(this).startWinBoLLActivity(this, TestStringToQrCodeViewActivity.class);
} else if (item.getItemId() == R.id.item_testqrcodedecodeactivity) {
Intent intent = new Intent(this, QRCodeDecodeActivity.class);
startActivityForResult(intent, REQUEST_QRCODEDECODE_ACTIVITY);
} else if (item.getItemId() == R.id.item_testcrashreport) {
for (int i = Integer.MIN_VALUE; i < Integer.MAX_VALUE; i++) {
getString(i);
}
return true;
} else if (item.getItemId() == R.id.item_log) {
//WinBoLLActivityManager.getInstance(this).startWinBoLLActivity(this, LogActivity.class);
return true;
} else if (item.getItemId() == R.id.item_exitdebug) {
//AboutView.setApp2NormalMode(this);
return true;
} else if (item.getItemId() == android.R.id.home) {
//WinBoLLActivityManager.getInstance(this).finish(this);
return true;
}
return super.onOptionsItemSelected(item);
}
public void onTestJavascriptHtmlActivity(View view) {
// void exit() {
// YesNoAlertDialog.OnDialogResultListener listener = new YesNoAlertDialog.OnDialogResultListener(){
//
// @Override
// public void onYes() {
// //WinBoLLActivityManager.getInstance(getApplicationContext()).finishAll();
// }
//
// @Override
// public void onNo() {
// }
// };
// YesNoAlertDialog.show(this, "[ " + getString(R.string.app_name) + " ]", "Exit(Yes/No).\nIs close all activity?", listener);
//
// }
@Override
public void onBackPressed() {
// if (WinBoLLActivityManager.getInstance(getApplicationContext()).isFirstIWinBoLLActivity(this)) {
// exit();
// } else {
// WinBoLLActivityManager.getInstance(this).finish(this);
// super.onBackPressed();
// }
}
public void onTestAssetsHtmlActivity(View view) {
Intent intent = new Intent(this, AssetsHtmlActivity.class);
intent.putExtra(AssetsHtmlActivity.EXTRA_HTMLFILENAME, "javascript_test.html");
WinBollActivityManager.getInstance(this).startWinBollActivity(this, intent, AssetsHtmlActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
intent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
startActivity(intent);
//WinBoLLActivityManager.getInstance(this).startWinBoLLActivity(this, intent, AssetsHtmlActivity.class);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case REQUEST_QRCODEDECODE_ACTIVITY : {
String text = data.getStringExtra(QRCodeDecodeActivity.EXTRA_RESULT);
ToastUtils.show(text);
break;
}
default : {
ToastUtils.show(String.format("%d, %d", requestCode, resultCode));
super.onActivityResult(requestCode, resultCode, data);
}
}
protected void onResume() {
super.onResume();
mLogView.start();
}
/*@Override
protected void onActivithyResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case REQUEST_QRCODEDECODE_ACTIVITY : {
if (data != null) {
String text = data.getStringExtra(QRCodeDecodeActivity.EXTRA_RESULT);
ToastUtils.show(text);
}
break;
}
default : {
//ToastUtils.show(String.format("%d, %d", requestCode, resultCode));
super.prosessActivityResult(requestCode, resultCode, data);
}
}
}*/
}

View File

@ -1,72 +1,59 @@
package cc.winboll.studio.libapputils.activities;
package cc.winboll.studio.apputils;
/**
* @Author ZhanGSKen@QQ.COM
* @Author ZhanGSKen<zhangsken@188.com>
* @Date 2025/01/18 10:32:21
* @Describe 二维码扫码解码窗口
*/
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.widget.TextView;
import androidx.appcompat.widget.Toolbar;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import cc.winboll.studio.libapputils.R;
import cc.winboll.studio.libapputils.app.WinBollActivity;
import android.widget.Toolbar;
import cc.winboll.studio.apputils.R;
import com.google.zxing.ResultPoint;
import com.journeyapps.barcodescanner.BarcodeCallback;
import com.journeyapps.barcodescanner.BarcodeResult;
import com.journeyapps.barcodescanner.DecoratedBarcodeView;
import java.util.List;
public class QRCodeDecodeActivity extends WinBollActivity {
public class QRCodeDecodeActivity extends Activity {
public static final String TAG = "QRCodeDecodeActivity";
public static final String EXTRA_RESULT = "EXTRA_RESULT";
public static final String EXTRA_RESULT = "EXTRA_RESULT";
private static final int REQUEST_CAMERA_PERMISSION = 1;
TextView resultTextView;
DecoratedBarcodeView barcodeView;
@Override
public String getTag() {
return TAG;
}
@Override
protected boolean isEnableDisplayHomeAsUp() {
return true;
}
@Override
protected boolean isAddWinBollToolBar() {
return false;
}
@Override
protected Toolbar initToolBar() {
return findViewById(R.id.activityqrcodedecodeToolbar1);
}
// @Override
// public Activity getActivity() {
// return this;
// }
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_qrcodedecode);
resultTextView = findViewById(R.id.activityqrcodedecodeTextView1);
// 初始化工具栏
// Toolbar mToolbar = findViewById(R.id.toolbar);
// setActionBar(mToolbar);
//resultTextView = findViewById(R.id.activityqrcodedecodeTextView1);
barcodeView = findViewById(R.id.activityqrcodedecodeDecoratedBarcodeView1);
// 请求相机权限
if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.CAMERA)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
new String[]{android.Manifest.permission.CAMERA},
REQUEST_CAMERA_PERMISSION);
} else {
startScanning();
}
// if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.CAMERA)
// != PackageManager.PERMISSION_GRANTED) {
// ActivityCompat.requestPermissions(this,
// new String[]{android.Manifest.permission.CAMERA},
// REQUEST_CAMERA_PERMISSION);
// } else {
// startScanning();
// }
startScanning();
}
private void startScanning() {

View File

@ -0,0 +1,20 @@
package cc.winboll.studio.apputils;
/**
* @Author ZhanGSKen<zhangsken@188.com>
* @Date 2025/03/23 16:14:45
*/
import android.app.Activity;
import android.os.Bundle;
public class TestBBMorseCodeActivity extends Activity {
public static final String TAG = "TestBBMorseCodeActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_testbbmorsecode);
}
}

View File

@ -1,50 +0,0 @@
package cc.winboll.studio.apputils;
import android.os.Bundle;
import androidx.appcompat.widget.Toolbar;
import cc.winboll.studio.libapputils.app.WinBollActivity;
import cc.winboll.studio.libapputils.view.StringToQrCodeView;
/**
* @Author ZhanGSKen@QQ.COM
* @Date 2025/01/17 19:50:46
*/
public class TestStringToQrCodeViewActivity extends WinBollActivity {
public static final String TAG = "TestStringToQrCodeViewActivity";
StringToQrCodeView mStringToQrCodeView;
@Override
public String getTag() {
return TAG;
}
@Override
protected Toolbar initToolBar() {
return findViewById(R.id.activityteststringtoqrcodeviewToolbar1);
}
@Override
protected boolean isEnableDisplayHomeAsUp() {
return true;
}
@Override
protected boolean isAddWinBollToolBar() {
return true;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_teststringtoqrcodeview);
mStringToQrCodeView = findViewById(R.id.activityteststringtoqrcodeviewStringToQrCodeView1);
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
setSubTitle(TAG);
}
}

View File

@ -1,52 +0,0 @@
package cc.winboll.studio.apputils;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import androidx.appcompat.widget.Toolbar;
import cc.winboll.studio.libapputils.activities.AssetsHtmlActivity;
import cc.winboll.studio.libapputils.app.WinBollActivity;
import cc.winboll.studio.libapputils.app.WinBollActivityManager;
/**
* @Author ZhanGSKen@QQ.COM
* @Date 2025/01/13 15:09:46
*/
public class TestWinBollActivity extends WinBollActivity {
public static final String TAG = "TestWinBollActivity";
@Override
public String getTag() {
return TAG;
}
@Override
protected Toolbar initToolBar() {
return findViewById(R.id.activitytestwinbollToolbar1);
}
@Override
protected boolean isEnableDisplayHomeAsUp() {
return true;
}
@Override
protected boolean isAddWinBollToolBar() {
return true;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_testwinboll);
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
setSubTitle(TAG);
}
}

View File

@ -0,0 +1,24 @@
package cc.winboll.studio.apputils;
/**
* @Author ZhanGSKen<zhangsken@188.com>
* @Date 2025/05/13 11:15
* @Describe WinBoLLActivity
*/
import android.app.Activity;
import cc.winboll.studio.libappbase.winboll.IWinBoLLActivity;
public class WinBoLLActivity extends Activity implements IWinBoLLActivity {
public static final String TAG = "WinBoLLActivity";
@Override
public Activity getActivity() {
return this;
}
@Override
public String getTag() {
return TAG;
}
}

View File

@ -0,0 +1,21 @@
<?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">
<android.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/toolbar"/>
<cc.winboll.studio.libapputils.views.SimpleWebView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1.0"
android:id="@+id/activityassetshtmlSimpleWebView1"/>
</LinearLayout>

View File

@ -5,10 +5,10 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.appcompat.widget.Toolbar
<android.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/activitymainToolbar1"/>
android:id="@+id/toolbar"/>
<LinearLayout
xmlns:app="http://schemas.android.com/apk/res-auto"
@ -27,32 +27,39 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TestLog"
android:textAllCaps="false"
android:textAllCaps="false"
android:onClick="onTestLogClick"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="LogUtils"
android:text="TestLogActivity"
android:textAllCaps="false"
android:onClick="onLogUtilsClick"/>
android:onClick="onTestLogActivity"/>
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="right">
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="right">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAllCaps="false"
android:text="Test Javascript Html Activity"
android:onClick="onTestJavascriptHtmlActivity"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAllCaps="false"
android:text="TestAssetsHtmlActivity"
android:onClick="onTestAssetsHtmlActivity"/>
</LinearLayout>
</LinearLayout>
<cc.winboll.studio.libappbase.LogView
android:layout_width="match_parent"
android:layout_height="0dp"
android:text="Button"
android:id="@+id/logview"
android:layout_weight="1.0"/>
</LinearLayout>

View File

@ -0,0 +1,20 @@
<?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">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="QRCodeDecodeActivity"/>
<com.journeyapps.barcodescanner.DecoratedBarcodeView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/activityqrcodedecodeDecoratedBarcodeView1"/>
</LinearLayout>

View File

@ -5,11 +5,5 @@
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Text"
android:id="@+id/page_text"/>
</LinearLayout>
</LinearLayout>

View File

@ -6,10 +6,10 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.appcompat.widget.Toolbar
<android.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/activityteststringtoqrcodeviewToolbar1"/>
android:id="@+id/toolbar"/>
<LinearLayout
android:orientation="vertical"
@ -17,7 +17,7 @@
android:layout_height="0dp"
android:layout_weight="1.0">
<cc.winboll.studio.libapputils.view.StringToQrCodeView
<cc.winboll.studio.libapputils.views.StringToQrCodeView
android:layout_width="300dp"
android:layout_height="300dp"
android:id="@+id/activityteststringtoqrcodeviewStringToQrCodeView1"/>

View File

@ -7,7 +7,7 @@
android:layout_height="match_parent"
android:background="#FF36B5B3">
<androidx.appcompat.widget.Toolbar
<android.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/activitytestwinbollToolbar1"/>

View File

@ -1,32 +0,0 @@
<?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="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/shape_gradient"
android:gravity="center"
android:orientation="vertical"
android:padding="10dp">
<LinearLayout
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@drawable/ic_launcher"/>
<TextView
android:id="@android:id/message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:textColor="#FF000000"
android:textSize="16sp"/>
</LinearLayout>
</LinearLayout>

View File

@ -1,16 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/item_testwinboll"
android:title="TestWinBollActivity"
app:showAsAction="ifRoom"/>
<item
android:id="@+id/item_teststringtoqrcodeview"
android:title="TestStringToQrCodeViewActivity"
app:showAsAction="ifRoom"/>
android:title="TestStringToQRCodeViewActivity"/>
<item
android:id="@+id/item_testqrcodedecodeactivity"
android:title="TestQRCodeDecodeActivity"
app:showAsAction="ifRoom"/>
android:title="TestQRCodeDecodeActivity"/>
<item
android:id="@+id/item_testcrashreport"
android:title="TestCrashReportActivity"/>
</menu>

View File

@ -1,10 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- WinBoll 默认方案 -->
<!-- WinBoLL 默认方案 -->
<color name="colorPrimary">#FF196ABC</color>
<color name="colorPrimaryDark">#FF002B57</color>
<color name="colorAccent">#FF80BFFF</color>
<color name="colorToastFrame">#FFA9A9A9</color>
<color name="colorToastShadow">#FF000000</color>
<color name="colorToastBackgroung">#FFFFFFFF</color>
</resources>

View File

@ -1,3 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="MyUtilsTheme" parent="UtilsTheme">
<item name="attrColorPrimary">@color/colorPrimary</item>
<item name="themeGlobalCrashActivity">@style/MyUtilsGlobalCrashActivityTheme</item>
</style>
<style name="MyUtilsGlobalCrashActivityTheme" parent="@android:style/Theme.DeviceDefault.Light.NoActionBar">
<item name="colorTittle">#FFF2F2F2</item>
<item name="colorTittleBackgound">#FF55ABF8</item>
<item name="colorText">#FF55ABF8</item>
<item name="colorTextBackgound">#FFF2F2F2</item>
</style>
</resources>

View File

@ -19,7 +19,7 @@ def genVersionName(def versionName){
android {
compileSdkVersion 32
buildToolsVersion "33.0.3"
buildToolsVersion "32.0.0"
defaultConfig {
applicationId "cc.winboll.studio.autoinstaller"
@ -29,7 +29,7 @@ android {
// versionName
// .winboll/winbollBuildProps.properties stageCount=0
// Gradle编译环境下合起来的 versionName "${versionName}.0"
versionName "5.0"
versionName "15.2"
if(true) {
versionName = genVersionName("${versionName}")
}
@ -41,30 +41,33 @@ android {
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
}
}
dependencies {
api 'cc.winboll.studio:winboll-shared:1.1.0'
api 'io.github.medyo:android-about-page:2.0.0'
api 'com.github.getActivity:ToastUtils:10.5'
api 'com.jcraft:jsch:0.1.55'
api 'org.jsoup:jsoup:1.13.1'
api 'com.squareup.okhttp3:okhttp:4.4.1'
api 'androidx.appcompat:appcompat:1.0.0'
api 'androidx.fragment:fragment:1.0.0'
api 'com.google.android.material:material:1.0.0'
api 'androidx.vectordrawable:vectordrawable-animated:1.0.0'
api 'androidx.lifecycle:lifecycle-livedata:1.0.0'
//api 'cc.winboll.studio:libaes:6.3.2'
//api 'cc.winboll.studio:libapputils:8.3.8'
api fileTree(dir: 'libs', include: ['*.jar'])
api 'cc.winboll.studio:libaes:15.6.0'
api 'cc.winboll.studio:libapputils:15.3.4'
api 'cc.winboll.studio:libappbase:15.7.6'
// 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'
}

View File

@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle
#Thu Jan 02 02:39:56 HKT 2025
stageCount=4
#Tue Jun 24 09:54:47 HKT 2025
stageCount=3
libraryProject=
baseVersion=5.0
publishVersion=5.0.3
baseVersion=15.2
publishVersion=15.2.2
buildCount=0
baseBetaVersion=5.0.4
baseBetaVersion=15.2.3

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