Compare commits

...

15 Commits

Author SHA1 Message Date
bad38e37ae <libappbase>Library Release 15.15.23 2026-05-10 04:17:16 +08:00
08eb360dbd <appbase>APK 15.15.23 release Publish. 2026-05-10 04:07:17 +08:00
819018b149 fix: appbase 和 libappbase 模块 minSdkVersion 从 21 升级至 26
- appbase/build.gradle: minSdkVersion 21 → 26
- libappbase/build.gradle: minSdkVersion 21 → 26
2026-05-10 04:01:44 +08:00
6e6b262e86 feat(build): 升级 Gradle 构建脚本 Java 版本为 11
将 root build.gradle 中 JavaCompile 任务的 sourceCompatibility 和 targetCompatibility
从 VERSION_1_7 升级至 VERSION_11,与项目需求保持一致。
2026-05-10 03:54:30 +08:00
9665856b1b 简化应用启动窗口配置:移除分屏测试功能,MainActivity 设为唯一启动器
- 删除 MainActivityAlias 分屏窗口类及相关文件
- 移除 AndroidManifest 中的 MainActivityAlias activity 声明
- 从 activity_main.xml 移除分屏测试按钮
- 删除 MainActivity 中的 onSplitScreenMode() 方法
- 为 MainActivity 添加 LAUNCHER intent-filter,作为唯一启动主窗口
2026-05-10 03:50:12 +08:00
052bbce839 Merge branch 'winboll' into appbase 2026-05-10 03:15:46 +08:00
90102f4eea refactor(winboll): 重命名菜单项为 WinBoLLLibraryActivity 2026-05-10 03:06:43 +08:00
759a08cec9 更换类库窗口标识名称 2026-05-10 03:03:00 +08:00
42cc7a2822 feat(winboll): 添加 UnitTest 菜单项跳转到 LibraryActivity
- 在 UnitTest 菜单组添加 LibraryActivity 菜单项
- 实现 MainActivity 中菜单项点击事件处理
- 更新 library.xml 布局显示类全名标识
- buildCount 更新为 25
2026-05-10 02:55:37 +08:00
c9c95d6ab0 refactor(gradle): 强制项目使用Java 7语法并统一API适配范围
- build.gradle: subprojects Java版本从11降级为1.7
- libwinboll/build.gradle: minSdkVersion从21统一为26
- build.properties: 编译计数器自动递增(buildCount: 23→24)
2026-05-09 22:02:59 +08:00
bc9bd47daa 添加类库模块,便于调试类库编译配置。 2026-05-09 21:17:23 +08:00
4bec8c3e9e 忽略编译问题,暂缓新功能叠加。 2026-05-09 21:16:44 +08:00
e726c9d435 <libappbase>Library Release 15.15.22 2026-05-09 20:50:14 +08:00
5277913606 <appbase>APK 15.15.22 release Publish. 2026-05-09 20:49:55 +08:00
c1bd31df2f refactor(libappbase): 完全重构 LogUtils 日志工具类
- 重构目录结构,按功能模块化拆分初始化、私有工具、日志级别等方法
- 补全所有日志重载方法(Error/Warn/Info/Debug/Verbose)
- 优化日志文件裁剪逻辑,保留最新3MB内容
- 新增TAG自动扫描管理机制
- 替换所有内部 LogUtils 调用为 android.util.Log,避免递归嵌套
- 严格遵循 Java 7 语法规范(final 参数、传统 try-catch)
- 优化异常/堆栈格式化输出
2026-05-09 20:43:17 +08:00
29 changed files with 522 additions and 537 deletions

View File

