Compare commits

...

17 Commits

Author SHA1 Message Date
ZhanGSKen
8a405d33a7 <appbase>APK 1.2.0 release Publish. 2025-02-06 07:12:30 +08:00
ZhanGSKen
2b92da3e01 添加调试模式设置功能 2025-02-06 07:11:04 +08:00
ZhanGSKen
ac1c9fb9f5 <libappbase>Library Release 1.1.3 2025-02-04 08:46:57 +08:00
ZhanGSKen
16dd559c5b <appbase>APK 1.1.3 release Publish. 2025-02-04 08:46:36 +08:00
ZhanGSKen
3793ae3252 调整命名空间,精简代码 2025-02-04 08:45:31 +08:00
ZhanGSKen
dc8f127a8d <libappbase>Library Release 1.1.2 2025-01-23 14:42:57 +08:00
ZhanGSKen
3cf4155eab <appbase>APK 1.1.2 release Publish. 2025-01-23 14:42:39 +08:00
ZhanGSKen
7ca144bfc4 添加 Application 返回函数 2025-01-23 14:41:36 +08:00
ZhanGSKen
73222d3272 <libappbase>Library Release 1.1.1 2025-01-23 14:24:23 +08:00
ZhanGSKen
b9c9eb926d <appbase>APK 1.1.1 release Publish. 2025-01-23 14:23:50 +08:00
ZhanGSKen
35efcdddcd 添加应用上下文函数 2025-01-23 14:23:00 +08:00
ZhanGSKen
fc5ac32514 <libappbase>Library Release 1.1.0 2025-01-22 14:48:24 +08:00
ZhanGSKen
afa8a97dba <appbase>APK 1.1.0 release Publish. 2025-01-22 14:47:54 +08:00
ZhanGSKen
fe004c7b82 设置编译参数 2025-01-22 14:47:01 +08:00
ZhanGSKen
b9582cb99d <appbase>Start New Stage Version. 2025-01-22 14:16:40 +08:00
ZhanGSKen
b3a69283ab 添加文本复制提示 2025-01-22 13:27:47 +08:00
ZhanGSKen
36e10db8e3 APPBase编译调试 2025-01-19 23:37:15 +08:00
12 changed files with 116 additions and 100 deletions

View File

