Compare commits
	
		
			9 Commits
		
	
	
		
			jcndk
			...
			e4e9c31f02
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					e4e9c31f02 | ||
| 
						 | 
					a02a7efe43 | ||
| 
						 | 
					2220efd009 | ||
| 
						 | 
					0bc0fdf8c2 | ||
| 
						 | 
					6b7b07a6fd | ||
| 
						 | 
					8f3417818d | ||
| 
						 | 
					ca280c7334 | ||
| 
						 | 
					8172cf7b6f | ||
| 
						 | 
					8014f4149c | 
@@ -2,6 +2,11 @@
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
android {
 | 
			
		||||
	def winbollProps = new Properties()
 | 
			
		||||
    def winbollPropsFile = rootProject.file("${winbollFilePath}")
 | 
			
		||||
    assert(winbollPropsFile.exists())
 | 
			
		||||
    winbollProps.load(new FileInputStream(winbollPropsFile))
 | 
			
		||||
    
 | 
			
		||||
    // 读取秘钥配置文件
 | 
			
		||||
    //
 | 
			
		||||
    def keyProps = new Properties()
 | 
			
		||||
@@ -122,6 +127,7 @@ android {
 | 
			
		||||
                                    FileOutputStream fos = new FileOutputStream(winbollBuildPropsFile)
 | 
			
		||||
                                    winbollBuildProps.store(fos, "${winbollBuildPropsDesc}");
 | 
			
		||||
                                    fos.close();
 | 
			
		||||
									println "\n\n>>> Project build.properties saved.\n\n";
 | 
			
		||||
                                    
 | 
			
		||||
                                    if(winbollBuildProps['libraryProject'] != "") {
 | 
			
		||||
                                        // 如果应用 build.properties 文件设置了类库模块项目文件名
 | 
			
		||||
@@ -133,6 +139,8 @@ android {
 | 
			
		||||
                                        java.nio.file.Path targetFilePath = libraryProjectBuildPropsFile.toPath();
 | 
			
		||||
                                        // 使用copyTo()方法复制文件,如果目标文件存在会被覆盖,可选参数可以选择不覆盖
 | 
			
		||||
	                                    java.nio.file.Files.copy(sourceFilePath, targetFilePath, java.nio.file.StandardCopyOption.REPLACE_EXISTING);
 | 
			
		||||
										
 | 
			
		||||
										println "\n\n>>> Library Project build.properties saved.\n\n";
 | 
			
		||||
                                    }
 | 
			
		||||
                                }
 | 
			
		||||
                            }
 | 
			
		||||
@@ -229,20 +237,23 @@ android {
 | 
			
		||||
                                }
 | 
			
		||||
                            } //  if(variant.buildType.name == "release"){
 | 
			
		||||
                            
 | 
			
		||||
                            // 如果公共目录存在就拷贝到公共目录并重命名为app.apk
 | 
			
		||||
                            // 如果配置了APK额外输出路径,就复制一份拷贝到额外路径。
 | 
			
		||||
                            //
 | 
			
		||||
                            File outCommonDir = new File("/sdcard/AppProjects")
 | 
			
		||||
                            String commandAPKName = "app.apk"
 | 
			
		||||
                            if(outCommonDir.exists()) {
 | 
			
		||||
                                copy{
 | 
			
		||||
                                    from file.outputFile
 | 
			
		||||
                                    into outCommonDir
 | 
			
		||||
                                    rename {
 | 
			
		||||
                                        String fileName -> "${commandAPKName}"
 | 
			
		||||
							if(winbollProps['ExtraAPKOutputPath'] != null ) {
 | 
			
		||||
                                File apkFile = new File(winbollProps['ExtraAPKOutputPath'])
 | 
			
		||||
								File outCommonDir = apkFile.getParentFile();
 | 
			
		||||
                                String commandAPKName = apkFile.getName();
 | 
			
		||||
                                if(outCommonDir.exists()) {
 | 
			
		||||
                                    copy{
 | 
			
		||||
                                        from file.outputFile
 | 
			
		||||
                                        into outCommonDir
 | 
			
		||||
                                        rename {
 | 
			
		||||
                                            String fileName -> "${commandAPKName}"
 | 
			
		||||
                                        }
 | 
			
		||||
                                        println "Output APK (Common): " + outCommonDir.getAbsolutePath() + "/${commandAPKName}"
 | 
			
		||||
                                    }
 | 
			
		||||
                                    println "Output APK (Common): " + outCommonDir.getAbsolutePath() + "/${commandAPKName}"
 | 
			
		||||
                                }
 | 
			
		||||
                            }
 | 
			
		||||
						    }
 | 
			
		||||
                            
 | 
			
		||||
                        
 | 
			
		||||
                    }
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										14
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								README.md
									
									
									
									
									
								
							@@ -119,7 +119,7 @@
 | 
			
		||||
## ★. 项目 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 库登录用户信息。
 | 
			
		||||
## ☆. 类库型模块编译环境设置(可选),winboll.properties-demo 要复制为 winboll.properties,并按需要设置 WinBoLL Maven 库登录用户信息, 和 APK 文件额外输出路径。
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# ☆类库型项目编译方法
 | 
			
		||||
@@ -128,7 +128,8 @@
 | 
			
		||||
设置属性 libraryProject=<类库项目模块文件夹名称>
 | 
			
		||||
### 再编译测试项目
 | 
			
		||||
$ bash .winboll/bashPublishAPKAddTag.sh <应用项目模块文件夹名称>
 | 
			
		||||
#### 测试项目编译后,编译器会复制一份 APK 到以下路径:"/sdcard/WinBoLLStudio/APKs/<项目根目录名称>/tag/" 文件夹。
 | 
			
		||||
#### 测试项目编译后,编译器会复制一份 APK 到 路径:"/sdcard/WinBoLLStudio/APKs/<项目根目录名称>/tag/" 文件夹。
 | 
			
		||||
#### 若是 winboll.properties 文件的 [ExtraAPKOutputPath] 属性设置了路径。编译器也会复制一份 APK 到这个路径。
 | 
			
		||||
### 最后编译类库项目
 | 
			
		||||
$ bash .winboll/bashPublishLIBAddTag.sh <类库项目模块文件夹名称>
 | 
			
		||||
#### 类库模块编译命令执行后,编译器会发布到 WinBoLL Nexus Maven 库:Maven 库地址可以参阅根项目目录配置 build.gradle 文件。
 | 
			
		||||
@@ -136,4 +137,11 @@ $ bash .winboll/bashPublishLIBAddTag.sh <类库项目模块文件夹名称>
 | 
			
		||||
# ☆应用型项目编译方法
 | 
			
		||||
## 直接调用以下命令编译应用型项目
 | 
			
		||||
$ bash .winboll/bashPublishAPKAddTag.sh <应用项目模块文件夹名称>
 | 
			
		||||
#### 应用模块编译命令执行后,编译器会复制一份 APK 到以下路径:"/sdcard/WinBoLLStudio/APKs/<项目根目录名称>/tag/" 文件夹。
 | 
			
		||||
#### 应用模块编译命令执行后,编译器会复制一份 APK 到
 | 
			
		||||
#### 测试项目编译后,编译器会复制一份 APK 到 路径:"/sdcard/WinBoLLStudio/APKs/<项目根目录名称>/tag/" 文件夹。
 | 
			
		||||
#### 若是 winboll.properties 文件的 [ExtraAPKOutputPath] 属性设置了路径。编译器也会复制一份 APK 到这个路径。
 | 
			
		||||
 | 
			
		||||
# ☆应用调试编译方法
 | 
			
		||||
使用以下命令编译调试:
 | 
			
		||||
$ bash gradlew assembleBetaDebug
 | 
			
		||||
#### 若是 winboll.properties 文件的 [ExtraAPKOutputPath] 属性设置了路径。编译器也会复制一份 APK 到这个路径。
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,8 @@
 | 
			
		||||
#Created by .winboll/winboll_app_build.gradle
 | 
			
		||||
#Sun Aug 31 23:37:38 HKT 2025
 | 
			
		||||
#Mon Sep 15 18:05:08 HKT 2025
 | 
			
		||||
stageCount=6
 | 
			
		||||
libraryProject=libappbase
 | 
			
		||||
baseVersion=15.9
 | 
			
		||||
publishVersion=15.9.5
 | 
			
		||||
buildCount=0
 | 
			
		||||
buildCount=46
 | 
			
		||||
baseBetaVersion=15.9.6
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,9 @@
 | 
			
		||||
package cc.winboll.studio.appbase.activities;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @Author ZhanGSKen<zhangsken@qq.com>
 | 
			
		||||
 * @Author ZhanGSKen&豆包大模型<zhangsken@qq.com>
 | 
			
		||||
 * @Date 2025/03/25 05:04:22
 | 
			
		||||
 * @Describe
 | 
			
		||||
 */
 | 
			
		||||
import android.app.Activity;
 | 
			
		||||
import android.os.Bundle;
 | 
			
		||||
 
 | 
			
		||||
@@ -32,17 +32,11 @@
 | 
			
		||||
				<TextView
 | 
			
		||||
					android:layout_width="wrap_content"
 | 
			
		||||
					android:layout_height="wrap_content"
 | 
			
		||||
					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连接问题。"/>
 | 
			
		||||
					android:text="Android 11(内部代号 Red Velvet Cake)是谷歌于2020年9月8日正式发布的移动端操作系统,核心升级聚焦隐私安全强化、通话与通知体验优化、5G与折叠屏适配三大方向,为用户和开发者提供更安全、灵活的使用与开发环境。\n\n一、核心升级:隐私安全(最关键变化)\n\nAndroid 11进一步收紧应用权限管控,从“被动授权”转向“主动保护用户数据”,核心变化包括:\n\n- 一次性权限:首次申请定位、麦克风、相机等敏感权限时,新增“仅本次允许”选项,应用退出后权限自动失效,避免长期授权泄露数据。\n- 后台位置权限限制:应用需先获得“前台定位权限”,才能申请“后台定位”,且用户可单独关闭后台定位(此前需完全关闭定位权限),减少后台偷跑定位的情况。\n- 存储权限细分:将原“存储”权限拆分为“媒体文件”和“所有文件”,普通应用仅能访问媒体文件,需访问其他文件(如文档)时需单独申请“所有文件访问权限”,降低存储数据泄露风险。\n\n二、体验优化:通知与通话\n\n- 通知分类管理:通知栏新增“对话”“提醒”“无声”三大分类,微信、短信等实时对话会单独归为“对话”分类,支持置顶、标记未读,重要信息更易查找。\n- 通话与通知优先级优化:来电、闹钟等重要提醒会以“浮动窗口”形式显示(非全屏遮挡),不打断当前操作(如看视频、玩游戏),用户可快速选择接听/挂断。\n- 通知历史记录:新增“通知历史”功能,可查看过去24小时内被清除的通知,避免误删重要信息。\n\n三、开发者与硬件适配\n\n- 5G网络优化:新增5G网络状态API,支持应用识别“5G高速”“5G低延迟”等场景,例如视频App可自动切换高清画质,游戏App可优化网络传输策略。\n- 折叠屏适配:提供“折叠状态监听”“多窗口模式增强”等API,帮助开发者适配折叠屏设备,避免屏幕折叠/展开时界面错乱。\n- Scoped Storage(分区存储)强制启用:要求应用适配“分区存储”机制(Android 10为可选),应用默认只能访问自身专属目录和公共媒体目录,无法随意读写手机存储,提升系统安全性。\n\n四、其他实用功能\n\n- 电源菜单集成控制:长按电源键时,可直接显示智能家居控制(如灯光、空调),无需单独打开智能家居App。\n- 无线调试:支持通过Wi-Fi连接电脑进行ADB调试,无需USB线,方便开发者测试设备。\n- 屏幕录制升级:系统自带屏幕录制功能支持录制声音(包括麦克风声音),并可选择是否显示触控操作。\n\n综上,Android 11的核心定位是“安全与体验的精细化升级”,通过隐私权限的层层收紧保护用户数据,同时针对5G、折叠屏等新硬件做了前瞻性适配,是Android系统向“更安全、更智能”迭代的重要版本。"/>
 | 
			
		||||
				<TextView
 | 
			
		||||
					android:layout_width="wrap_content"
 | 
			
		||||
					android:layout_height="wrap_content"
 | 
			
		||||
					android:text="Edit TimeStamp: 20250915_180359_071"/>
 | 
			
		||||
                
 | 
			
		||||
                    
 | 
			
		||||
				<HorizontalScrollView
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								keystore
									
									
									
									
									
								
							
							
								
								
								
								
								
							
						
						
									
										2
									
								
								keystore
									
									
									
									
									
								
							 Submodule keystore updated: e7f70226c1...92e537fa12
									
								
							@@ -1,8 +1,8 @@
 | 
			
		||||
#Created by .winboll/winboll_app_build.gradle
 | 
			
		||||
#Mon Aug 18 03:56:26 HKT 2025
 | 
			
		||||
#Mon Sep 15 18:05:08 HKT 2025
 | 
			
		||||
stageCount=6
 | 
			
		||||
libraryProject=libappbase
 | 
			
		||||
baseVersion=15.9
 | 
			
		||||
publishVersion=15.9.5
 | 
			
		||||
buildCount=0
 | 
			
		||||
buildCount=46
 | 
			
		||||
baseBetaVersion=15.9.6
 | 
			
		||||
 
 | 
			
		||||
@@ -3,6 +3,9 @@
 | 
			
		||||
## library project to WinBoLL Nexus Maven Repository.
 | 
			
		||||
##
 | 
			
		||||
 | 
			
		||||
## WinBoLL Extra APK file Output Path
 | 
			
		||||
#ExtraAPKOutputPath=/sdcard/AppProjects/app.apk
 | 
			
		||||
 | 
			
		||||
## WinBoLL Nexus UserName
 | 
			
		||||
#Nexus.name=nexustestuser1
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user