@@ -24,7 +24,7 @@ android {
defaultConfig { defaultConfig {
applicationId "cc.winboll.studio.appbase" applicationId "cc.winboll.studio.appbase"
minSdkVersion 21 minSdkVersion 26
targetSdkVersion 30 targetSdkVersion 30
versionCode 1 versionCode 1
// versionName 更新后需要手动设置 // versionName 更新后需要手动设置

View File

@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle #Created by .winboll/winboll_app_build.gradle
#Tue Apr 28 17:08:30 HKT 2026 #Sun May 10 04:17:13 HKT 2026
stageCount=22 stageCount=24
libraryProject=libappbase libraryProject=libappbase
baseVersion=15.15 baseVersion=15.15
publishVersion=15.15.21 publishVersion=15.15.23
buildCount=0 buildCount=0
baseBetaVersion=15.15.22 baseBetaVersion=15.15.24

View File

@@ -19,28 +19,16 @@
android:launchMode="singleTop" android:launchMode="singleTop"
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"> android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation">
</activity>
<activity
android:name=".MainActivityAlias"
android:label="@string/app_name"
android:exported="true"
android:resizeableActivity="true"
android:launchMode="singleTop"
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN"/> <action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/> <category android:name="android.intent.category.LAUNCHER"/>
<category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.DEFAULT"/>
</intent-filter> </intent-filter>
</activity> </activity>
<activity <activity
android:name=".Main2Activity" android:name=".Main2Activity"
android:label="@string/app_name" android:label="@string/app_name"

View File

@@ -162,25 +162,7 @@ public class MainActivity extends Activity {
startActivity(aboutIntent); startActivity(aboutIntent);
} }
public void onSplitScreenMode(View view) {
LogUtils.d(TAG, "onSplitScreenMode() 分屏测试按钮已点击");
ToastUtils.show("分屏测试:已启动新窗口");
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
android.graphics.Rect bounds = new android.graphics.Rect();
getWindow().getDecorView().getDisplay().getRectSize(bounds);
int height = bounds.height();
int width = bounds.width();
bounds.set(0, 0, width, height / 2);
LogUtils.d(TAG, "onSplitScreenMode() 分屏窗口范围: " + bounds);
android.content.Intent intent = new android.content.Intent(this, MainActivityAlias.class);
intent.setFlags(android.content.Intent.FLAG_ACTIVITY_NEW_TASK);
LogUtils.d(TAG, "onSplitScreenMode() 准备启动MainActivityAlias");
android.app.ActivityOptions options = android.app.ActivityOptions.makeBasic();
options.setLaunchBounds(bounds);
startActivity(intent, options.toBundle());
LogUtils.d(TAG, "onSplitScreenMode() MainActivityAlias已启动");
}
}
public void onMultiInstance(View view) { public void onMultiInstance(View view) {
LogUtils.d(TAG, "onMultiInstance() 多开窗口按钮已点击"); LogUtils.d(TAG, "onMultiInstance() 多开窗口按钮已点击");

View File

@@ -1,17 +0,0 @@
package cc.winboll.studio.appbase;
import android.os.Bundle;
import android.view.View;
import android.widget.Toolbar;
import cc.winboll.studio.appbase.R;
public class MainActivityAlias extends MainActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.toolbar);
setActionBar(toolbar);
}
}

View File

@@ -83,17 +83,7 @@
android:onClick="onToastUtilsTest" android:onClick="onToastUtilsTest"
android:layout_margin="10dp"/> android:layout_margin="10dp"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="分屏测试"
android:textSize="16sp"
android:textColor="@android:color/white"
android:background="#81C7F5"
android:paddingVertical="12dp"
android:layout_marginHorizontal="24dp"
android:onClick="onSplitScreenMode"
android:layout_margin="10dp"/>
<Button <Button
android:layout_width="match_parent" android:layout_width="match_parent"

View File

@@ -98,7 +98,6 @@ allprojects {
options.compilerArgs << "-parameters" options.compilerArgs << "-parameters"
sourceCompatibility = JavaVersion.VERSION_11 sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11
// 可选:确保编码一致
options.encoding = "UTF-8" options.encoding = "UTF-8"
} }
} }

View File

