diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
deleted file mode 100644
index 13f353dbcff68c10140244eae0f49d84c5d1c632..0000000000000000000000000000000000000000
--- a/.github/FUNDING.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-# These are supported funding model platforms
-
-github: [Kr328]
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 3e6aaf6542d0cc9dfea6d4ed4d6308c00a8dd433..432bc4cb995d2a1003a0433d81b78670bbe60f70 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -20,11 +20,6 @@ dependencies {
     implementation(libs.androidx.coordinator)
     implementation(libs.androidx.recyclerview)
     implementation(libs.google.material)
-
-    val premiumImplementation by configurations
-
-    premiumImplementation(libs.appcenter.analytics)
-    premiumImplementation(libs.appcenter.crashes)
 }
 
 tasks.getByName("clean", type = Delete::class) {
diff --git a/app/src/foss/java/com/github/kr328/clash/Tracker.kt b/app/src/foss/java/com/github/kr328/clash/Tracker.kt
deleted file mode 100644
index 67dc8cfbf8e51f2ef2c8c4775cf516b87b0f83ad..0000000000000000000000000000000000000000
--- a/app/src/foss/java/com/github/kr328/clash/Tracker.kt
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.github.kr328.clash
-
-import android.app.Application
-
-@Suppress("UNUSED_PARAMETER")
-object Tracker {
-    fun initialize(application: Application) {
-        // do nothing
-    }
-
-    fun uploadLogcat(logcat: String) {
-        // do nothing
-    }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/github/kr328/clash/FilesActivity.kt b/app/src/main/java/com/github/kr328/clash/FilesActivity.kt
index c71e683079905251260cccfabd3e588afe141cc4..f0e2ba3bc56411727a3a77a4de3992146f67f8c7 100644
--- a/app/src/main/java/com/github/kr328/clash/FilesActivity.kt
+++ b/app/src/main/java/com/github/kr328/clash/FilesActivity.kt
@@ -116,7 +116,7 @@ class FilesActivity : BaseActivity<FilesDesign>() {
                             }
                             is FilesDesign.Request.ExportFile -> {
                                 val uri: Uri? = startActivityForResult(
-                                    ActivityResultContracts.CreateDocument(),
+                                    ActivityResultContracts.CreateDocument("text/plain"),
                                     it.file.name
                                 )
 
diff --git a/app/src/main/java/com/github/kr328/clash/LogcatActivity.kt b/app/src/main/java/com/github/kr328/clash/LogcatActivity.kt
index 0276852e6af24b88a8da3e9cc38f5bbe80e81655..4bd13c0f069b27698d5669f707a43e72a56b0b73 100644
--- a/app/src/main/java/com/github/kr328/clash/LogcatActivity.kt
+++ b/app/src/main/java/com/github/kr328/clash/LogcatActivity.kt
@@ -67,7 +67,7 @@ class LogcatActivity : BaseActivity<LogcatDesign>() {
                 }
                 LogcatDesign.Request.Export -> {
                     val output = startActivityForResult(
-                        ActivityResultContracts.CreateDocument(),
+                        ActivityResultContracts.CreateDocument("text/plain"),
                         file.fileName
                     )
 
diff --git a/app/src/main/java/com/github/kr328/clash/MainApplication.kt b/app/src/main/java/com/github/kr328/clash/MainApplication.kt
index 13fe5eb2da23f20c11f7e751608cb65e60878f38..d885d23252a8a568933b54fe9d7fec90c214a5a2 100644
--- a/app/src/main/java/com/github/kr328/clash/MainApplication.kt
+++ b/app/src/main/java/com/github/kr328/clash/MainApplication.kt
@@ -19,9 +19,6 @@ class MainApplication : Application() {
     override fun onCreate() {
         super.onCreate()
 
-        // Initialize AppCenter
-        Tracker.initialize(this)
-
         val processName = currentProcessName
 
         Log.d("Process $processName started")
diff --git a/app/src/main/java/com/github/kr328/clash/remote/Service.kt b/app/src/main/java/com/github/kr328/clash/remote/Service.kt
index 079c0ae4a622c4c378afed8cefa7f53bb8aae41f..4d4d5ab39daafe2706a672b0782b18352229c607 100644
--- a/app/src/main/java/com/github/kr328/clash/remote/Service.kt
+++ b/app/src/main/java/com/github/kr328/clash/remote/Service.kt
@@ -5,10 +5,8 @@ import android.content.ComponentName
 import android.content.Context
 import android.content.ServiceConnection
 import android.os.IBinder
-import com.github.kr328.clash.Tracker
 import com.github.kr328.clash.common.log.Log
 import com.github.kr328.clash.common.util.intent
-import com.github.kr328.clash.log.SystemLogcat
 import com.github.kr328.clash.service.RemoteService
 import com.github.kr328.clash.service.remote.IRemoteService
 import com.github.kr328.clash.service.remote.unwrap
@@ -28,8 +26,6 @@ class Service(private val context: Application, val crashed: () -> Unit) {
         override fun onServiceDisconnected(name: ComponentName?) {
             remote.set(null)
 
-            Tracker.uploadLogcat(SystemLogcat.dumpCrash())
-
             if (System.currentTimeMillis() - lastCrashed < TOGGLE_CRASHED_INTERVAL) {
                 unbind()
 
diff --git a/app/src/premium/java/com/github/kr328/clash/Tracker.kt b/app/src/premium/java/com/github/kr328/clash/Tracker.kt
deleted file mode 100644
index 40db4b270c13a0195edc3f8b88f8188289e97884..0000000000000000000000000000000000000000
--- a/app/src/premium/java/com/github/kr328/clash/Tracker.kt
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.github.kr328.clash
-
-import android.app.Application
-import com.microsoft.appcenter.AppCenter
-import com.microsoft.appcenter.analytics.Analytics
-import com.microsoft.appcenter.crashes.Crashes
-import com.microsoft.appcenter.crashes.ingestion.models.ErrorAttachmentLog
-
-object Tracker {
-    fun initialize(application: Application) {
-        if (!BuildConfig.DEBUG) {
-            AppCenter.start(
-                application,
-                BuildConfig.APP_CENTER_KEY,
-                Analytics::class.java, Crashes::class.java
-            )
-        }
-    }
-
-    fun uploadLogcat(logcat: String) {
-        if (!BuildConfig.DEBUG) {
-            if (logcat.isNotBlank()) {
-                Crashes.trackError(
-                    RuntimeException(),
-                    mapOf("type" to "app_crashed"),
-                    listOf(ErrorAttachmentLog.attachmentWithText(logcat, "logcat.txt"))
-                )
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/build.gradle.kts b/build.gradle.kts
index b7c902866795c8032325c0a6679f2835a8b0d6c7..6c488ea4ad4f0468154959f605ac5a8490e30d65 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -65,7 +65,9 @@ subprojects {
 
         if (isApp) {
             packagingOptions {
-                excludes.add("DebugProbesKt.bin")
+                resources {
+                    excludes.add("DebugProbesKt.bin")
+                }
             }
         }
 
@@ -88,19 +90,6 @@ subprojects {
                 versionNameSuffix = ".premium"
 
                 buildConfigField("boolean", "PREMIUM", "Boolean.parseBoolean(\"true\")")
-
-                val tracker = rootProject.file("tracker.properties")
-                if (tracker.exists()) {
-                    val prop = Properties().apply {
-                        tracker.inputStream().use(this::load)
-                    }
-
-                    buildConfigField(
-                        "String",
-                        "APP_CENTER_KEY",
-                        "\"${prop.getProperty("appcenter.key")!!}\""
-                    )
-                }
             }
         }
 
diff --git a/service/build.gradle.kts b/service/build.gradle.kts
index 190a16c714ef00d144c3c434d100d1128e97b14e..6fc86a1889f3cd8aeaddaf5fa0470aab65cfa36f 100644
--- a/service/build.gradle.kts
+++ b/service/build.gradle.kts
@@ -1,6 +1,5 @@
 plugins {
     kotlin("android")
-    kotlin("kapt")
     id("kotlinx-serialization")
     id("com.android.library")
     id("com.google.devtools.ksp")
@@ -11,7 +10,7 @@ dependencies {
     implementation(project(":common"))
 
     ksp(libs.kaidl.compiler)
-    kapt(libs.androidx.room.compiler)
+    ksp(libs.androidx.room.compiler)
 
     implementation(libs.kotlin.coroutine)
     implementation(libs.kotlin.serialization.json)
@@ -25,7 +24,8 @@ dependencies {
 afterEvaluate {
     android {
         libraryVariants.forEach {
-            sourceSets[it.name].java.srcDir(buildDir.resolve("generated/ksp/${it.name}/kotlin"))
+            sourceSets[it.name].kotlin.srcDir(buildDir.resolve("generated/ksp/${it.name}/kotlin"))
+            sourceSets[it.name].java.srcDir(buildDir.resolve("generated/ksp/${it.name}/java"))
         }
     }
 }
\ No newline at end of file
diff --git a/settings.gradle.kts b/settings.gradle.kts
index 912a657cfa5a713392bc11a86735c414805802c0..bdbabdaa42a57819981ee818d296b96d50c30592 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -18,21 +18,20 @@ pluginManagement {
 dependencyResolutionManagement {
     versionCatalogs {
         create("libs") {
-            val agp = "7.2.0"
-            val kotlin = "1.6.21"
-            val ksp = "$kotlin-1.0.5"
+            val agp = "7.2.1"
+            val kotlin = "1.7.0"
+            val ksp = "$kotlin-1.0.6"
             val golang = "1.0.4"
-            val coroutine = "1.6.1"
-            val coreKtx = "1.7.0"
-            val activity = "1.4.0"
-            val fragment = "1.4.1"
-            val appcompat = "1.4.1"
+            val coroutine = "1.6.3"
+            val coreKtx = "1.8.0"
+            val activity = "1.5.0"
+            val fragment = "1.5.0"
+            val appcompat = "1.4.2"
             val coordinator = "1.2.0"
             val recyclerview = "1.2.1"
             val viewpager = "1.0.0"
-            val material = "1.6.0"
-            val appcenter = "4.4.3"
-            val serialization = "1.3.2"
+            val material = "1.6.1"
+            val serialization = "1.3.3"
             val kaidl = "1.15"
             val room = "2.4.2"
             val multiprocess = "1.0.0"
@@ -55,8 +54,6 @@ dependencyResolutionManagement {
             library("androidx-room-runtime", "androidx.room:room-runtime:$room")
             library("androidx-room-ktx", "androidx.room:room-ktx:$room")
             library("google-material", "com.google.android.material:material:$material")
-            library("appcenter-analytics", "com.microsoft.appcenter:appcenter-analytics:$appcenter")
-            library("appcenter-crashes", "com.microsoft.appcenter:appcenter-crashes:$appcenter")
             library("kaidl-compiler", "com.github.kr328.kaidl:kaidl:$kaidl")
             library("kaidl-runtime", "com.github.kr328.kaidl:kaidl-runtime:$kaidl")
             library("rikkax-multiprocess", "dev.rikka.rikkax.preference:multiprocess:$multiprocess")