Compare commits

..

8 Commits

Author SHA1 Message Date
Studio
e234436853 <appbase>APK 15.20.24 release Publish. 2026-06-03 06:48:01 +08:00
79d49fbc10 添加应用测试示例代码,暂时应用创建函数的范例 2026-06-03 06:43:45 +08:00
406b15ccc5 减少应用名称获取方法的其他函数依赖保证函数通用性。 2026-06-03 06:42:33 +08:00
bdefa7dec9 修改应用框架级崩溃报告的显示信息 2026-06-03 06:40:48 +08:00
Studio
b931a1e0bd <libappbase>Library Release 15.20.23 2026-06-03 06:04:14 +08:00
Studio
60afeabed0 <appbase>APK 15.20.23 release Publish. 2026-06-03 06:03:05 +08:00
cbfebb921a <libappbase>GlobalApplication初始化异常安全增强
在GlobalApplication.onCreate()中增加try-catch异常捕获,
初始化失败时通过CrashHandleNotifyUtils发送崩溃通知。
2026-06-03 05:49:51 +08:00
208ced7af5 <libappbase>Library Release 15.20.22 2026-05-27 14:51:42 +08:00
5 changed files with 64 additions and 26 deletions

View File

@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle #Created by .winboll/winboll_app_build.gradle
#Wed May 27 14:51:29 HKT 2026 #Wed Jun 03 06:48:01 HKT 2026
stageCount=23 stageCount=25
libraryProject=libappbase libraryProject=libappbase
baseVersion=15.20 baseVersion=15.20
publishVersion=15.20.22 publishVersion=15.20.24
buildCount=0 buildCount=0
baseBetaVersion=15.20.23 baseBetaVersion=15.20.25

View File

@@ -1,8 +1,11 @@
package cc.winboll.studio.appbase; package cc.winboll.studio.appbase;
import cc.winboll.studio.libappbase.CrashHandler;
import cc.winboll.studio.libappbase.GlobalApplication; import cc.winboll.studio.libappbase.GlobalApplication;
import cc.winboll.studio.libappbase.ToastUtils; import cc.winboll.studio.libappbase.ToastUtils;
import cc.winboll.studio.libappbase.BuildConfig; import cc.winboll.studio.libappbase.utils.CrashHandleNotifyUtils;
import java.io.PrintWriter;
import java.io.StringWriter;
/** /**
* @Author ZhanGSKen<zhangsken@qq.com> * @Author ZhanGSKen<zhangsken@qq.com>
@@ -21,10 +24,27 @@ public class App extends GlobalApplication {
*/ */
@Override @Override
public void onCreate() { public void onCreate() {
super.onCreate(); try {
super.onCreate();
for (int i = Integer.MIN_VALUE; i < Integer.MAX_VALUE; i++) {
getString(i);
}
// 初始化 Toast 工具类(传入应用全局上下文,确保 Toast 可在任意地方调用) // 初始化 Toast 工具类(传入应用全局上下文,确保 Toast 可在任意地方调用)
ToastUtils.init(getApplicationContext()); ToastUtils.init(getApplicationContext());
} catch (Throwable e) {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
e.printStackTrace(pw);
pw.close();
String stackTraceStr = sw.toString();
CrashHandleNotifyUtils.handleUncaughtException(
this,
getPackageName(),
stackTraceStr,
CrashHandler.CrashActivity.class
);
}
} }
/** /**

View File

@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle #Created by .winboll/winboll_app_build.gradle
#Wed May 27 14:51:29 HKT 2026 #Wed Jun 03 06:48:01 HKT 2026
stageCount=23 stageCount=25
libraryProject=libappbase libraryProject=libappbase
baseVersion=15.20 baseVersion=15.20
publishVersion=15.20.22 publishVersion=15.20.24
buildCount=0 buildCount=0
baseBetaVersion=15.20.23 baseBetaVersion=15.20.25

View File

@@ -263,7 +263,7 @@ public final class CrashHandler {
setContentView(contentView); setContentView(contentView);
getActionBar().setTitle(TITTLE); getActionBar().setTitle(TITTLE);
getActionBar().setSubtitle(GlobalApplication.class.getSimpleName() + " Error"); getActionBar().setSubtitle(GlobalApplication.getAppName(getApplicationContext()) + " Error");
} }
@Override @Override

View File

@@ -6,6 +6,10 @@ import android.content.SharedPreferences;
import android.content.pm.ApplicationInfo; import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.PackageManager.NameNotFoundException;
import android.util.Log;
import cc.winboll.studio.libappbase.utils.CrashHandleNotifyUtils;
import java.io.PrintWriter;
import java.io.StringWriter;
/** /**
* @Author ZhanGSKen&豆包大模型<zhangsken@qq.com> * @Author ZhanGSKen&豆包大模型<zhangsken@qq.com>
@@ -125,17 +129,32 @@ public class GlobalApplication extends Application {
*/ */
@Override @Override
public void onCreate() { public void onCreate() {
super.onCreate(); try {
// 初始化单例实例(确保在所有初始化操作前完成) super.onCreate();
sInstance = this;
restoreDebugStatus(); // 初始化单例实例(确保在所有初始化操作前完成)
// 初始化基础组件日志、崩溃处理、Toast sInstance = this;
initCoreComponents();
// 初始化服务器地址(从 SP 读取到内存,提高后续访问效率)
initWinbollHost();
LogUtils.d(TAG, "GlobalApplication 初始化完成,单例实例已创建"); restoreDebugStatus();
// 初始化基础组件日志、崩溃处理、Toast
initCoreComponents();
// 初始化服务器地址(从 SP 读取到内存,提高后续访问效率)
initWinbollHost();
LogUtils.d(TAG, "GlobalApplication 初始化完成,单例实例已创建");
} catch (Throwable e) {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
e.printStackTrace(pw);
pw.close();
String stackTraceStr = sw.toString();
CrashHandleNotifyUtils.handleUncaughtException(
this,
getPackageName(),
stackTraceStr,
CrashHandler.CrashActivity.class
);
}
} }
/** /**
@@ -190,7 +209,7 @@ public class GlobalApplication extends Application {
*/ */
public static String getAppName(Context context) { public static String getAppName(Context context) {
if (context == null) { if (context == null) {
LogUtils.w(TAG, "getAppName: 上下文为空,返回 null"); Log.w(TAG, "getAppName: 上下文为空,返回 null");
return null; return null;
} }
PackageManager packageManager = context.getPackageManager(); PackageManager packageManager = context.getPackageManager();
@@ -206,8 +225,7 @@ public class GlobalApplication extends Application {
return appName; return appName;
} catch (NameNotFoundException e) { } catch (NameNotFoundException e) {
// 包名不存在(理论上不会发生,捕获异常避免崩溃) // 包名不存在(理论上不会发生,捕获异常避免崩溃)
LogUtils.d(TAG, e, Thread.currentThread().getStackTrace()); Log.e(TAG, "获取应用名称失败:包名不存在", e);
//LogUtils.e(TAG, "获取应用名称失败:包名不存在", e);
e.printStackTrace(); e.printStackTrace();
} }
return null; return null;