@@ -9,7 +9,7 @@ android {
buildToolsVersion "30.0.3" buildToolsVersion "30.0.3"
defaultConfig { defaultConfig {
minSdkVersion 21 minSdkVersion 26
targetSdkVersion 30 targetSdkVersion 30
} }
buildTypes { buildTypes {

View File

@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle #Created by .winboll/winboll_app_build.gradle
#Tue Apr 28 17:08:04 HKT 2026 #Sun May 10 04:07:17 HKT 2026
stageCount=22 stageCount=24
libraryProject=libappbase libraryProject=libappbase
baseVersion=15.15 baseVersion=15.15
publishVersion=15.15.21 publishVersion=15.15.23
buildCount=0 buildCount=0
baseBetaVersion=15.15.22 baseBetaVersion=15.15.24

1
libwinboll/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
/build

38
libwinboll/build.gradle Normal file
View File

@@ -0,0 +1,38 @@
apply plugin: 'com.android.library'
apply plugin: 'maven-publish'
apply from: '../.winboll/winboll_lib_build.gradle'
apply from: '../.winboll/winboll_lint_build.gradle'
android {
// 适配MIUI12
compileSdkVersion 30
buildToolsVersion "30.0.3"
defaultConfig {
minSdkVersion 26
targetSdkVersion 30
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
// 网络连接类库
api 'com.squareup.okhttp3:okhttp:4.4.1'
// Gson
api 'com.google.code.gson:gson:2.8.9'
// Html 解析
api 'org.jsoup:jsoup:1.13.1'
// 添加JSch依赖SFTP核心com.jcraft:jsch:0.1.54
api 'com.jcraft:jsch:0.1.54'
// WinBoLL库 nexus.winboll.cc 地址
api 'cc.winboll.studio:libaes:15.15.2'
api 'cc.winboll.studio:libappbase:15.15.11'
api fileTree(dir: 'libs', include: ['*.jar'])
}

View File

@@ -0,0 +1,8 @@
#Created by .winboll/winboll_app_build.gradle
#Sat May 09 19:01:46 GMT 2026
stageCount=27
libraryProject=libwinboll
baseVersion=15.11
publishVersion=15.11.26
buildCount=29
baseBetaVersion=15.11.27

17
libwinboll/proguard-rules.pro vendored Normal file
View File

@@ -0,0 +1,17 @@
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in C:/tools/adt-bundle-windows-x86_64-20131030/sdk/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the proguardFiles
# directive in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# Add any project specific keep options here:
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="cc.winboll.studio.libwinboll" >
<application>
<activity
android:name=".WinBoLLLibraryActivity">
</activity>
</application>
</manifest>

View File

@@ -0,0 +1,17 @@
package cc.winboll.studio.libwinboll;
import android.app.Activity;
import android.os.Bundle;
import cc.winboll.studio.libappbase.ToastUtils;
public class WinBoLLLibraryActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_winbolllibrary);
ToastUtils.show("WinBoLLLibraryActivity onCreate");
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

View File

@@ -0,0 +1,11 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="cc.winboll.studio.libwinboll.WinBoLLLibraryActivity"/>
</LinearLayout>

View File

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

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="lib_name">libwinboll</string>
<string name="hello_world">Hello world!</string>
</resources>

View File

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

View File

@@ -72,6 +72,7 @@
// WinBoLL 项目编译设置 // WinBoLL 项目编译设置
//include ':winboll' //include ':winboll'
//include ':libwinboll'
//rootProject.name = "winboll" //rootProject.name = "winboll"
// RegExpUtils 项目编译设置 // RegExpUtils 项目编译设置

View File

@@ -50,6 +50,7 @@ android {
} }
dependencies { dependencies {
api project(':libwinboll')
api 'com.google.code.gson:gson:2.10.1' api 'com.google.code.gson:gson:2.10.1'

View File

@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle #Created by .winboll/winboll_app_build.gradle
#Wed May 06 13:39:52 CST 2026 #Sat May 09 19:01:46 GMT 2026
stageCount=27 stageCount=27
libraryProject= libraryProject=libwinboll
baseVersion=15.11 baseVersion=15.11
publishVersion=15.11.26 publishVersion=15.11.26
buildCount=22 buildCount=29
baseBetaVersion=15.11.27 baseBetaVersion=15.11.27

View File

@@ -41,28 +41,29 @@ public class MainActivity extends DrawerFragmentActivity {
initMainHandler(); initMainHandler();
if (mBrowserFragment == null) { if (mBrowserFragment == null) {
String externalUrl = extractExternalUrl(getIntent()); LogUtils.d(TAG, "The code in this line is not fix yet.");
if (externalUrl != null) { // String externalUrl = extractExternalUrl(getIntent());
mBrowserFragment = BrowserFragment.newInstance(externalUrl); // if (externalUrl != null) {
} else { // mBrowserFragment = BrowserFragment.newInstance(externalUrl);
mBrowserFragment = new BrowserFragment(); // } else {
} // mBrowserFragment = new BrowserFragment();
addFragment(mBrowserFragment); // }
// addFragment(mBrowserFragment);
} }
showFragment(mBrowserFragment); showFragment(mBrowserFragment);
} }
@Override // @Override
protected void onNewIntent(Intent intent) { // protected void onNewIntent(Intent intent) {
super.onNewIntent(intent); // super.onNewIntent(intent);
String externalUrl = extractExternalUrl(intent); // String externalUrl = extractExternalUrl(intent);
if (externalUrl != null && mBrowserFragment != null && mBrowserFragment.getBrowserHandler() != null) { // if (externalUrl != null && mBrowserFragment != null && mBrowserFragment.getBrowserHandler() != null) {
Message msg = Message.obtain(); // Message msg = Message.obtain();
msg.what = BrowserFragment.MSG_OPEN_URL; // msg.what = BrowserFragment.MSG_OPEN_URL;
msg.obj = externalUrl; // msg.obj = externalUrl;
mBrowserFragment.getBrowserHandler().sendMessage(msg); // mBrowserFragment.getBrowserHandler().sendMessage(msg);
} // }
} // }
private String extractExternalUrl(Intent intent) { private String extractExternalUrl(Intent intent) {
if (intent != null && Intent.ACTION_VIEW.equals(intent.getAction())) { if (intent != null && Intent.ACTION_VIEW.equals(intent.getAction())) {
@@ -191,6 +192,10 @@ public class MainActivity extends DrawerFragmentActivity {
} else if (nItemId == R.id.item_termux_env_test) { } else if (nItemId == R.id.item_termux_env_test) {
Intent intent = new Intent(getApplicationContext(), TermuxEnvTestActivity.class); Intent intent = new Intent(getApplicationContext(), TermuxEnvTestActivity.class);
WinBoLLActivityManager.getInstance().startWinBoLLActivity(getApplicationContext(), intent, AboutActivity.class);
} else if (nItemId == R.id.item_library_activity) {
Intent intent = new Intent(getApplicationContext(), cc.winboll.studio.libwinboll.WinBoLLLibraryActivity.class);
WinBoLLActivityManager.getInstance().startWinBoLLActivity(getApplicationContext(), intent, AboutActivity.class); WinBoLLActivityManager.getInstance().startWinBoLLActivity(getApplicationContext(), intent, AboutActivity.class);
} else { } else {
return super.onOptionsItemSelected(item); return super.onOptionsItemSelected(item);

View File

@@ -7,6 +7,9 @@
<item <item
android:id="@+id/item_termux_env_test" android:id="@+id/item_termux_env_test"
android:title="TermuxEnvTestActivity"/> android:title="TermuxEnvTestActivity"/>
<item
android:id="@+id/item_library_activity"
android:title="WinBoLLLibraryActivity"/>
</menu> </menu>
</item> </item>
</menu> </menu>