diff --git a/app/src/main/java/io/nekohasekai/sagernet/fmt/v2ray/StandardV2RayBean.java b/app/src/main/java/io/nekohasekai/sagernet/fmt/v2ray/StandardV2RayBean.java index 808c90e..add8fd1 100644 --- a/app/src/main/java/io/nekohasekai/sagernet/fmt/v2ray/StandardV2RayBean.java +++ b/app/src/main/java/io/nekohasekai/sagernet/fmt/v2ray/StandardV2RayBean.java @@ -187,8 +187,6 @@ public abstract class StandardV2RayBean extends AbstractBean { StandardV2RayBean bean = ((StandardV2RayBean) other); bean.allowInsecure = allowInsecure; bean.utlsFingerprint = utlsFingerprint; - bean.realityPubKey = realityPubKey; - bean.realityShortId = realityShortId; } public boolean isVLESS() { diff --git a/app/src/main/java/io/nekohasekai/sagernet/ui/AboutFragment.kt b/app/src/main/java/io/nekohasekai/sagernet/ui/AboutFragment.kt index 70760df..66c2321 100644 --- a/app/src/main/java/io/nekohasekai/sagernet/ui/AboutFragment.kt +++ b/app/src/main/java/io/nekohasekai/sagernet/ui/AboutFragment.kt @@ -104,6 +104,7 @@ class AboutFragment : ToolbarFragment(R.layout.layout_about) { } .build()) .apply { + PackageCache.awaitLoadSync() for ((_, pkg) in PackageCache.installedPluginPackages) { try { val pluginId = pkg.providers[0].loadString(Plugins.METADATA_KEY_ID) diff --git a/app/src/main/java/io/nekohasekai/sagernet/utils/PackageCache.kt b/app/src/main/java/io/nekohasekai/sagernet/utils/PackageCache.kt index 136563d..2ffaef8 100644 --- a/app/src/main/java/io/nekohasekai/sagernet/utils/PackageCache.kt +++ b/app/src/main/java/io/nekohasekai/sagernet/utils/PackageCache.kt @@ -11,6 +11,7 @@ import kotlinx.coroutines.runBlocking import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock import moe.matsuri.nb4a.plugin.Plugins +import java.util.concurrent.atomic.AtomicBoolean object PackageCache { @@ -20,9 +21,11 @@ object PackageCache { lateinit var packageMap: Map val uidMap = HashMap>() val loaded = Mutex(true) + var registerd = AtomicBoolean(false) // called from init (suspend) fun register() { + if (registerd.getAndSet(true)) return reload() app.listenForPackageChanges(false) { reload() @@ -77,6 +80,10 @@ object PackageCache { if (::packageMap.isInitialized) { return } + if (!registerd.get()) { + register() + return + } runBlocking { loaded.withLock { // just await