添加调试模式设置功能

This commit is contained in:
ZhanGSKen 2025-02-06 07:11:04 +08:00
parent ac1c9fb9f5
commit 2b92da3e01
7 changed files with 99 additions and 65 deletions

View File

@ -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 "1.1" versionName "1.2"
if(true) { if(true) {
versionName = genVersionName("${versionName}") versionName = genVersionName("${versionName}")
} }

View File

@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle #Created by .winboll/winboll_app_build.gradle
#Tue Feb 04 08:46:51 HKT 2025 #Wed Feb 05 23:09:41 GMT 2025
stageCount=4 stageCount=0
libraryProject=libappbase libraryProject=libappbase
baseVersion=1.1 baseVersion=1.2
publishVersion=1.1.3 publishVersion=1.2.0
buildCount=0 buildCount=3
baseBetaVersion=1.1.4 baseBetaVersion=1.2.1

View File

@ -2,6 +2,9 @@ package cc.winboll.studio.appbase;
import android.app.Activity; import android.app.Activity;
import android.os.Bundle; import android.os.Bundle;
import android.view.View;
import android.widget.CheckBox;
import cc.winboll.studio.libappbase.GlobalApplication;
public class MainActivity extends Activity { public class MainActivity extends Activity {
@ -10,6 +13,11 @@ public class MainActivity extends Activity {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); setContentView(R.layout.activity_main);
CheckBox cbIsDebugMode = findViewById(R.id.activitymainCheckBox1);
cbIsDebugMode.setChecked(GlobalApplication.isDebuging());
} }
public void onSwitchDebugMode(View view) {
GlobalApplication.setIsDebuging(this, ((CheckBox)view).isChecked());
}
} }

View File

@ -4,13 +4,36 @@
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"> android:gravity="center">
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="Hello, WinBoll!" android:text="Hello, WinBoll!"/>
android:onClick="onHello"/>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="right|center_vertical">
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Debug Mode"
android:layout_weight="1.0"
android:onClick="onSwitchDebugMode"
android:id="@+id/activitymainCheckBox1"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Test Application CrashReport"
android:textAllCaps="false"
android:onClick="onTestApplicationCrashReport"/>
</LinearLayout>
</LinearLayout> </LinearLayout>

View File

@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle #Created by .winboll/winboll_app_build.gradle
#Tue Feb 04 08:46:36 HKT 2025 #Wed Feb 05 23:09:41 GMT 2025
stageCount=4 stageCount=0
libraryProject=libappbase libraryProject=libappbase
baseVersion=1.1 baseVersion=1.2
publishVersion=1.1.3 publishVersion=1.2.0
buildCount=0 buildCount=3
baseBetaVersion=1.1.4 baseBetaVersion=1.2.1

View File

@ -83,12 +83,13 @@ public final class CrashHandler {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("************* Crash Head ****************\n"); sb.append("************* Crash Head ****************\n");
sb.append("Time Of Crash : ").append(time).append("\n"); sb.append("Time Of Crash : ").append(time).append("\n");
sb.append("Device Manufacturer: ").append(Build.MANUFACTURER).append("\n"); sb.append("Device Manufacturer : ").append(Build.MANUFACTURER).append("\n");
sb.append("Device Model : ").append(Build.MODEL).append("\n"); sb.append("Device Model : ").append(Build.MODEL).append("\n");
sb.append("Android Version : ").append(Build.VERSION.RELEASE).append("\n"); sb.append("Android Version : ").append(Build.VERSION.RELEASE).append("\n");
sb.append("Android SDK : ").append(Build.VERSION.SDK_INT).append("\n"); sb.append("Android SDK : ").append(Build.VERSION.SDK_INT).append("\n");
sb.append("App VersionName : ").append(versionName).append("\n"); sb.append("App VersionName : ").append(versionName).append("\n");
sb.append("App VersionCode : ").append(versionCode).append("\n"); sb.append("App VersionCode : ").append(versionCode).append("\n");
sb.append("AppBase GlobalApplication Debug Mode : ").append(GlobalApplication.isDebuging).append("\n");
sb.append("************* Crash Head ****************\n"); sb.append("************* Crash Head ****************\n");
sb.append("\n").append(fullStackTrace); sb.append("\n").append(fullStackTrace);
@ -115,6 +116,7 @@ public final class CrashHandler {
DEFAULT_UNCAUGHT_EXCEPTION_HANDLER.uncaughtException(thread, throwable); DEFAULT_UNCAUGHT_EXCEPTION_HANDLER.uncaughtException(thread, throwable);
} }
} }
} }
private void writeFile(File file, String content) throws IOException { private void writeFile(File file, String content) throws IOException {

View File

@ -5,51 +5,46 @@ package cc.winboll.studio.libappbase;
* @Date 2025/01/05 10:10:23 * @Date 2025/01/05 10:10:23
* @Describe 全局应用类 * @Describe 全局应用类
*/ */
import android.app.Activity;
import android.app.Application; import android.app.Application;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.SharedPreferences;
import android.content.pm.PackageInfo;
import android.content.res.Resources;
import android.graphics.Typeface;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.os.Looper; import android.os.Looper;
import android.text.TextUtils;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.ViewGroup;
import android.widget.HorizontalScrollView;
import android.widget.ScrollView;
import android.widget.TextView;
import android.widget.Toast;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.Closeable; import java.io.Closeable;
import java.io.File; import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.OutputStream; import java.io.OutputStream;
import java.lang.Thread.UncaughtExceptionHandler;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.concurrent.atomic.AtomicBoolean;
import android.content.pm.ApplicationInfo;
import android.content.res.AssetManager;
public class GlobalApplication extends Application { public class GlobalApplication extends Application {
final static String PREFS = GlobalApplication.class.getName() + "PREFS";
final static String PREFS_ISDEBUGING = "PREFS_ISDEBUGING";
private static Handler MAIN_HANDLER = new Handler(Looper.getMainLooper()); private static Handler MAIN_HANDLER = new Handler(Looper.getMainLooper());
// 是否处于调试状态
volatile static boolean isDebuging = false;
public static void setIsDebuging(Context context, boolean isDebuging) {
GlobalApplication.isDebuging = isDebuging;
// 获取SharedPreferences实例
SharedPreferences sharedPreferences = context.getSharedPreferences(PREFS, Context.MODE_PRIVATE);
// 获取编辑器
SharedPreferences.Editor editor = sharedPreferences.edit();
// 保存数据
editor.putBoolean(PREFS_ISDEBUGING, GlobalApplication.isDebuging);
// 提交更改
editor.apply();
}
public static boolean isDebuging() {
return isDebuging;
}
@Override @Override
public Context getApplicationContext() { public Context getApplicationContext() {
return super.getApplicationContext(); return super.getApplicationContext();
@ -62,7 +57,13 @@ public class GlobalApplication extends Application {
@Override @Override
public void onCreate() { public void onCreate() {
super.onCreate(); super.onCreate();
// 设置应用异常处理窗口
CrashHandler.init(this); CrashHandler.init(this);
// 设置应用调试状态
SharedPreferences sharedPreferences = getSharedPreferences(PREFS, Context.MODE_PRIVATE);
GlobalApplication.isDebuging = sharedPreferences.getBoolean(PREFS_ISDEBUGING, GlobalApplication.isDebuging);
} }
public static void write(InputStream input, OutputStream output) throws IOException { public static void write(InputStream input, OutputStream output) throws IOException {