diff --git a/packages/web_android_shell/.gitignore b/packages/web_android_shell/.gitignore
deleted file mode 100644
index 6f0d006..0000000
--- a/packages/web_android_shell/.gitignore
+++ /dev/null
@@ -1,45 +0,0 @@
-# Miscellaneous
-*.class
-*.log
-*.pyc
-*.swp
-.DS_Store
-.atom/
-.build/
-.buildlog/
-.history
-.svn/
-.swiftpm/
-migrate_working_dir/
-
-# IntelliJ related
-*.iml
-*.ipr
-*.iws
-.idea/
-
-# The .vscode folder contains launch configuration and tasks you configure in
-# VS Code which you may wish to be included in version control, so this line
-# is commented out by default.
-#.vscode/
-
-# Flutter/Dart/Pub related
-**/doc/api/
-**/ios/Flutter/.last_build_id
-.dart_tool/
-.flutter-plugins-dependencies
-.pub-cache/
-.pub/
-/build/
-/coverage/
-
-# Symbolication related
-app.*.symbols
-
-# Obfuscation related
-app.*.map.json
-
-# Android Studio will place build artifacts here
-/android/app/debug
-/android/app/profile
-/android/app/release
diff --git a/packages/web_android_shell/.metadata b/packages/web_android_shell/.metadata
deleted file mode 100644
index c0fe018..0000000
--- a/packages/web_android_shell/.metadata
+++ /dev/null
@@ -1,45 +0,0 @@
-# This file tracks properties of this Flutter project.
-# Used by Flutter tool to assess capabilities and perform upgrades etc.
-#
-# This file should be version controlled and should not be manually edited.
-
-version:
- revision: "90673a4eef275d1a6692c26ac80d6d746d41a73a"
- channel: "stable"
-
-project_type: app
-
-# Tracks metadata for the flutter migrate command
-migration:
- platforms:
- - platform: root
- create_revision: 90673a4eef275d1a6692c26ac80d6d746d41a73a
- base_revision: 90673a4eef275d1a6692c26ac80d6d746d41a73a
- - platform: android
- create_revision: 90673a4eef275d1a6692c26ac80d6d746d41a73a
- base_revision: 90673a4eef275d1a6692c26ac80d6d746d41a73a
- - platform: ios
- create_revision: 90673a4eef275d1a6692c26ac80d6d746d41a73a
- base_revision: 90673a4eef275d1a6692c26ac80d6d746d41a73a
- - platform: linux
- create_revision: 90673a4eef275d1a6692c26ac80d6d746d41a73a
- base_revision: 90673a4eef275d1a6692c26ac80d6d746d41a73a
- - platform: macos
- create_revision: 90673a4eef275d1a6692c26ac80d6d746d41a73a
- base_revision: 90673a4eef275d1a6692c26ac80d6d746d41a73a
- - platform: web
- create_revision: 90673a4eef275d1a6692c26ac80d6d746d41a73a
- base_revision: 90673a4eef275d1a6692c26ac80d6d746d41a73a
- - platform: windows
- create_revision: 90673a4eef275d1a6692c26ac80d6d746d41a73a
- base_revision: 90673a4eef275d1a6692c26ac80d6d746d41a73a
-
- # User provided section
-
- # List of Local paths (relative to this file) that should be
- # ignored by the migrate tool.
- #
- # Files that are not part of the templates will be ignored by default.
- unmanaged_files:
- - 'lib/main.dart'
- - 'ios/Runner.xcodeproj/project.pbxproj'
diff --git a/packages/web_android_shell/README.md b/packages/web_android_shell/README.md
deleted file mode 100644
index f5015e2..0000000
--- a/packages/web_android_shell/README.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# web_android_shell(已迁移)
-
-> ⚠️ 本包为旧版入口,已迁移至 Monorepo 架构。
-
-当前用途:为旧版 `MainActivity` 提供壳层入口,调用 `web_shell_core` 启动应用。
-
-新品牌应用请使用 `apps/` 目录下的独立应用,参考 [`apps/quanxue/`](../../apps/quanxue/)。
diff --git a/packages/web_android_shell/analysis_options.yaml b/packages/web_android_shell/analysis_options.yaml
deleted file mode 100644
index f13d6ae..0000000
--- a/packages/web_android_shell/analysis_options.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-# Dart 分析器配置,用于在开发阶段发现错误、警告和代码规范问题。
-# 可通过 `flutter analyze` 执行静态检查。
-include: package:flutter_lints/flutter.yaml
-
-linter:
- # 如需自定义规则,可在此处开启或关闭指定 lint。
- rules:
- # avoid_print: false # 取消注释后可关闭 `avoid_print` 规则。
- # prefer_single_quotes: true # 取消注释后可开启 `prefer_single_quotes` 规则。
diff --git a/packages/web_android_shell/android/.gitignore b/packages/web_android_shell/android/.gitignore
deleted file mode 100644
index c908258..0000000
--- a/packages/web_android_shell/android/.gitignore
+++ /dev/null
@@ -1,14 +0,0 @@
-gradle-wrapper.jar
-/.gradle
-/captures/
-/gradlew
-/gradlew.bat
-/local.properties
-GeneratedPluginRegistrant.java
-.cxx/
-
-# Remember to never publicly share your keystore.
-# See https://flutter.dev/to/reference-keystore
-key.properties
-**/*.keystore
-**/*.jks
diff --git a/packages/web_android_shell/android/app/build.gradle.kts b/packages/web_android_shell/android/app/build.gradle.kts
deleted file mode 100644
index 5fcd3e1..0000000
--- a/packages/web_android_shell/android/app/build.gradle.kts
+++ /dev/null
@@ -1,99 +0,0 @@
-plugins {
- id("com.android.application")
- id("kotlin-android")
- // Flutter Gradle 插件必须放在 Android 与 Kotlin Gradle 插件之后应用。
- id("dev.flutter.flutter-gradle-plugin")
-}
-
-import java.io.File
-import java.io.FileInputStream
-import java.util.Properties
-
-val keystoreProperties = Properties()
-val keystorePropertiesFile = rootProject.file("key.properties")
-if (keystorePropertiesFile.exists()) {
- FileInputStream(keystorePropertiesFile).use { keystoreProperties.load(it) }
-}
-
-val defaultReleaseStoreFile = rootProject.file("../../../tool/key.jks")
-fun resolveKeystoreFile(rawPath: String?): File {
- val candidate = rawPath?.trim().orEmpty()
- if (candidate.isEmpty()) {
- return defaultReleaseStoreFile
- }
-
- val expandedHome = if (candidate.startsWith("~/") || candidate == "~") {
- candidate.replaceFirst("~", System.getProperty("user.home"))
- } else {
- candidate
- }
-
- val normalized = expandedHome.replace('\\', File.separatorChar).replace('/', File.separatorChar)
- val storeFile = File(normalized)
- if (storeFile.isAbsolute) {
- return storeFile
- }
-
- val rootRelativeFile = rootProject.file(normalized)
- if (rootRelativeFile.exists()) {
- return rootRelativeFile
- }
-
- val moduleRelativeFile = project.file(normalized)
- if (moduleRelativeFile.exists()) {
- return moduleRelativeFile
- }
-
- return rootRelativeFile
-}
-
-val releaseStoreFile = resolveKeystoreFile(keystoreProperties["storeFile"] as String?)
-val releaseKeyAlias = keystoreProperties["keyAlias"] as String? ?: "my-key-alias"
-val releaseKeyPassword = keystoreProperties["keyPassword"] as String? ?: "123456"
-val releaseStorePassword = keystoreProperties["storePassword"] as String? ?: "123456"
-
-android {
- namespace = "com.yuanxuan.webshell.web_android_shell"
- compileSdk = flutter.compileSdkVersion
- ndkVersion = flutter.ndkVersion
-
- compileOptions {
- sourceCompatibility = JavaVersion.VERSION_17
- targetCompatibility = JavaVersion.VERSION_17
- }
-
- kotlinOptions {
- jvmTarget = JavaVersion.VERSION_17.toString()
- }
-
- defaultConfig {
- // 待补充:请替换成你自己的唯一应用标识。
- applicationId = "com.yuanxuan.webshell.web_android_shell"
- // 下面这些值可以按应用实际需求调整。
- // 更多说明可参考:https://flutter.dev/to/review-gradle-config。
- minSdk = flutter.minSdkVersion
- // 为兼容旧版系统 WebView,这里保持稳定的 targetSdk。
- targetSdk = 34
- versionCode = flutter.versionCode
- versionName = flutter.versionName
- }
-
- signingConfigs {
- create("release") {
- keyAlias = releaseKeyAlias
- keyPassword = releaseKeyPassword
- storeFile = releaseStoreFile
- storePassword = releaseStorePassword
- }
- }
-
- buildTypes {
- release {
- signingConfig = signingConfigs.getByName("release")
- }
- }
-}
-
-flutter {
- source = "../.."
-}
diff --git a/packages/web_android_shell/android/app/src/debug/AndroidManifest.xml b/packages/web_android_shell/android/app/src/debug/AndroidManifest.xml
deleted file mode 100644
index 8ffe024..0000000
--- a/packages/web_android_shell/android/app/src/debug/AndroidManifest.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
diff --git a/packages/web_android_shell/android/app/src/main/AndroidManifest.xml b/packages/web_android_shell/android/app/src/main/AndroidManifest.xml
deleted file mode 100644
index fe3afb2..0000000
--- a/packages/web_android_shell/android/app/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,129 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/packages/web_android_shell/android/app/src/main/java/com/yuanxuan/webshell/web_android_shell/MainActivity.java b/packages/web_android_shell/android/app/src/main/java/com/yuanxuan/webshell/web_android_shell/MainActivity.java
deleted file mode 100644
index ee38a3e..0000000
--- a/packages/web_android_shell/android/app/src/main/java/com/yuanxuan/webshell/web_android_shell/MainActivity.java
+++ /dev/null
@@ -1,241 +0,0 @@
-package com.yuanxuan.webshell.web_android_shell;
-
-import android.app.ActivityManager;
-import android.content.SharedPreferences;
-import android.content.pm.PackageInfo;
-import android.os.Build;
-import android.os.Bundle;
-import android.os.Process;
-import android.os.SystemClock;
-import android.webkit.CookieManager;
-import android.webkit.WebStorage;
-import android.webkit.WebView;
-
-import androidx.annotation.NonNull;
-
-import java.io.File;
-import java.util.HashMap;
-import java.util.Map;
-
-import io.flutter.embedding.android.FlutterActivity;
-import io.flutter.embedding.engine.FlutterEngine;
-import io.flutter.plugin.common.MethodChannel;
-
-public class MainActivity extends FlutterActivity {
- private static final String DEVICE_CHANNEL = "app_shell/device";
- private static final String DEBUG_PROCESS_PREFS = "app_shell_debug_process";
- private static final String DEBUG_PROCESS_PID_KEY = "pid";
- private String webViewDataDirectorySuffix;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- terminatePreviousDebugProcessIfNeeded();
- prepareWebViewDataDirectory();
- super.onCreate(savedInstanceState);
- registerCurrentDebugProcess();
- }
-
- @Override
- protected void onDestroy() {
- clearCurrentDebugProcessRegistration();
- super.onDestroy();
- }
-
- @Override
- public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
- super.configureFlutterEngine(flutterEngine);
- new MethodChannel(
- flutterEngine.getDartExecutor().getBinaryMessenger(),
- DEVICE_CHANNEL
- ).setMethodCallHandler((call, result) -> {
- switch (call.method) {
- case "getAndroidWebViewInfo":
- result.success(buildAndroidWebViewInfo());
- break;
- case "resetAndroidWebViewState":
- resetAndroidWebViewState(result);
- break;
- default:
- result.notImplemented();
- break;
- }
- });
- }
-
- private Map buildAndroidWebViewInfo() {
- final Map info = new HashMap<>();
- info.put("sdkInt", Build.VERSION.SDK_INT);
- info.put("manufacturer", Build.MANUFACTURER);
- info.put("brand", Build.BRAND);
- info.put("model", Build.MODEL);
- if (webViewDataDirectorySuffix != null) {
- info.put("webViewDataDirectorySuffix", webViewDataDirectorySuffix);
- }
-
- final PackageInfo currentWebViewPackage = getCurrentWebViewPackageCompat();
- if (currentWebViewPackage != null) {
- info.put("webViewPackageName", currentWebViewPackage.packageName);
- if (currentWebViewPackage.versionName != null) {
- info.put("webViewVersionName", currentWebViewPackage.versionName);
- }
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
- info.put(
- "webViewLongVersionCode",
- currentWebViewPackage.getLongVersionCode()
- );
- } else {
- info.put(
- "webViewLongVersionCode",
- (long) currentWebViewPackage.versionCode
- );
- }
- }
- return info;
- }
-
- private void prepareWebViewDataDirectory() {
- webViewDataDirectorySuffix = null;
- if (!isDebuggableBuild() || Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
- return;
- }
-
- clearLegacyDebugWebViewData();
- }
-
- private void terminatePreviousDebugProcessIfNeeded() {
- if (!isDebuggableBuild()) {
- return;
- }
-
- final SharedPreferences preferences = getSharedPreferences(
- DEBUG_PROCESS_PREFS,
- MODE_PRIVATE
- );
- final int currentPid = Process.myPid();
- final int previousPid = preferences.getInt(DEBUG_PROCESS_PID_KEY, -1);
- if (previousPid <= 0 || previousPid == currentPid) {
- return;
- }
-
- if (!isSamePackageProcessRunning(previousPid)) {
- preferences.edit().remove(DEBUG_PROCESS_PID_KEY).apply();
- return;
- }
-
- try {
- Process.killProcess(previousPid);
- SystemClock.sleep(180);
- } catch (RuntimeException ignored) {
- // 忽略终止旧进程失败的情况,并继续使用当前进程启动。
- }
- }
-
- private void registerCurrentDebugProcess() {
- if (!isDebuggableBuild()) {
- return;
- }
-
- getSharedPreferences(DEBUG_PROCESS_PREFS, MODE_PRIVATE)
- .edit()
- .putInt(DEBUG_PROCESS_PID_KEY, Process.myPid())
- .apply();
- }
-
- private void clearCurrentDebugProcessRegistration() {
- if (!isDebuggableBuild()) {
- return;
- }
-
- final SharedPreferences preferences = getSharedPreferences(
- DEBUG_PROCESS_PREFS,
- MODE_PRIVATE
- );
- if (preferences.getInt(DEBUG_PROCESS_PID_KEY, -1) != Process.myPid()) {
- return;
- }
- preferences.edit().remove(DEBUG_PROCESS_PID_KEY).apply();
- }
-
- private boolean isSamePackageProcessRunning(int pid) {
- final ActivityManager activityManager =
- (ActivityManager) getSystemService(ACTIVITY_SERVICE);
- if (activityManager == null) {
- return false;
- }
-
- for (final ActivityManager.RunningAppProcessInfo processInfo
- : activityManager.getRunningAppProcesses()) {
- if (processInfo.pid == pid) {
- return getPackageName().equals(processInfo.processName);
- }
- }
- return false;
- }
-
- private void clearLegacyDebugWebViewData() {
- try {
- final File appWebViewDir = new File(getApplicationInfo().dataDir, "app_webview");
- deleteRecursively(appWebViewDir);
- deleteDatabase("webview.db");
- deleteDatabase("webviewCache.db");
- } catch (RuntimeException ignored) {
- // 忽略旧设备上的清理失败,继续执行启动流程。
- }
- }
-
- private boolean isDebuggableBuild() {
- return (getApplicationInfo().flags & android.content.pm.ApplicationInfo.FLAG_DEBUGGABLE) != 0;
- }
-
- private void deleteRecursively(File target) {
- if (target == null || !target.exists()) {
- return;
- }
-
- if (target.isDirectory()) {
- final File[] children = target.listFiles();
- if (children != null) {
- for (final File child : children) {
- deleteRecursively(child);
- }
- }
- }
-
-
- target.delete();
- }
-
- private PackageInfo getCurrentWebViewPackageCompat() {
- try {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
- return WebView.getCurrentWebViewPackage();
- }
- } catch (RuntimeException ignored) {
- return null;
- }
- return null;
- }
-
- private void resetAndroidWebViewState(@NonNull MethodChannel.Result result) {
- try {
- WebStorage.getInstance().deleteAllData();
-
- final CookieManager cookieManager = CookieManager.getInstance();
- cookieManager.removeSessionCookies(null);
- cookieManager.removeAllCookies(value -> {
- try {
- cookieManager.flush();
- WebView.clearClientCertPreferences(() -> result.success(true));
- } catch (RuntimeException error) {
- result.error(
- "webview_reset_failed",
- error.toString(),
- null
- );
- }
- });
- } catch (RuntimeException error) {
- result.error("webview_reset_failed", error.toString(), null);
- }
- }
-}
diff --git a/packages/web_android_shell/android/app/src/main/res/drawable-v21/launch_background.xml b/packages/web_android_shell/android/app/src/main/res/drawable-v21/launch_background.xml
deleted file mode 100644
index 1cb7aa2..0000000
--- a/packages/web_android_shell/android/app/src/main/res/drawable-v21/launch_background.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/web_android_shell/android/app/src/main/res/drawable/launch_background.xml b/packages/web_android_shell/android/app/src/main/res/drawable/launch_background.xml
deleted file mode 100644
index 8403758..0000000
--- a/packages/web_android_shell/android/app/src/main/res/drawable/launch_background.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/web_android_shell/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/packages/web_android_shell/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
deleted file mode 100644
index db77bb4..0000000
Binary files a/packages/web_android_shell/android/app/src/main/res/mipmap-hdpi/ic_launcher.png and /dev/null differ
diff --git a/packages/web_android_shell/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/packages/web_android_shell/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
deleted file mode 100644
index 17987b7..0000000
Binary files a/packages/web_android_shell/android/app/src/main/res/mipmap-mdpi/ic_launcher.png and /dev/null differ
diff --git a/packages/web_android_shell/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/packages/web_android_shell/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
deleted file mode 100644
index 09d4391..0000000
Binary files a/packages/web_android_shell/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ
diff --git a/packages/web_android_shell/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/packages/web_android_shell/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
deleted file mode 100644
index d5f1c8d..0000000
Binary files a/packages/web_android_shell/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ
diff --git a/packages/web_android_shell/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/packages/web_android_shell/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
deleted file mode 100644
index 4d6372e..0000000
Binary files a/packages/web_android_shell/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ
diff --git a/packages/web_android_shell/android/app/src/main/res/values-night/styles.xml b/packages/web_android_shell/android/app/src/main/res/values-night/styles.xml
deleted file mode 100644
index 360a160..0000000
--- a/packages/web_android_shell/android/app/src/main/res/values-night/styles.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
diff --git a/packages/web_android_shell/android/app/src/main/res/values/styles.xml b/packages/web_android_shell/android/app/src/main/res/values/styles.xml
deleted file mode 100644
index 5fac679..0000000
--- a/packages/web_android_shell/android/app/src/main/res/values/styles.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
diff --git a/packages/web_android_shell/android/app/src/profile/AndroidManifest.xml b/packages/web_android_shell/android/app/src/profile/AndroidManifest.xml
deleted file mode 100644
index 8ffe024..0000000
--- a/packages/web_android_shell/android/app/src/profile/AndroidManifest.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
diff --git a/packages/web_android_shell/android/build.gradle.kts b/packages/web_android_shell/android/build.gradle.kts
deleted file mode 100644
index 1f88145..0000000
--- a/packages/web_android_shell/android/build.gradle.kts
+++ /dev/null
@@ -1,24 +0,0 @@
-allprojects {
- repositories {
- google()
- mavenCentral()
- }
-}
-
-val newBuildDir: Directory =
- rootProject.layout.buildDirectory
- .dir("../../build")
- .get()
-rootProject.layout.buildDirectory.value(newBuildDir)
-
-subprojects {
- val newSubprojectBuildDir: Directory = newBuildDir.dir(project.name)
- project.layout.buildDirectory.value(newSubprojectBuildDir)
-}
-subprojects {
- project.evaluationDependsOn(":app")
-}
-
-tasks.register("clean") {
- delete(rootProject.layout.buildDirectory)
-}
diff --git a/packages/web_android_shell/android/gradle.properties b/packages/web_android_shell/android/gradle.properties
deleted file mode 100644
index 4623a70..0000000
--- a/packages/web_android_shell/android/gradle.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-org.gradle.jvmargs=-Xmx8G -XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError
-org.gradle.parallel=false
-org.gradle.caching=false
-org.gradle.vfs.watch=false
-org.gradle.workers.max=1
-android.useAndroidX=true
diff --git a/packages/web_android_shell/android/gradle/wrapper/gradle-wrapper.properties b/packages/web_android_shell/android/gradle/wrapper/gradle-wrapper.properties
deleted file mode 100644
index 568dedc..0000000
--- a/packages/web_android_shell/android/gradle/wrapper/gradle-wrapper.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-distributionBase=GRADLE_USER_HOME
-distributionPath=wrapper/dists
-zipStoreBase=GRADLE_USER_HOME
-zipStorePath=wrapper/dists
-distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-8.14-bin.zip
diff --git a/packages/web_android_shell/android/settings.gradle.kts b/packages/web_android_shell/android/settings.gradle.kts
deleted file mode 100644
index 4dcef4b..0000000
--- a/packages/web_android_shell/android/settings.gradle.kts
+++ /dev/null
@@ -1,26 +0,0 @@
-pluginManagement {
- val flutterSdkPath =
- run {
- val properties = java.util.Properties()
- file("local.properties").inputStream().use { properties.load(it) }
- val flutterSdkPath = properties.getProperty("flutter.sdk")
- require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" }
- flutterSdkPath
- }
-
- includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")
-
- repositories {
- google()
- mavenCentral()
- gradlePluginPortal()
- }
-}
-
-plugins {
- id("dev.flutter.flutter-plugin-loader") version "1.0.0"
- id("com.android.application") version "8.11.1" apply false
- id("org.jetbrains.kotlin.android") version "2.2.20" apply false
-}
-
-include(":app")
diff --git a/packages/web_android_shell/lib/main.dart b/packages/web_android_shell/lib/main.dart
deleted file mode 100644
index f10f27b..0000000
--- a/packages/web_android_shell/lib/main.dart
+++ /dev/null
@@ -1,2078 +0,0 @@
-import 'dart:async';
-import 'dart:convert';
-
-import 'package:file_picker/file_picker.dart';
-import 'package:flutter/foundation.dart';
-import 'package:flutter/material.dart';
-import 'package:flutter/scheduler.dart';
-import 'package:flutter/services.dart';
-import 'package:image_picker/image_picker.dart';
-import 'package:permission_handler/permission_handler.dart';
-import 'package:url_launcher/url_launcher.dart';
-import 'package:webview_flutter/webview_flutter.dart';
-import 'package:webview_flutter_android/webview_flutter_android.dart';
-
-const String _defaultInitialUrl = 'http://xszy.lzzneng.com/login.html';
-const String _configuredInitialUrl = String.fromEnvironment(
- 'APP_INITIAL_URL',
- defaultValue: _defaultInitialUrl,
-);
-const String _appShellBridgeChannel = 'AppShellBridge';
-const String _appShellBridgeVersion = '1.0.0';
-const Duration _releaseStartupWatchdogDuration = Duration(seconds: 15);
-const Duration _debugStartupWatchdogDuration = Duration(seconds: 15);
-const double _pickedImageMaxWidth = 1600;
-const double _pickedImageMaxHeight = 1600;
-const int _pickedImageQuality = 85;
-const MethodChannel _appShellDeviceChannel = MethodChannel('app_shell/device');
-const int _legacyWebViewMajorVersionThreshold = 110;
-const Color _shellAccentColor = Color(0xFF3ED37B);
-const Color _shellBackgroundColor = Color(0xFFFFFFFF);
-const Color _shellTextColor = Color(0xFF1F2937);
-const Color _shellMutedTextColor = Color(0xFF6B7280);
-
-final Uri _initialUri = _resolveInitialUri();
-final String _initialUrl = _initialUri.toString();
-
-Uri _resolveInitialUri() {
- final String candidate = _configuredInitialUrl.trim();
- if (candidate.isEmpty) {
- return Uri.parse(_defaultInitialUrl);
- }
-
- final Uri? directUri = Uri.tryParse(candidate);
- if (directUri != null && directUri.hasScheme) {
- return directUri;
- }
-
- if (candidate.startsWith('//')) {
- final Uri? protocolRelativeUri = Uri.tryParse('https:$candidate');
- if (protocolRelativeUri != null && protocolRelativeUri.hasScheme) {
- return protocolRelativeUri;
- }
- }
-
- final Uri? httpsUri = Uri.tryParse('https://$candidate');
- if (httpsUri != null && httpsUri.hasScheme && httpsUri.host.isNotEmpty) {
- return httpsUri;
- }
- return Uri.parse(_defaultInitialUrl);
-}
-
-bool _supportsEmbeddedWebView({bool isWeb = kIsWeb, TargetPlatform? platform}) {
- if (isWeb) {
- return false;
- }
-
- final TargetPlatform target = platform ?? defaultTargetPlatform;
- return target == TargetPlatform.android;
-}
-
-Future main() async {
- WidgetsFlutterBinding.ensureInitialized();
- await SystemChrome.setPreferredOrientations(const [
- DeviceOrientation.portraitUp,
- DeviceOrientation.portraitDown,
- ]);
- await _enterImmersiveMode();
- runApp(const WebShellApp());
-}
-
-Future _enterImmersiveMode() async {
- await SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky);
- SystemChrome.setSystemUIOverlayStyle(
- const SystemUiOverlayStyle(
- statusBarColor: Colors.transparent,
- statusBarIconBrightness: Brightness.light,
- statusBarBrightness: Brightness.dark,
- systemNavigationBarColor: Colors.black,
- systemNavigationBarDividerColor: Colors.black,
- systemNavigationBarIconBrightness: Brightness.light,
- ),
- );
-}
-
-enum _AndroidRenderMode {
- texture,
- hybrid;
-
- bool get usesHybridComposition => this == _AndroidRenderMode.hybrid;
-
- String get logName => switch (this) {
- _AndroidRenderMode.texture => 'texture-layer',
- _AndroidRenderMode.hybrid => 'hybrid-composition',
- };
-
- String get displayName => switch (this) {
- _AndroidRenderMode.texture => '标准模式',
- _AndroidRenderMode.hybrid => '兼容模式',
- };
-}
-
-class _AndroidWebViewInfo {
- _AndroidWebViewInfo({
- required this.sdkInt,
- required this.manufacturer,
- required this.brand,
- required this.model,
- this.webViewDataDirectorySuffix,
- this.webViewPackageName,
- this.webViewVersionName,
- this.webViewLongVersionCode,
- }) : webViewMajorVersion = _parseWebViewMajorVersion(webViewVersionName);
-
- factory _AndroidWebViewInfo.fromMap(Map