Compare commits
7 Commits
gitsion
...
projects_k
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
643d08bf22 | ||
|
|
beefb16c32 | ||
|
|
878009ec9f | ||
|
|
2d8b5d515b | ||
|
|
1453287667 | ||
|
|
5fc59f3305 | ||
|
|
b6ba73126f |
@@ -39,10 +39,6 @@ android {
|
||||
}
|
||||
}
|
||||
|
||||
// 米盟 SDK
|
||||
packagingOptions {
|
||||
doNotStrip "*/*/libmimo_1011.so"
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#Created by .winboll/winboll_app_build.gradle
|
||||
#Tue Jun 02 08:54:20 HKT 2026
|
||||
stageCount=13
|
||||
#Wed Jun 24 04:25:54 CST 2026
|
||||
stageCount=17
|
||||
libraryProject=libaes
|
||||
baseVersion=15.20
|
||||
publishVersion=15.20.12
|
||||
publishVersion=15.20.16
|
||||
buildCount=0
|
||||
baseBetaVersion=15.20.13
|
||||
baseBetaVersion=15.20.17
|
||||
|
||||
@@ -7,9 +7,12 @@ package cc.winboll.studio.aes;
|
||||
*/
|
||||
import cc.winboll.studio.libaes.utils.AESThemeUtil;
|
||||
import cc.winboll.studio.libaes.utils.WinBoLLActivityManager;
|
||||
import cc.winboll.studio.libappbase.CrashActivity;
|
||||
import cc.winboll.studio.libappbase.GlobalApplication;
|
||||
import cc.winboll.studio.libappbase.ToastUtils;
|
||||
import java.util.ArrayList;
|
||||
import cc.winboll.studio.libappbase.utils.CrashHandleNotifyUtils;
|
||||
import java.io.PrintWriter;
|
||||
import java.io.StringWriter;
|
||||
|
||||
|
||||
public class App extends GlobalApplication {
|
||||
@@ -18,12 +21,25 @@ public class App extends GlobalApplication {
|
||||
|
||||
@Override
|
||||
public void onCreate() {
|
||||
super.onCreate();
|
||||
AESThemeUtil.init(null);
|
||||
WinBoLLActivityManager.init(this);
|
||||
try {
|
||||
super.onCreate();
|
||||
ToastUtils.init(this);
|
||||
WinBoLLActivityManager.init(this);
|
||||
AESThemeUtil.init(null);
|
||||
} 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,
|
||||
CrashActivity.class
|
||||
);
|
||||
}
|
||||
|
||||
// 初始化 Toast 框架
|
||||
ToastUtils.init(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,11 +1,7 @@
|
||||
package cc.winboll.studio.aes;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import cc.winboll.studio.libaes.views.ADsControlView;
|
||||
|
||||
/**
|
||||
* @Author ZhanGSKen&豆包大模型<zhangsken@qq.com>
|
||||
@@ -20,7 +16,7 @@ public class SettingsActivity extends Activity {
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_settings);
|
||||
ADsControlView adsControlView = (ADsControlView) findViewById(R.id.ads_control_view);
|
||||
//ADsControlView adsControlView = (ADsControlView) findViewById(R.id.ads_control_view);
|
||||
|
||||
// adsControlView.setOnAdsModeSelectedListener(new ADsControlView.OnAdsModeSelectedListener() {
|
||||
// @Override
|
||||
|
||||
@@ -6,12 +6,5 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" android:background="@drawable/bg_container_border">
|
||||
|
||||
<cc.winboll.studio.libaes.views.ADsControlView
|
||||
android:id="@+id/ads_control_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/bg_frame"
|
||||
android:padding="10dp"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#Created by .winboll/winboll_app_build.gradle
|
||||
#Wed Jun 03 06:52:38 HKT 2026
|
||||
stageCount=26
|
||||
#Wed Jun 24 04:11:18 CST 2026
|
||||
stageCount=34
|
||||
libraryProject=libappbase
|
||||
baseVersion=15.20
|
||||
publishVersion=15.20.25
|
||||
publishVersion=15.20.33
|
||||
buildCount=0
|
||||
baseBetaVersion=15.20.26
|
||||
baseBetaVersion=15.20.34
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package cc.winboll.studio.appbase;
|
||||
|
||||
import cc.winboll.studio.libappbase.CrashHandler;
|
||||
import cc.winboll.studio.libappbase.CrashActivity;
|
||||
import cc.winboll.studio.libappbase.GlobalApplication;
|
||||
import cc.winboll.studio.libappbase.ToastUtils;
|
||||
import cc.winboll.studio.libappbase.utils.CrashHandleNotifyUtils;
|
||||
@@ -39,7 +39,7 @@ public class App extends GlobalApplication {
|
||||
this,
|
||||
getPackageName(),
|
||||
stackTraceStr,
|
||||
CrashHandler.CrashActivity.class
|
||||
CrashActivity.class
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,15 +20,11 @@ android {
|
||||
}
|
||||
}
|
||||
|
||||
// 米盟 SDK
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_1_7
|
||||
targetCompatibility JavaVersion.VERSION_1_7
|
||||
}
|
||||
|
||||
packagingOptions {
|
||||
doNotStrip "*/*/libmimo_1011.so"
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
@@ -57,7 +53,7 @@ dependencies {
|
||||
//api 'androidx.fragment:fragment:1.1.0'
|
||||
|
||||
// 米盟
|
||||
api 'com.miui.zeus:mimo-ad-sdk:5.3.+'//请使用最新版sdk
|
||||
//api 'com.miui.zeus:mimo-ad-sdk:5.3.+'//请使用最新版sdk
|
||||
//注意:以下5个库必须要引入
|
||||
//implementation 'androidx.appcompat:appcompat:1.4.1'
|
||||
api 'androidx.recyclerview:recyclerview:1.0.0'
|
||||
@@ -66,9 +62,9 @@ dependencies {
|
||||
//annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'
|
||||
|
||||
// WinBoLL库 nexus.winboll.cc 地址
|
||||
//api 'cc.winboll.studio:libappbase:15.20.22'
|
||||
api 'cc.winboll.studio:libappbase:15.20.33'
|
||||
// 备用库 jitpack.io 地址
|
||||
api 'com.github.ZhanGSKen:libappbase:appbase-v15.20.22'
|
||||
|
||||
//api 'com.github.ZhanGSKen:libappbase:appbase-v15.20.33'
|
||||
|
||||
api fileTree(dir: 'libs', include: ['*.jar'])
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#Created by .winboll/winboll_app_build.gradle
|
||||
#Tue Jun 02 08:54:20 HKT 2026
|
||||
stageCount=13
|
||||
#Wed Jun 24 04:25:54 CST 2026
|
||||
stageCount=17
|
||||
libraryProject=libaes
|
||||
baseVersion=15.20
|
||||
publishVersion=15.20.12
|
||||
publishVersion=15.20.16
|
||||
buildCount=0
|
||||
baseBetaVersion=15.20.13
|
||||
baseBetaVersion=15.20.17
|
||||
|
||||
@@ -15,7 +15,6 @@ import android.view.MenuInflater;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.widget.AdapterView;
|
||||
|
||||
import androidx.appcompat.app.ActionBarDrawerToggle;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
@@ -23,9 +22,9 @@ import androidx.drawerlayout.widget.DrawerLayout;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
import androidx.fragment.app.FragmentTransaction;
|
||||
|
||||
import cc.winboll.studio.libaes.DrawerMenuDataAdapter;
|
||||
import cc.winboll.studio.libaes.R;
|
||||
import cc.winboll.studio.libaes.activitys.DrawerFragmentActivity;
|
||||
import cc.winboll.studio.libaes.interfaces.IWinBoLLActivity;
|
||||
import cc.winboll.studio.libaes.models.AESThemeBean;
|
||||
import cc.winboll.studio.libaes.models.DrawerMenuBean;
|
||||
@@ -33,11 +32,9 @@ import cc.winboll.studio.libaes.utils.AESThemeUtil;
|
||||
import cc.winboll.studio.libaes.utils.DevelopUtils;
|
||||
import cc.winboll.studio.libaes.utils.WinBoLLActivityManager;
|
||||
import cc.winboll.studio.libaes.views.ADrawerMenuListView;
|
||||
import cc.winboll.studio.libaes.views.ADsBannerView;
|
||||
import cc.winboll.studio.libappbase.GlobalApplication;
|
||||
import cc.winboll.studio.libappbase.LogUtils;
|
||||
import com.baoyz.widget.PullRefreshLayout;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public abstract class DrawerFragmentActivity extends AppCompatActivity implements IWinBoLLActivity, AdapterView.OnItemClickListener {
|
||||
@@ -91,10 +88,10 @@ public abstract class DrawerFragmentActivity extends AppCompatActivity implement
|
||||
WinBoLLActivityManager.getInstance().registeRemove(this);
|
||||
super.onDestroy();
|
||||
// 修复:释放广告资源,避免内存泄漏
|
||||
ADsBannerView adsBannerView = findViewById(R.id.adsbanner);
|
||||
if (adsBannerView != null) {
|
||||
adsBannerView.releaseAdResources();
|
||||
}
|
||||
// ADsBannerView adsBannerView = findViewById(R.id.adsbanner);
|
||||
// if (adsBannerView != null) {
|
||||
// adsBannerView.releaseAdResources();
|
||||
// }
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -151,10 +148,10 @@ public abstract class DrawerFragmentActivity extends AppCompatActivity implement
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
|
||||
ADsBannerView adsBannerView = findViewById(R.id.adsbanner);
|
||||
if (adsBannerView != null) {
|
||||
adsBannerView.resumeADs(DrawerFragmentActivity.this);
|
||||
}
|
||||
// ADsBannerView adsBannerView = findViewById(R.id.adsbanner);
|
||||
// if (adsBannerView != null) {
|
||||
// adsBannerView.resumeADs(DrawerFragmentActivity.this);
|
||||
// }
|
||||
}
|
||||
|
||||
void initRootView() {
|
||||
|
||||
@@ -9,13 +9,10 @@ import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
import cc.winboll.studio.libaes.R;
|
||||
import cc.winboll.studio.libaes.activitys.DrawerFragmentActivity;
|
||||
import cc.winboll.studio.libaes.models.AESThemeBean;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class AESThemeUtil {
|
||||
@@ -33,7 +30,8 @@ public class AESThemeUtil {
|
||||
* 初始化主题样式ID集合
|
||||
*/
|
||||
public static void init(ArrayList<Integer> themeStyleIDList) {
|
||||
if(themeStyleIDList == null) {
|
||||
|
||||
if (themeStyleIDList == null) {
|
||||
themeStyleIDList = new ArrayList<Integer>();
|
||||
AESThemeBean.fillThemeStyleIDList(themeStyleIDList);
|
||||
}
|
||||
@@ -45,7 +43,7 @@ public class AESThemeUtil {
|
||||
* 获取当前主题样式ID
|
||||
*/
|
||||
public static int getThemeTypeID(Context context) {
|
||||
AESThemeBean bean = AESThemeBean.loadBean(context, AESThemeBean.class);
|
||||
AESThemeBean bean = AESThemeBean.loadBean(context, AESThemeBean.class);
|
||||
return bean == null ? getThemeStyleID(AESThemeBean.ThemeType.AES) : bean.getCurrentThemeTypeID();
|
||||
}
|
||||
|
||||
|
||||
@@ -56,10 +56,5 @@
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<cc.winboll.studio.libaes.views.ADsBannerView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/adsbanner"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#Created by .winboll/winboll_app_build.gradle
|
||||
#Wed Jun 03 06:52:38 HKT 2026
|
||||
stageCount=26
|
||||
#Wed Jun 24 04:11:18 CST 2026
|
||||
stageCount=34
|
||||
libraryProject=libappbase
|
||||
baseVersion=15.20
|
||||
publishVersion=15.20.25
|
||||
publishVersion=15.20.33
|
||||
buildCount=0
|
||||
baseBetaVersion=15.20.26
|
||||
baseBetaVersion=15.20.34
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
android:networkSecurityConfig="@xml/network_security_config">
|
||||
|
||||
<activity
|
||||
android:name=".CrashHandler$CrashActivity"
|
||||
android:name=".CrashActivity"
|
||||
android:label="CrashActivity"
|
||||
android:launchMode="singleInstance"
|
||||
android:process=":CrashActivity"/>
|
||||
|
||||
@@ -0,0 +1,109 @@
|
||||
package cc.winboll.studio.libappbase;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.ClipData;
|
||||
import android.content.ClipboardManager;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.res.Resources;
|
||||
import android.os.Bundle;
|
||||
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;
|
||||
|
||||
public final class CrashActivity extends Activity implements MenuItem.OnMenuItemClickListener {
|
||||
private static final int MENUITEM_COPY = 0;
|
||||
private static final int MENUITEM_RESTART = 1;
|
||||
|
||||
private String mLog;
|
||||
|
||||
@Override
|
||||
protected void onCreate(final Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
AppCrashSafetyWire.getInstance().postResumeCrashSafetyWireHandler(getApplicationContext());
|
||||
mLog = getIntent().getStringExtra(CrashHandler.EXTRA_CRASH_LOG);
|
||||
setTheme(android.R.style.Theme_DeviceDefault_Light_DarkActionBar);
|
||||
initLayout();
|
||||
}
|
||||
|
||||
private void initLayout() {
|
||||
ScrollView contentView = new ScrollView(this);
|
||||
contentView.setFillViewport(true);
|
||||
|
||||
HorizontalScrollView hw = new HorizontalScrollView(this);
|
||||
hw.setBackgroundColor(0xFFF5F5F5);
|
||||
|
||||
TextView message = new TextView(this);
|
||||
final int padding = dp2px(16);
|
||||
message.setPadding(padding, padding, padding, padding);
|
||||
message.setText(mLog);
|
||||
message.setTextColor(0xFF000000);
|
||||
message.setTextIsSelectable(true);
|
||||
|
||||
hw.addView(message);
|
||||
contentView.addView(hw, ViewGroup.LayoutParams.MATCH_PARENT,
|
||||
ViewGroup.LayoutParams.MATCH_PARENT);
|
||||
setContentView(contentView);
|
||||
|
||||
getActionBar().setTitle(CrashHandler.TITTLE);
|
||||
getActionBar().setSubtitle(GlobalApplication.getAppName(getApplicationContext()) + " Error");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBackPressed() {
|
||||
restartApp();
|
||||
}
|
||||
|
||||
private void restartApp() {
|
||||
final Intent intent = getPackageManager()
|
||||
.getLaunchIntentForPackage(getPackageName());
|
||||
if (intent != null) {
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
|
||||
| Intent.FLAG_ACTIVITY_CLEAR_TOP
|
||||
| Intent.FLAG_ACTIVITY_CLEAR_TASK);
|
||||
startActivity(intent);
|
||||
}
|
||||
finish();
|
||||
android.os.Process.killProcess(android.os.Process.myPid());
|
||||
System.exit(0);
|
||||
}
|
||||
|
||||
private int dp2px(final float dpValue) {
|
||||
final float scale = Resources.getSystem().getDisplayMetrics().density;
|
||||
return (int) (dpValue * scale + 0.5f);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(final Menu menu) {
|
||||
menu.add(0, MENUITEM_COPY, 0, "Copy")
|
||||
.setOnMenuItemClickListener(this)
|
||||
.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
|
||||
|
||||
menu.add(0, MENUITEM_RESTART, 0, "Restart")
|
||||
.setOnMenuItemClickListener(this)
|
||||
.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onMenuItemClick(final MenuItem item) {
|
||||
switch (item.getItemId()) {
|
||||
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:
|
||||
AppCrashSafetyWire.getInstance().resumeToMaximumImmediately();
|
||||
restartApp();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -1,27 +1,13 @@
|
||||
package cc.winboll.studio.libappbase;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.Application;
|
||||
import android.content.ActivityNotFoundException;
|
||||
import android.content.ClipData;
|
||||
import android.content.ClipboardManager;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.res.Resources;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.text.TextUtils;
|
||||
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 cc.winboll.studio.libappbase.utils.CrashHandleNotifyUtils;
|
||||
|
||||
@@ -220,111 +206,5 @@ public final class CrashHandler {
|
||||
}
|
||||
}
|
||||
|
||||
// ====================== 内部Activity页面 ======================
|
||||
/**
|
||||
* 基础极简崩溃页面
|
||||
* 保险丝熔断时启动,避免复杂布局二次崩溃
|
||||
*/
|
||||
public static final class CrashActivity extends Activity implements MenuItem.OnMenuItemClickListener {
|
||||
private static final int MENUITEM_COPY = 0;
|
||||
private static final int MENUITEM_RESTART = 1;
|
||||
|
||||
private String mLog;
|
||||
|
||||
@Override
|
||||
protected void onCreate(final Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
AppCrashSafetyWire.getInstance().postResumeCrashSafetyWireHandler(getApplicationContext());
|
||||
mLog = getIntent().getStringExtra(EXTRA_CRASH_LOG);
|
||||
setTheme(android.R.style.Theme_DeviceDefault_Light_DarkActionBar);
|
||||
initLayout();
|
||||
}
|
||||
|
||||
/**
|
||||
* 动态初始化布局
|
||||
*/
|
||||
private void initLayout() {
|
||||
ScrollView contentView = new ScrollView(this);
|
||||
contentView.setFillViewport(true);
|
||||
|
||||
HorizontalScrollView hw = new HorizontalScrollView(this);
|
||||
hw.setBackgroundColor(0xFFF5F5F5);
|
||||
|
||||
TextView message = new TextView(this);
|
||||
final int padding = dp2px(16);
|
||||
message.setPadding(padding, padding, padding, padding);
|
||||
message.setText(mLog);
|
||||
message.setTextColor(0xFF000000);
|
||||
message.setTextIsSelectable(true);
|
||||
|
||||
hw.addView(message);
|
||||
contentView.addView(hw, ViewGroup.LayoutParams.MATCH_PARENT,
|
||||
ViewGroup.LayoutParams.MATCH_PARENT);
|
||||
setContentView(contentView);
|
||||
|
||||
getActionBar().setTitle(TITTLE);
|
||||
getActionBar().setSubtitle(GlobalApplication.getAppName(getApplicationContext()) + " Error");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBackPressed() {
|
||||
restartApp();
|
||||
}
|
||||
|
||||
/**
|
||||
* 重启应用
|
||||
*/
|
||||
private void restartApp() {
|
||||
final Intent intent = getPackageManager()
|
||||
.getLaunchIntentForPackage(getPackageName());
|
||||
if (intent != null) {
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
|
||||
| Intent.FLAG_ACTIVITY_CLEAR_TOP
|
||||
| Intent.FLAG_ACTIVITY_CLEAR_TASK);
|
||||
startActivity(intent);
|
||||
}
|
||||
finish();
|
||||
android.os.Process.killProcess(android.os.Process.myPid());
|
||||
System.exit(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* dp转px
|
||||
*/
|
||||
private int dp2px(final float dpValue) {
|
||||
final float scale = Resources.getSystem().getDisplayMetrics().density;
|
||||
return (int) (dpValue * scale + 0.5f);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(final Menu menu) {
|
||||
menu.add(0, MENUITEM_COPY, 0, "Copy")
|
||||
.setOnMenuItemClickListener(this)
|
||||
.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
|
||||
|
||||
menu.add(0, MENUITEM_RESTART, 0, "Restart")
|
||||
.setOnMenuItemClickListener(this)
|
||||
.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onMenuItemClick(final MenuItem item) {
|
||||
switch (item.getItemId()) {
|
||||
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:
|
||||
AppCrashSafetyWire.getInstance().resumeToMaximumImmediately();
|
||||
restartApp();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -152,7 +152,7 @@ public class GlobalApplication extends Application {
|
||||
this,
|
||||
getPackageName(),
|
||||
stackTraceStr,
|
||||
CrashHandler.CrashActivity.class
|
||||
CrashActivity.class
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -66,7 +66,7 @@ public final class GlobalCrashActivity extends Activity implements MenuItem.OnMe
|
||||
mCrashLog = getIntent().getStringExtra(CrashHandler.EXTRA_CRASH_LOG);
|
||||
final Intent intent = new Intent();
|
||||
intent.putExtra(CrashHandler.EXTRA_CRASH_LOG, mCrashLog);
|
||||
CrashHandleNotifyUtils.handleUncaughtException(GlobalApplication.getInstance(), intent, CrashHandler.CrashActivity.class);
|
||||
CrashHandleNotifyUtils.handleUncaughtException(GlobalApplication.getInstance(), intent, CrashActivity.class);
|
||||
|
||||
StackTraceElement[] stackElements = Thread.currentThread().getStackTrace();
|
||||
StringBuilder sb = new StringBuilder("GlobalCrashActivity onCreate StackTrace");
|
||||
|
||||
@@ -35,7 +35,7 @@ dependencies {
|
||||
api 'com.jcraft:jsch:0.1.54'
|
||||
|
||||
// 米盟
|
||||
api 'com.miui.zeus:mimo-ad-sdk:5.3.+'//请使用最新版sdk
|
||||
//api 'com.miui.zeus:mimo-ad-sdk:5.3.+'//请使用最新版sdk
|
||||
//注意:以下5个库必须要引入
|
||||
//implementation 'androidx.appcompat:appcompat:1.4.1'
|
||||
api 'androidx.recyclerview:recyclerview:1.0.0'
|
||||
@@ -44,12 +44,12 @@ dependencies {
|
||||
//annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'
|
||||
|
||||
// WinBoLL库 nexus.winboll.cc 地址
|
||||
//api 'cc.winboll.studio:libappbase:15.20.22'
|
||||
//api 'cc.winboll.studio:libaes:15.20.12'
|
||||
api 'cc.winboll.studio:libappbase:15.20.33'
|
||||
api 'cc.winboll.studio:libaes:15.20.16'
|
||||
|
||||
// 备用库 jitpack.io 地址
|
||||
api 'com.github.ZhanGSKen:libappbase:appbase-v15.20.22'
|
||||
api 'com.github.ZhanGSKen:libaes:aes-v15.20.12'
|
||||
//api 'com.github.ZhanGSKen:libappbase:appbase-v15.20.33'
|
||||
//api 'com.github.ZhanGSKen:libaes:aes-v15.20.16'
|
||||
|
||||
api fileTree(dir: 'libs', include: ['*.jar'])
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#Created by .winboll/winboll_app_build.gradle
|
||||
#Tue Jun 02 20:00:52 HKT 2026
|
||||
stageCount=7
|
||||
#Wed Jun 24 08:11:15 CST 2026
|
||||
stageCount=9
|
||||
libraryProject=libwinboll
|
||||
baseVersion=15.20
|
||||
publishVersion=15.20.6
|
||||
publishVersion=15.20.8
|
||||
buildCount=0
|
||||
baseBetaVersion=15.20.7
|
||||
baseBetaVersion=15.20.9
|
||||
|
||||
@@ -36,17 +36,6 @@ android {
|
||||
versionName = genVersionName("${versionName}")
|
||||
}
|
||||
}
|
||||
|
||||
// 米盟 SDK
|
||||
packagingOptions {
|
||||
doNotStrip "*/*/libmimo_1011.so"
|
||||
}
|
||||
|
||||
sourceSets {
|
||||
main {
|
||||
jniLibs.srcDirs = ['libs'] // 若SO库放在libs目录下
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
@@ -80,7 +69,7 @@ dependencies {
|
||||
|
||||
|
||||
// 米盟
|
||||
api 'com.miui.zeus:mimo-ad-sdk:5.3.+'//请使用最新版sdk
|
||||
//api 'com.miui.zeus:mimo-ad-sdk:5.3.+'//请使用最新版sdk
|
||||
//注意:以下5个库必须要引入
|
||||
//implementation 'androidx.appcompat:appcompat:1.4.1'
|
||||
api 'androidx.recyclerview:recyclerview:1.0.0'
|
||||
@@ -108,12 +97,12 @@ dependencies {
|
||||
implementation 'androidx.biometric:biometric:1.1.0'
|
||||
|
||||
// WinBoLL库 nexus.winboll.cc 地址
|
||||
//api 'cc.winboll.studio:libappbase:15.20.22'
|
||||
//api 'cc.winboll.studio:libaes:15.20.12'
|
||||
api 'cc.winboll.studio:libappbase:15.20.33'
|
||||
api 'cc.winboll.studio:libaes:15.20.16'
|
||||
|
||||
// 备用库 jitpack.io 地址
|
||||
api 'com.github.ZhanGSKen:libappbase:appbase-v15.20.22'
|
||||
api 'com.github.ZhanGSKen:libaes:aes-v15.20.12'
|
||||
//api 'com.github.ZhanGSKen:libappbase:appbase-v15.20.33'
|
||||
//api 'com.github.ZhanGSKen:libaes:aes-v15.20.16'
|
||||
|
||||
api fileTree(dir: 'libs', include: ['*.jar'])
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#Created by .winboll/winboll_app_build.gradle
|
||||
#Tue Jun 02 20:00:52 HKT 2026
|
||||
stageCount=7
|
||||
#Wed Jun 24 08:11:15 CST 2026
|
||||
stageCount=9
|
||||
libraryProject=libwinboll
|
||||
baseVersion=15.20
|
||||
publishVersion=15.20.6
|
||||
publishVersion=15.20.8
|
||||
buildCount=0
|
||||
baseBetaVersion=15.20.7
|
||||
baseBetaVersion=15.20.9
|
||||
|
||||
@@ -14,7 +14,6 @@ import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.view.Gravity;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.ViewGroup;
|
||||
@@ -22,8 +21,12 @@ import android.widget.HorizontalScrollView;
|
||||
import android.widget.ScrollView;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
import cc.winboll.studio.libaes.utils.AESThemeUtil;
|
||||
import cc.winboll.studio.libaes.utils.WinBoLLActivityManager;
|
||||
import cc.winboll.studio.libappbase.GlobalApplication;
|
||||
import cc.winboll.studio.libappbase.GlobalCrashActivity;
|
||||
import cc.winboll.studio.libappbase.ToastUtils;
|
||||
import cc.winboll.studio.libappbase.utils.CrashHandleNotifyUtils;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.Closeable;
|
||||
@@ -33,58 +36,63 @@ import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.io.PrintWriter;
|
||||
import java.io.StringWriter;
|
||||
import java.lang.Thread.UncaughtExceptionHandler;
|
||||
import java.text.DateFormat;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import cc.winboll.studio.libaes.utils.AESThemeUtil;
|
||||
import cc.winboll.studio.libaes.utils.WinBoLLActivityManager;
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class App extends GlobalApplication {
|
||||
|
||||
|
||||
public static final String TAG = "App";
|
||||
|
||||
|
||||
public static final String COMPONENT_EN1 = "cc.winboll.studio.winboll.MainActivityEN1";
|
||||
public static final String COMPONENT_CN1 = "cc.winboll.studio.winboll.MainActivityCN1";
|
||||
public static final String COMPONENT_CN2 = "cc.winboll.studio.winboll.MainActivityCN2";
|
||||
public static final String ACTION_SWITCHTO_EN1 = "cc.winboll.studio.winboll.App.ACTION_SWITCHTO_EN1";
|
||||
public static final String ACTION_SWITCHTO_CN1 = "cc.winboll.studio.winboll.App.ACTION_SWITCHTO_CN1";
|
||||
public static final String ACTION_SWITCHTO_CN2 = "cc.winboll.studio.winboll.App.ACTION_SWITCHTO_CN2";
|
||||
|
||||
|
||||
private static Handler MAIN_HANDLER = new Handler(Looper.getMainLooper());
|
||||
|
||||
|
||||
@Override
|
||||
public void onCreate() {
|
||||
super.onCreate();
|
||||
//setIsDebugging(BuildConfig.DEBUG);
|
||||
//setIsDebugging(false);
|
||||
|
||||
WinBoLLActivityManager.init(this);
|
||||
try {
|
||||
super.onCreate();
|
||||
|
||||
// 初始化 AES 主题工具(注入当前应用命名空间的主题ID列表,按 ThemeType.ordinal() 顺序)
|
||||
ArrayList<Integer> themeStyleList = new ArrayList<Integer>();
|
||||
themeStyleList.add(R.style.MyAppTheme); // AES(0)
|
||||
themeStyleList.add(R.style.MyDepthAppTheme); // DEPTH(1)
|
||||
themeStyleList.add(R.style.MySkyAppTheme); // SKY(2)
|
||||
themeStyleList.add(R.style.MyGoldenAppTheme); // GOLDEN(3)
|
||||
themeStyleList.add(R.style.MyBearingAppTheme); // BEARING(4)
|
||||
themeStyleList.add(R.style.MyMemorAppTheme); // MEMOR(5)
|
||||
themeStyleList.add(R.style.MyTaoAppTheme); // TAO(6)
|
||||
AESThemeUtil.init(themeStyleList);
|
||||
|
||||
// 初始化 Toast 框架
|
||||
ToastUtils.init(this);
|
||||
// 设置 Toast 布局样式
|
||||
//ToastUtils.setView(R.layout.view_toast);
|
||||
//ToastUtils.setStyle(new WhiteToastStyle());
|
||||
//ToastUtils.setGravity(Gravity.BOTTOM, 0, 200);
|
||||
|
||||
//CrashHandler.getInstance().registerGlobal(this);
|
||||
//CrashHandler.getInstance().registerPart(this);
|
||||
ToastUtils.init(this);
|
||||
|
||||
WinBoLLActivityManager.init(this);
|
||||
|
||||
// 初始化 AES 主题工具(注入当前应用命名空间的主题ID列表,按 ThemeType.ordinal() 顺序)
|
||||
ArrayList<Integer> themeStyleList = new ArrayList<Integer>();
|
||||
themeStyleList.add(R.style.MyAppTheme); // AES(0)
|
||||
themeStyleList.add(R.style.MyDepthAppTheme); // DEPTH(1)
|
||||
themeStyleList.add(R.style.MySkyAppTheme); // SKY(2)
|
||||
themeStyleList.add(R.style.MyGoldenAppTheme); // GOLDEN(3)
|
||||
themeStyleList.add(R.style.MyBearingAppTheme); // BEARING(4)
|
||||
themeStyleList.add(R.style.MyMemorAppTheme); // MEMOR(5)
|
||||
themeStyleList.add(R.style.MyTaoAppTheme); // TAO(6)
|
||||
AESThemeUtil.init(themeStyleList);
|
||||
|
||||
} 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,
|
||||
GlobalCrashActivity.class
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -92,8 +100,8 @@ public class App extends GlobalApplication {
|
||||
super.onTerminate();
|
||||
ToastUtils.release();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public static void write(InputStream input, OutputStream output) throws IOException {
|
||||
byte[] buf = new byte[1024 * 8];
|
||||
|
||||
Reference in New Issue
Block a user