@@ -29,7 +29,7 @@ android {
// versionName 更新后需要手动设置
// .winboll/winbollBuildProps.properties 文件的 stageCount=0
// Gradle编译环境下合起来的 versionName 就是 "${versionName}.0"
versionName "1.0"
versionName "1.2"
if(true) {
versionName = genVersionName("${versionName}")
}

View File

@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle
#Sun Jan 05 02:30:11 GMT 2025
stageCount=0
libraryProject=
baseVersion=1.0
publishVersion=1.0.0
buildCount=2
baseBetaVersion=1.0.1
#Thu Feb 06 07:12:30 HKT 2025
stageCount=1
libraryProject=libappbase
baseVersion=1.2
publishVersion=1.2.0
buildCount=0
baseBetaVersion=1.2.1

View File

@@ -5,7 +5,7 @@ package cc.winboll.studio.appbase;
* @Date 2025/01/05 09:54:42
* @Describe APPbase 应用类
*/
import cc.winboll.studio.GlobalApplication;
import cc.winboll.studio.libappbase.GlobalApplication;
public class App extends GlobalApplication {

View File

@@ -1,15 +1,23 @@
package cc.winboll.studio.appbase;
import android.app.Activity;
import android.os.Bundle;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
package cc.winboll.studio.appbase;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.CheckBox;
import cc.winboll.studio.libappbase.GlobalApplication;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
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"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello, WinBoll!"
android:onClick="onHello"/>
android:text="Hello, WinBoll!"/>
<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>

View File

@@ -4,7 +4,7 @@ apply from: '../.winboll/winboll_lib_build.gradle'
apply from: '../.winboll/winboll_lint_build.gradle'
android {
namespace 'cc.winboll.studio'
namespace 'cc.winboll.studio.libappbase'
compileSdkVersion 32
buildToolsVersion "33.0.3"

View File

@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle
#Sun Jan 05 07:55:11 HKT 2025
stageCount=17
libraryProject=winboll-shared
baseVersion=1.8
publishVersion=1.8.16
#Thu Feb 06 07:12:30 HKT 2025
stageCount=1
libraryProject=libappbase
baseVersion=1.2
publishVersion=1.2.0
buildCount=0
baseBetaVersion=1.8.17
baseBetaVersion=1.2.1

View File

@@ -1,17 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="cc.winboll.studio" >
package="cc.winboll.studio.libappbase" >
<application>
<activity
android:name=".CrashHandler$CrashActiviy"
android:label="CrashActiviy"
android:launchMode="standard"/>
<activity
android:name=".libappbase.LibraryActivity"
android:label="@string/lib_name" >
</activity>
</application>
</manifest>

View File

@@ -1,4 +1,4 @@
package cc.winboll.studio;
package cc.winboll.studio.libappbase;
/**
* @Author ZhanGSKen@QQ.COM
@@ -25,6 +25,7 @@ import android.view.ViewGroup;
import android.widget.HorizontalScrollView;
import android.widget.ScrollView;
import android.widget.TextView;
import android.widget.Toast;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
@@ -81,13 +82,14 @@ public final class CrashHandler {
StringBuilder sb = new StringBuilder();
sb.append("************* Crash Head ****************\n");
sb.append("Time Of Crash : ").append(time).append("\n");
sb.append("Device Manufacturer: ").append(Build.MANUFACTURER).append("\n");
sb.append("Device Model : ").append(Build.MODEL).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("App VersionName : ").append(versionName).append("\n");
sb.append("App VersionCode : ").append(versionCode).append("\n");
sb.append("Time Of Crash : ").append(time).append("\n");
sb.append("Device Manufacturer : ").append(Build.MANUFACTURER).append("\n");
sb.append("Device Model : ").append(Build.MODEL).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("App VersionName : ").append(versionName).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("\n").append(fullStackTrace);
@@ -114,6 +116,7 @@ public final class CrashHandler {
DEFAULT_UNCAUGHT_EXCEPTION_HANDLER.uncaughtException(thread, throwable);
}
}
}
private void writeFile(File file, String content) throws IOException {
@@ -194,6 +197,7 @@ public final class CrashHandler {
case MENUITEM_COPY:
ClipboardManager cm = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
cm.setPrimaryClip(ClipData.newPlainText(getPackageName(), mLog));
Toast.makeText(getApplication(), "The text is copied.", Toast.LENGTH_SHORT).show();
break;
case MENUITEM_RESTART:
restart();

View File

@@ -1,57 +1,69 @@
package cc.winboll.studio;
package cc.winboll.studio.libappbase;
/**
* @Author ZhanGSKen@QQ.COM
* @Date 2025/01/05 10:10:23
* @Describe 全局应用类
*/
import android.app.Activity;
import android.app.Application;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.res.Resources;
import android.graphics.Typeface;
import android.os.Build;
import android.os.Bundle;
import android.content.SharedPreferences;
import android.os.Handler;
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.ByteArrayOutputStream;
import java.io.Closeable;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
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;
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());
// 是否处于调试状态
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
public Context getApplicationContext() {
return super.getApplicationContext();
}
public Application getApplication() {
return this;
}
@Override
public void onCreate() {
super.onCreate();
// 设置应用异常处理窗口
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 {

View File

@@ -1,15 +0,0 @@
package cc.winboll.studio.libappbase;
import android.app.*;
import android.os.*;
import cc.winboll.studio.R;
public class LibraryActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.library);
}
}

View File

@@ -1,11 +0,0 @@
<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:text="@string/hello_world"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>