Compare commits
4 Commits
f93b6047a8
...
powerbell-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6cce9c4d3f | ||
|
|
df18c34976 | ||
|
|
22ca83b5b7 | ||
|
|
98233ce148 |
3
.gitmodules
vendored
3
.gitmodules
vendored
@@ -1,6 +1,3 @@
|
|||||||
[submodule "libjc/jcc/libs"]
|
[submodule "libjc/jcc/libs"]
|
||||||
path = libjc/jcc/libs
|
path = libjc/jcc/libs
|
||||||
url = https://gitea.winboll.cc/Studio/APP_libjc_jcc_libs.git
|
url = https://gitea.winboll.cc/Studio/APP_libjc_jcc_libs.git
|
||||||
[submodule "keystore"]
|
|
||||||
path = keystore
|
|
||||||
url = https://gitea.winboll.cc/Studio/keystore.git
|
|
||||||
|
|||||||
3
.winboll/bashChangeToBetaKeyStore.sh
Normal file
3
.winboll/bashChangeToBetaKeyStore.sh
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/usr/bash
|
||||||
|
## Change Back To Beta KeyStore in keystore module.
|
||||||
|
cd keystore;git reset --hard f5bc75ff45fcb8894b5bd3f49b91bdd8fe3c317e;cd ..
|
||||||
3
.winboll/bashChangeToStageMGKeyStore.sh
Normal file
3
.winboll/bashChangeToStageMGKeyStore.sh
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/usr/bash
|
||||||
|
## Change Back To StageMG KeyStore in keystore module.
|
||||||
|
cd keystore;git reset --hard d22519b11253f85f495400b01b6373e9657defb4;cd ..
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
#!/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
|
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
# 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/)
|
|
||||||
|
|
||||||
#### 参考文档
|
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
#Created by .winboll/winboll_app_build.gradle
|
#Created by .winboll/winboll_app_build.gradle
|
||||||
#Tue Jun 03 19:17:05 HKT 2025
|
#Tue May 13 11:22:39 HKT 2025
|
||||||
stageCount=2
|
stageCount=1
|
||||||
libraryProject=libaes
|
libraryProject=libaes
|
||||||
baseVersion=15.8
|
baseVersion=15.8
|
||||||
publishVersion=15.8.1
|
publishVersion=15.8.0
|
||||||
buildCount=0
|
buildCount=0
|
||||||
baseBetaVersion=15.8.2
|
baseBetaVersion=15.8.1
|
||||||
|
|||||||
@@ -79,11 +79,11 @@ public class AboutActivity extends AppCompatActivity implements IWinBoLLActivity
|
|||||||
appInfo.setAppName("AES");
|
appInfo.setAppName("AES");
|
||||||
appInfo.setAppIcon(cc.winboll.studio.libaes.R.drawable.ic_winboll);
|
appInfo.setAppIcon(cc.winboll.studio.libaes.R.drawable.ic_winboll);
|
||||||
appInfo.setAppDescription("AES Description");
|
appInfo.setAppDescription("AES Description");
|
||||||
appInfo.setAppGitName("APPBase");
|
appInfo.setAppGitName("APP");
|
||||||
appInfo.setAppGitOwner("Studio");
|
appInfo.setAppGitOwner("Studio");
|
||||||
appInfo.setAppGitAPPBranch(szBranchName);
|
appInfo.setAppGitAPPBranch(szBranchName);
|
||||||
appInfo.setAppGitAPPSubProjectFolder(szBranchName);
|
appInfo.setAppGitAPPSubProjectFolder(szBranchName);
|
||||||
appInfo.setAppHomePage("https://discuz.winboll.cc/forum.php?mod=viewthread&tid=2&fromuid=1");
|
appInfo.setAppHomePage("https://www.winboll.cc/studio/details.php?app=AES");
|
||||||
appInfo.setAppAPKName("AES");
|
appInfo.setAppAPKName("AES");
|
||||||
appInfo.setAppAPKFolderName("AES");
|
appInfo.setAppAPKFolderName("AES");
|
||||||
//appInfo.setIsAddDebugTools(false);
|
//appInfo.setIsAddDebugTools(false);
|
||||||
|
|||||||
@@ -67,6 +67,6 @@ dependencies {
|
|||||||
// https://mvnrepository.com/artifact/com.android.support/recyclerview-v7
|
// https://mvnrepository.com/artifact/com.android.support/recyclerview-v7
|
||||||
api 'com.android.support:recyclerview-v7:28.0.0'
|
api 'com.android.support:recyclerview-v7:28.0.0'
|
||||||
|
|
||||||
api 'cc.winboll.studio:libapputils:15.8.2'
|
api 'cc.winboll.studio:libapputils:15.8.1'
|
||||||
api 'cc.winboll.studio:libappbase:15.8.2'
|
api 'cc.winboll.studio:libappbase:15.8.1'
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
#Created by .winboll/winboll_app_build.gradle
|
#Created by .winboll/winboll_app_build.gradle
|
||||||
#Sun Jun 01 08:02:46 GMT 2025
|
#Mon May 19 21:45:28 GMT 2025
|
||||||
stageCount=0
|
stageCount=0
|
||||||
libraryProject=
|
libraryProject=
|
||||||
baseVersion=15.0
|
baseVersion=15.0
|
||||||
publishVersion=15.0.0
|
publishVersion=15.0.0
|
||||||
buildCount=27
|
buildCount=25
|
||||||
baseBetaVersion=15.0.1
|
baseBetaVersion=15.0.1
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
#Created by .winboll/winboll_app_build.gradle
|
#Created by .winboll/winboll_app_build.gradle
|
||||||
#Tue Jun 03 13:40:08 HKT 2025
|
#Tue May 20 03:28:00 GMT 2025
|
||||||
stageCount=5
|
stageCount=2
|
||||||
libraryProject=libappbase
|
libraryProject=libappbase
|
||||||
baseVersion=15.8
|
baseVersion=15.8
|
||||||
publishVersion=15.8.4
|
publishVersion=15.8.1
|
||||||
buildCount=0
|
buildCount=1
|
||||||
baseBetaVersion=15.8.5
|
baseBetaVersion=15.8.2
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ public class MainActivity extends WinBoLLActivity implements IWinBoLLActivity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Toolbar mToolbar;
|
Toolbar mToolbar;
|
||||||
|
LogView mLogView;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
@@ -52,11 +53,14 @@ public class MainActivity extends WinBoLLActivity implements IWinBoLLActivity {
|
|||||||
|
|
||||||
CheckBox cbIsDebugMode = findViewById(R.id.activitymainCheckBox1);
|
CheckBox cbIsDebugMode = findViewById(R.id.activitymainCheckBox1);
|
||||||
cbIsDebugMode.setChecked(GlobalApplication.isDebuging());
|
cbIsDebugMode.setChecked(GlobalApplication.isDebuging());
|
||||||
|
mLogView = findViewById(R.id.logview);
|
||||||
|
mLogView.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onCreateOptionsMenu(Menu menu) {
|
public boolean onCreateOptionsMenu(Menu menu) {
|
||||||
getMenuInflater().inflate(R.menu.toolbar_main, menu);
|
getMenuInflater().inflate(R.menu.toolbar_main, menu);
|
||||||
|
getMenuInflater().inflate(R.menu.toolbar_appbase, menu);
|
||||||
return super.onCreateOptionsMenu(menu);
|
return super.onCreateOptionsMenu(menu);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -172,7 +176,8 @@ public class MainActivity extends WinBoLLActivity implements IWinBoLLActivity {
|
|||||||
@Override
|
@Override
|
||||||
protected void onResume() {
|
protected void onResume() {
|
||||||
super.onResume();
|
super.onResume();
|
||||||
|
mLogView.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -66,11 +66,16 @@ public class New2Activity extends WinBoLLActivity implements IWinBoLLActivity {
|
|||||||
@Override
|
@Override
|
||||||
public boolean onCreateOptionsMenu(Menu menu) {
|
public boolean onCreateOptionsMenu(Menu menu) {
|
||||||
getMenuInflater().inflate(R.menu.toolbar_main, menu);
|
getMenuInflater().inflate(R.menu.toolbar_main, menu);
|
||||||
|
getMenuInflater().inflate(R.menu.toolbar_appbase, menu);
|
||||||
return super.onCreateOptionsMenu(menu);
|
return super.onCreateOptionsMenu(menu);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onOptionsItemSelected(MenuItem item) {
|
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。
|
// 在switch语句中处理每个ID,并在处理完后返回true,未处理的情况返回false。
|
||||||
return super.onOptionsItemSelected(item);
|
return super.onOptionsItemSelected(item);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -64,11 +64,16 @@ public class NewActivity extends WinBoLLActivity implements IWinBoLLActivity {
|
|||||||
@Override
|
@Override
|
||||||
public boolean onCreateOptionsMenu(Menu menu) {
|
public boolean onCreateOptionsMenu(Menu menu) {
|
||||||
getMenuInflater().inflate(R.menu.toolbar_main, menu);
|
getMenuInflater().inflate(R.menu.toolbar_main, menu);
|
||||||
|
getMenuInflater().inflate(R.menu.toolbar_appbase, menu);
|
||||||
return super.onCreateOptionsMenu(menu);
|
return super.onCreateOptionsMenu(menu);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onOptionsItemSelected(MenuItem item) {
|
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。
|
// 在switch语句中处理每个ID,并在处理完后返回true,未处理的情况返回false。
|
||||||
return super.onOptionsItemSelected(item);
|
return super.onOptionsItemSelected(item);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,12 +6,6 @@ package cc.winboll.studio.appbase.activities;
|
|||||||
* @Describe WinBoLL 窗口基础类
|
* @Describe WinBoLL 窗口基础类
|
||||||
*/
|
*/
|
||||||
import android.app.Activity;
|
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;
|
import cc.winboll.studio.libappbase.winboll.IWinBoLLActivity;
|
||||||
|
|
||||||
public class WinBoLLActivity extends Activity implements IWinBoLLActivity {
|
public class WinBoLLActivity extends Activity implements IWinBoLLActivity {
|
||||||
@@ -27,35 +21,4 @@ public class WinBoLLActivity extends Activity implements IWinBoLLActivity {
|
|||||||
public String getTag() {
|
public String getTag() {
|
||||||
return TAG;
|
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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,19 +32,13 @@
|
|||||||
<TextView
|
<TextView
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="安卓R对应的是Android 11,其API级别是30。以下是Android 11中一些重要的API相关特性:
|
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,但可能需要注意兼容性和配置问题。"/>
|
||||||
|
|
||||||
\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
|
<HorizontalScrollView
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content">
|
android:layout_height="wrap_content">
|
||||||
@@ -217,5 +211,11 @@
|
|||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
</ScrollView>
|
</ScrollView>
|
||||||
|
|
||||||
|
<cc.winboll.studio.libappbase.LogView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="300dp"
|
||||||
|
android:id="@+id/logview"/>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
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_log"
|
|
||||||
android:title="LOG"
|
|
||||||
android:icon="@drawable/ic_winboll_log"/>
|
|
||||||
</menu>
|
</menu>
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
#Created by .winboll/winboll_app_build.gradle
|
#Created by .winboll/winboll_app_build.gradle
|
||||||
#Tue Jun 03 15:05:48 HKT 2025
|
#Tue May 13 11:18:09 HKT 2025
|
||||||
stageCount=5
|
stageCount=2
|
||||||
libraryProject=libapputils
|
libraryProject=libapputils
|
||||||
baseVersion=15.8
|
baseVersion=15.8
|
||||||
publishVersion=15.8.4
|
publishVersion=15.8.1
|
||||||
buildCount=0
|
buildCount=0
|
||||||
baseBetaVersion=15.8.5
|
baseBetaVersion=15.8.2
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ allprojects {
|
|||||||
bashCommitAppPublishBuildFlagInfoFilePath = ".winboll/bashCommitAppPublishBuildFlagInfo.sh"
|
bashCommitAppPublishBuildFlagInfoFilePath = ".winboll/bashCommitAppPublishBuildFlagInfo.sh"
|
||||||
|
|
||||||
winbollFilePath = "winboll.properties"
|
winbollFilePath = "winboll.properties"
|
||||||
keyPropsFilePath = "appkey.keystore"
|
keyPropsFilePath = "current.keystore"
|
||||||
// 定义 lint 输出文件
|
// 定义 lint 输出文件
|
||||||
lintXmlReportFilePath = "build/reports/lint-results.xml"
|
lintXmlReportFilePath = "build/reports/lint-results.xml"
|
||||||
lintHTMLReportFilePath = "build/reports/lint-results.html"
|
lintHTMLReportFilePath = "build/reports/lint-results.html"
|
||||||
|
|||||||
4
current.keystore-demo
Normal file
4
current.keystore-demo
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
keyAlias=WinBoLL.CC
|
||||||
|
keyPassword=androiddebugkey
|
||||||
|
storeFile=../WinBoLL.CC.jks
|
||||||
|
storePassword=androiddebugkey
|
||||||
1
keystore
1
keystore
Submodule keystore deleted from e7f70226c1
@@ -21,8 +21,8 @@ android {
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
api fileTree(dir: 'libs', include: ['*.jar'])
|
api fileTree(dir: 'libs', include: ['*.jar'])
|
||||||
api 'cc.winboll.studio:libapputils:15.8.2'
|
api 'cc.winboll.studio:libapputils:15.8.1'
|
||||||
api 'cc.winboll.studio:libappbase:15.8.2'
|
api 'cc.winboll.studio:libappbase:15.8.0'
|
||||||
|
|
||||||
// 吐司类库
|
// 吐司类库
|
||||||
api 'com.github.getActivity:ToastUtils:10.5'
|
api 'com.github.getActivity:ToastUtils:10.5'
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
#Created by .winboll/winboll_app_build.gradle
|
#Created by .winboll/winboll_app_build.gradle
|
||||||
#Tue Jun 03 19:16:41 HKT 2025
|
#Tue May 13 11:22:23 HKT 2025
|
||||||
stageCount=2
|
stageCount=1
|
||||||
libraryProject=libaes
|
libraryProject=libaes
|
||||||
baseVersion=15.8
|
baseVersion=15.8
|
||||||
publishVersion=15.8.1
|
publishVersion=15.8.0
|
||||||
buildCount=0
|
buildCount=0
|
||||||
baseBetaVersion=15.8.2
|
baseBetaVersion=15.8.1
|
||||||
|
|||||||
@@ -115,8 +115,7 @@ public class AboutView extends LinearLayout {
|
|||||||
LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
|
LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
|
||||||
}
|
}
|
||||||
mszCurrentAppPackageName = mszAppAPKName + "_" + mszAppVersionName + ".apk";
|
mszCurrentAppPackageName = mszAppAPKName + "_" + mszAppVersionName + ".apk";
|
||||||
mszHomePage = mAPPInfo.getAppHomePage();
|
mszHomePage = mszWinBoLLServerHost + "/studio/details.php?app=" + mszAppAPKFolderName;
|
||||||
//mszHomePage = mszWinBoLLServerHost + "/studio/details.php?app=" + mszAppAPKFolderName;
|
|
||||||
if (mAPPInfo.getAppGitAPPBranch().equals("")) {
|
if (mAPPInfo.getAppGitAPPBranch().equals("")) {
|
||||||
mszGitea = "https://gitea.winboll.cc/" + mAPPInfo.getAppGitOwner() + "/" + mszAppGitName;
|
mszGitea = "https://gitea.winboll.cc/" + mAPPInfo.getAppGitOwner() + "/" + mszAppGitName;
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
#Created by .winboll/winboll_app_build.gradle
|
#Created by .winboll/winboll_app_build.gradle
|
||||||
#Tue Jun 03 13:40:01 HKT 2025
|
#Tue May 20 03:28:00 GMT 2025
|
||||||
stageCount=5
|
stageCount=2
|
||||||
libraryProject=libappbase
|
libraryProject=libappbase
|
||||||
baseVersion=15.8
|
baseVersion=15.8
|
||||||
publishVersion=15.8.4
|
publishVersion=15.8.1
|
||||||
buildCount=0
|
buildCount=1
|
||||||
baseBetaVersion=15.8.5
|
baseBetaVersion=15.8.2
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ public class GlobalApplication extends Application {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static WinBoLLActivityManager getWinBoLLActivityManager() {
|
public static WinBoLLActivityManager getWinBoLLActivityManager() {
|
||||||
return WinBoLLActivityManager.getInstance();
|
return WinBoLLActivityManager.getInstance(_GlobalApplication);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -22,9 +22,7 @@ import java.util.Map;
|
|||||||
|
|
||||||
public class WinBoLLActivityManager {
|
public class WinBoLLActivityManager {
|
||||||
|
|
||||||
public static final String TAG = "WinBoLLActivityManager";
|
public static final String TAG = "IWinBoLLActivityManager";
|
||||||
|
|
||||||
public static final String EXTRA_TAG = "EXTRA_TAG";
|
|
||||||
|
|
||||||
|
|
||||||
public enum WinBoLLUI_TYPE { Aplication, Service }
|
public enum WinBoLLUI_TYPE { Aplication, Service }
|
||||||
@@ -41,14 +39,14 @@ public class WinBoLLActivityManager {
|
|||||||
public static WinBoLLUI_TYPE getWinBoLLUI_TYPE() {
|
public static WinBoLLUI_TYPE getWinBoLLUI_TYPE() {
|
||||||
return _WinBoLLUI_TYPE;
|
return _WinBoLLUI_TYPE;
|
||||||
}
|
}
|
||||||
WinBoLLActivityManager() {
|
WinBoLLActivityManager(Context context) {
|
||||||
mContext = GlobalApplication.getInstance();
|
mContext = context;
|
||||||
mActivityListMap = new HashMap<String, IWinBoLLActivity>();
|
mActivityListMap = new HashMap<String, IWinBoLLActivity>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static synchronized WinBoLLActivityManager getInstance() {
|
public static synchronized WinBoLLActivityManager getInstance(Context context) {
|
||||||
if (_mIWinBoLLActivityManager == null) {
|
if (_mIWinBoLLActivityManager == null) {
|
||||||
_mIWinBoLLActivityManager = new WinBoLLActivityManager();
|
_mIWinBoLLActivityManager = new WinBoLLActivityManager(context);
|
||||||
}
|
}
|
||||||
return _mIWinBoLLActivityManager;
|
return _mIWinBoLLActivityManager;
|
||||||
}
|
}
|
||||||
@@ -57,7 +55,7 @@ public class WinBoLLActivityManager {
|
|||||||
* 把Activity添加到管理中
|
* 把Activity添加到管理中
|
||||||
*/
|
*/
|
||||||
public <T extends IWinBoLLActivity> void add(T activity) {
|
public <T extends IWinBoLLActivity> void add(T activity) {
|
||||||
if (isActivityActive(activity.getTag())) {
|
if (isActive(activity.getTag())) {
|
||||||
LogUtils.d(TAG, String.format("add(...) %s is active.", activity.getTag()));
|
LogUtils.d(TAG, String.format("add(...) %s is active.", activity.getTag()));
|
||||||
} else {
|
} else {
|
||||||
mActivityListMap.put(activity.getTag(), activity);
|
mActivityListMap.put(activity.getTag(), activity);
|
||||||
@@ -72,107 +70,106 @@ public class WinBoLLActivityManager {
|
|||||||
// intent.putExtra 函数 "tag" 参数为 activity.getTag()
|
// intent.putExtra 函数 "tag" 参数为 activity.getTag()
|
||||||
//
|
//
|
||||||
public <T extends IWinBoLLActivity> void startWinBoLLActivity(Context context, Class<T> clazz) {
|
public <T extends IWinBoLLActivity> void startWinBoLLActivity(Context context, Class<T> clazz) {
|
||||||
// 如果窗口已存在就重启窗口
|
try {
|
||||||
if (!resumeActivity(clazz)) {
|
// 如果窗口已存在就重启窗口
|
||||||
|
String tag = clazz.newInstance().getTag();
|
||||||
|
if (isActive(tag)) {
|
||||||
|
resumeActivity(context, tag);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// 新建一个任务窗口
|
// 新建一个任务窗口
|
||||||
Intent intent = new Intent(context, clazz);
|
Intent intent = new Intent(context, clazz);
|
||||||
//打开多任务窗口 flags
|
//打开多任务窗口 flags
|
||||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
|
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
|
||||||
intent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
|
intent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
|
||||||
//intent.putExtra("tag", tag);
|
intent.putExtra("tag", tag);
|
||||||
context.startActivity(intent);
|
mContext.startActivity(intent);
|
||||||
|
} catch (InstantiationException | IllegalAccessException e) {
|
||||||
|
LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public <T extends IWinBoLLActivity> void startWinBoLLActivity(Context context, Intent intent, Class<T> clazz) {
|
public <T extends IWinBoLLActivity> void startWinBoLLActivity(Context context, Intent intent, Class<T> clazz) {
|
||||||
// 如果窗口已存在就重启窗口
|
try {
|
||||||
if (!resumeActivity(clazz)) {
|
// 如果窗口已存在就重启窗口
|
||||||
|
String tag = clazz.newInstance().getTag();
|
||||||
|
if (isActive(tag)) {
|
||||||
|
resumeActivity(context, tag);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// 新建一个任务窗口
|
// 新建一个任务窗口
|
||||||
//Intent intent = new Intent(context, clazz);
|
//Intent intent = new Intent(context, clazz);
|
||||||
//打开多任务窗口 flags
|
//打开多任务窗口 flags
|
||||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
|
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
|
||||||
intent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
|
intent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
|
||||||
//intent.putExtra("tag", tag);
|
intent.putExtra("tag", tag);
|
||||||
context.startActivity(intent);
|
mContext.startActivity(intent);
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public <T extends IWinBoLLActivity> void startLogActivity(Context context) {
|
|
||||||
// 如果窗口已存在就重启窗口
|
|
||||||
//if (!resumeActivity(LogActivity.class)) {
|
|
||||||
// 新建一个任务窗口
|
|
||||||
Intent intent = new Intent(context, LogActivity.class);
|
|
||||||
//打开多任务窗口 flags
|
|
||||||
// Define the bounds.
|
|
||||||
// Rect bounds = new Rect(0, 0, 800, 200);
|
|
||||||
// // Set the bounds as an activity option.
|
|
||||||
// ActivityOptions options = ActivityOptions.makeBasic();
|
|
||||||
// options.setLaunchBounds(bounds);
|
|
||||||
intent.addFlags(Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT);
|
|
||||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
|
||||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
|
|
||||||
intent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
|
|
||||||
|
|
||||||
//intent.putExtra(EXTRA_TAG, tag);
|
|
||||||
|
|
||||||
//context.startActivity(intent, options.toBundle());
|
|
||||||
context.startActivity(intent);
|
|
||||||
//}
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// 判断 tag 绑定的 Activity 是否已经创建
|
|
||||||
//
|
|
||||||
public boolean isActivityActive(String tag) {
|
|
||||||
return mActivityListMap.get(tag) != null;
|
|
||||||
}
|
|
||||||
|
|
||||||
Activity getActivityByTag(String tag) {
|
|
||||||
return (mActivityListMap.get(tag) == null) ?null: mActivityListMap.get(tag).getActivity();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// 找到tag 绑定的 BaseActivity ,通过 getTaskId() 移动到前台
|
|
||||||
//
|
|
||||||
public <T extends IWinBoLLActivity> boolean resumeActivity(Class<T> clazz) {
|
|
||||||
try {
|
|
||||||
Activity activity = getActivityByTag(clazz.newInstance().getTag());
|
|
||||||
if (activity != null) {
|
|
||||||
return resumeActivity(activity);
|
|
||||||
}
|
|
||||||
} catch (InstantiationException | IllegalAccessException e) {
|
} catch (InstantiationException | IllegalAccessException e) {
|
||||||
LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
|
LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
|
||||||
}
|
}
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
/**
|
||||||
// 找到tag 绑定的 BaseActivity ,通过 getTaskId() 移动到前台
|
* 判断 tag绑定的 MyActivity是否存在
|
||||||
//
|
*/
|
||||||
public <T extends IWinBoLLActivity> boolean resumeActivity(String tag) {
|
public boolean isActive(String tag) {
|
||||||
Activity activity = getActivityByTag(tag);
|
//printAvtivityListInfo();
|
||||||
if (activity != null) {
|
IWinBoLLActivity iWinBoLLActivity = getIWinBoLLActivity(tag);
|
||||||
return resumeActivity(activity);
|
if (iWinBoLLActivity != null) {
|
||||||
|
Activity activity = iWinBoLLActivity.getActivity();
|
||||||
|
if (activity != null) {
|
||||||
|
LogUtils.d(TAG, "isActive(...) activity != null tag " + tag);
|
||||||
|
//ToastUtils.show("activity != null tag " + tag);
|
||||||
|
//判断是否为 BaseActivity,如果已经销毁,则移除
|
||||||
|
if (activity.isFinishing() || activity.isDestroyed()) {
|
||||||
|
mActivityListMap.remove(iWinBoLLActivity.getTag());
|
||||||
|
//_mIWinBoLLActivityList.remove(activity);
|
||||||
|
LogUtils.d(TAG, String.format("isActive(...) remove activity.\ntag : %s", tag));
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
LogUtils.d(TAG, String.format("isActive(...) activity is exist.\ntag : %s", tag));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
IWinBoLLActivity getIWinBoLLActivity(String tag) {
|
||||||
// 找到tag 绑定的 BaseActivity ,通过 getTaskId() 移动到前台
|
return mActivityListMap.get(tag);
|
||||||
//
|
}
|
||||||
public <T extends IWinBoLLActivity> boolean resumeActivity(Activity activity) {
|
|
||||||
ActivityManager am = (ActivityManager) activity.getSystemService(Context.ACTIVITY_SERVICE);
|
/**
|
||||||
|
* 找到tag 绑定的 BaseActivity ,通过 getTaskId() 移动到前台
|
||||||
|
*/
|
||||||
|
public <T extends IWinBoLLActivity> void resumeActivity(Context context, String tag) {
|
||||||
|
LogUtils.d(TAG, "resumeActivty");
|
||||||
|
T iWinBoLLActivity = (T)getIWinBoLLActivity(tag);
|
||||||
|
LogUtils.d(TAG, "activity " + iWinBoLLActivity.getTag());
|
||||||
|
if (iWinBoLLActivity != null && iWinBoLLActivity.getActivity() != null && !iWinBoLLActivity.getActivity().isFinishing() && !iWinBoLLActivity.getActivity().isDestroyed()) {
|
||||||
|
resumeActivity(context, iWinBoLLActivity);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 找到tag 绑定的 BaseActivity ,通过 getTaskId() 移动到前台
|
||||||
|
*/
|
||||||
|
public <T extends IWinBoLLActivity> void resumeActivity(Context context, T activity) {
|
||||||
|
ActivityManager am = (ActivityManager) activity.getActivity().getSystemService(Context.ACTIVITY_SERVICE);
|
||||||
//返回启动它的根任务(home 或者 MainActivity)
|
//返回启动它的根任务(home 或者 MainActivity)
|
||||||
//Intent intent = new Intent(mContext, activity.getClass());
|
Intent intent = new Intent(context, activity.getClass());
|
||||||
//TaskStackBuilder stackBuilder = TaskStackBuilder.create(mContext);
|
TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
|
||||||
//stackBuilder.addNextIntentWithParentStack(intent);
|
stackBuilder.addNextIntentWithParentStack(intent);
|
||||||
//stackBuilder.startActivities();
|
stackBuilder.startActivities();
|
||||||
am.moveTaskToFront(activity.getTaskId(), ActivityManager.MOVE_TASK_NO_USER_ACTION);
|
//moveTaskToFront(YourTaskId, 0);
|
||||||
//ToastUtils.show("resumeActivity");
|
LogUtils.d(TAG, "am.moveTaskToFront");
|
||||||
return true;
|
//ToastUtils.show("resumeActivity am.moveTaskToFront");
|
||||||
|
am.moveTaskToFront(activity.getActivity().getTaskId(), ActivityManager.MOVE_TASK_NO_USER_ACTION);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -224,10 +221,10 @@ public class WinBoLLActivityManager {
|
|||||||
// ★:0 1 2 [3] 4 >> 2
|
// ★:0 1 2 [3] 4 >> 2
|
||||||
// ★:0 1 2 3 [4] >> 3
|
// ★:0 1 2 3 [4] >> 3
|
||||||
// ★:[0] >> 直接关闭当前窗口
|
// ★:[0] >> 直接关闭当前窗口
|
||||||
Activity preActivity = getPreActivity(iWinBoLLActivity);
|
IWinBoLLActivity preActivity = getPreActivity(iWinBoLLActivity);
|
||||||
iWinBoLLActivity.getActivity().finish();
|
iWinBoLLActivity.getActivity().finish();
|
||||||
if (preActivity != null) {
|
if (preActivity != null) {
|
||||||
resumeActivity(preActivity);
|
resumeActivity(mContext, preActivity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -236,7 +233,7 @@ public class WinBoLLActivityManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Activity getPreActivity(IWinBoLLActivity iWinBoLLActivity) {
|
IWinBoLLActivity getPreActivity(IWinBoLLActivity iWinBoLLActivity) {
|
||||||
try {
|
try {
|
||||||
boolean bingo = false;
|
boolean bingo = false;
|
||||||
IWinBoLLActivity preIWinBoLLActivity = null;
|
IWinBoLLActivity preIWinBoLLActivity = null;
|
||||||
@@ -250,7 +247,7 @@ public class WinBoLLActivityManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (bingo) {
|
if (bingo) {
|
||||||
return preIWinBoLLActivity.getActivity();
|
return preIWinBoLLActivity;
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
|
LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
|
||||||
|
|||||||
20
libappbase/src/main/res/menu/toolbar_appbase.xml
Normal file
20
libappbase/src/main/res/menu/toolbar_appbase.xml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item
|
||||||
|
android:id="@+id/item_minimal"
|
||||||
|
android:title="MINIMAL"
|
||||||
|
android:icon="@drawable/ic_winboll_point"/>
|
||||||
|
<item
|
||||||
|
android:id="@+id/item_about"
|
||||||
|
android:title="ABOUT"
|
||||||
|
android:icon="@drawable/ic_winboll_logo"/>
|
||||||
|
<item
|
||||||
|
android:id="@+id/item_help"
|
||||||
|
android:title="HELP"
|
||||||
|
android:icon="@drawable/ic_winboll_help"/>
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:id="@+id/item_log"
|
||||||
|
android:title="LOG"
|
||||||
|
android:icon="@drawable/ic_winboll_log"/>
|
||||||
|
</menu>
|
||||||
@@ -21,7 +21,7 @@ android {
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
api fileTree(dir: 'libs', include: ['*.jar'])
|
api fileTree(dir: 'libs', include: ['*.jar'])
|
||||||
api 'cc.winboll.studio:libappbase:15.8.2'
|
api 'cc.winboll.studio:libappbase:15.8.0'
|
||||||
|
|
||||||
// 二维码类库
|
// 二维码类库
|
||||||
api 'com.google.zxing:core:3.4.1'
|
api 'com.google.zxing:core:3.4.1'
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
#Created by .winboll/winboll_app_build.gradle
|
#Created by .winboll/winboll_app_build.gradle
|
||||||
#Tue Jun 03 15:05:42 HKT 2025
|
#Tue May 13 11:17:53 HKT 2025
|
||||||
stageCount=5
|
stageCount=2
|
||||||
libraryProject=libapputils
|
libraryProject=libapputils
|
||||||
baseVersion=15.8
|
baseVersion=15.8
|
||||||
publishVersion=15.8.4
|
publishVersion=15.8.1
|
||||||
buildCount=0
|
buildCount=0
|
||||||
baseBetaVersion=15.8.5
|
baseBetaVersion=15.8.2
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ android {
|
|||||||
// versionName 更新后需要手动设置
|
// versionName 更新后需要手动设置
|
||||||
// .winboll/winbollBuildProps.properties 文件的 stageCount=0
|
// .winboll/winbollBuildProps.properties 文件的 stageCount=0
|
||||||
// Gradle编译环境下合起来的 versionName 就是 "${versionName}.0"
|
// Gradle编译环境下合起来的 versionName 就是 "${versionName}.0"
|
||||||
versionName "15.3"
|
versionName "15.4"
|
||||||
if(true) {
|
if(true) {
|
||||||
versionName = genVersionName("${versionName}")
|
versionName = genVersionName("${versionName}")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
#Created by .winboll/winboll_app_build.gradle
|
#Created by .winboll/winboll_app_build.gradle
|
||||||
#Sat May 03 06:21:11 GMT 2025
|
#Thu May 29 09:43:37 HKT 2025
|
||||||
stageCount=1
|
stageCount=2
|
||||||
libraryProject=
|
libraryProject=
|
||||||
baseVersion=15.3
|
baseVersion=15.4
|
||||||
publishVersion=15.3.0
|
publishVersion=15.4.1
|
||||||
buildCount=5
|
buildCount=0
|
||||||
baseBetaVersion=15.3.1
|
baseBetaVersion=15.4.2
|
||||||
|
|||||||
Reference in New Issue
Block a user