This commit is contained in:
parent
f840740a1a
commit
65943334b1
|
|
@ -43,7 +43,7 @@ class DeveloperActivity : AppCompatActivity() {
|
|||
|
||||
val etUser = EditText(this).apply {
|
||||
hint = "账号"
|
||||
setText("test007")
|
||||
setText("test010")
|
||||
}
|
||||
layout.addView(etUser)
|
||||
|
||||
|
|
|
|||
|
|
@ -20,6 +20,9 @@ class MainActivity : AppCompatActivity() {
|
|||
companion object {
|
||||
private var instance: MainActivity? = null
|
||||
|
||||
@Volatile
|
||||
private var geckoRuntime: GeckoRuntime? = null
|
||||
|
||||
// 防止对话框堆叠
|
||||
@Volatile
|
||||
private var isConflictDialogShowing = false
|
||||
|
|
@ -186,7 +189,6 @@ class MainActivity : AppCompatActivity() {
|
|||
}
|
||||
|
||||
private var geckoSession: GeckoSession? = null
|
||||
private var geckoRuntime: GeckoRuntime? = null
|
||||
private var pttInterface: AndroidInterface? = null
|
||||
private var canGoBack = false
|
||||
private lateinit var geckoView: GeckoView
|
||||
|
|
@ -275,38 +277,46 @@ class MainActivity : AppCompatActivity() {
|
|||
}
|
||||
|
||||
private fun createGeckoRuntime(): GeckoRuntime {
|
||||
// 1. 将配置写入应用的本地沙盒文件 (YAML 格式)
|
||||
val configFile = java.io.File(filesDir, "geckoview-config.yaml")
|
||||
try {
|
||||
val configContent = """
|
||||
prefs:
|
||||
layout.testing.overlay-scrollbars.always-visible: true
|
||||
""".trimIndent()
|
||||
configFile.writeText(configContent)
|
||||
Timber.tag("MainActivity").d("Wrote GeckoView config to: ${configFile.absolutePath}")
|
||||
} catch (e: Exception) {
|
||||
Timber.tag("MainActivity").e(e, "Failed to write geckoview-config.yaml")
|
||||
synchronized(MainActivity::class.java) {
|
||||
val existing = geckoRuntime
|
||||
if (existing != null) {
|
||||
return existing
|
||||
}
|
||||
|
||||
// 1. 将配置写入应用的本地沙盒文件 (YAML 格式)
|
||||
val configFile = java.io.File(filesDir, "geckoview-config.yaml")
|
||||
try {
|
||||
val configContent = """
|
||||
prefs:
|
||||
layout.testing.overlay-scrollbars.always-visible: true
|
||||
""".trimIndent()
|
||||
configFile.writeText(configContent)
|
||||
Timber.tag("MainActivity").d("Wrote GeckoView config to: ${configFile.absolutePath}")
|
||||
} catch (e: Exception) {
|
||||
Timber.tag("MainActivity").e(e, "Failed to write geckoview-config.yaml")
|
||||
}
|
||||
|
||||
// 2. 通过 GeckoRuntimeSettings.Builder 加载该 YAML 配置文件并创建 GeckoRuntime 实例
|
||||
val settingsBuilder = org.mozilla.geckoview.GeckoRuntimeSettings.Builder()
|
||||
.aboutConfigEnabled(true)
|
||||
.consoleOutput(true)
|
||||
|
||||
if (configFile.exists()) {
|
||||
settingsBuilder.configFilePath(configFile.absolutePath)
|
||||
}
|
||||
|
||||
val runtime = GeckoRuntime.create(this.applicationContext, settingsBuilder.build())
|
||||
geckoRuntime = runtime
|
||||
|
||||
// 3. 强制清缓存,确保 JS/CSS 等资源获取最新版本
|
||||
try {
|
||||
// runtime.storageController.clearData(ClearFlags.ALL)
|
||||
Timber.tag("MainActivity").i("GeckoView cache cleared")
|
||||
} catch (e: Exception) {
|
||||
Timber.tag("MainActivity").w(e, "Failed to clear GeckoView cache")
|
||||
}
|
||||
return runtime
|
||||
}
|
||||
|
||||
// 2. 通过 GeckoRuntimeSettings.Builder 加载该 YAML 配置文件并创建 GeckoRuntime 实例
|
||||
val settingsBuilder = org.mozilla.geckoview.GeckoRuntimeSettings.Builder()
|
||||
.aboutConfigEnabled(true)
|
||||
.consoleOutput(true)
|
||||
|
||||
if (configFile.exists()) {
|
||||
settingsBuilder.configFilePath(configFile.absolutePath)
|
||||
}
|
||||
|
||||
val runtime = GeckoRuntime.create(this, settingsBuilder.build())
|
||||
|
||||
// 3. 强制清缓存,确保 JS/CSS 等资源获取最新版本
|
||||
try {
|
||||
// runtime.storageController.clearData(ClearFlags.ALL)
|
||||
Timber.tag("MainActivity").i("GeckoView cache cleared")
|
||||
} catch (e: Exception) {
|
||||
Timber.tag("MainActivity").w(e, "Failed to clear GeckoView cache")
|
||||
}
|
||||
return runtime
|
||||
}
|
||||
|
||||
private fun createSession(): GeckoSession {
|
||||
|
|
|
|||
|
|
@ -47,6 +47,9 @@ object GpioManager {
|
|||
handleGpioChange(currentValue)
|
||||
lastGpioValue = currentValue
|
||||
}
|
||||
} catch (e: InterruptedException) {
|
||||
Timber.tag("GPIO").i("GPIO thread interrupted, exiting gracefully")
|
||||
break
|
||||
} catch (e: Exception) {
|
||||
Timber.tag("GPIO").e(e, "Error in GPIO loop")
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue