From 761f11fa5f32f70e6796cd262e869b7be03b5c8c Mon Sep 17 00:00:00 2001
From: Kr328 <39107975+Kr328@users.noreply.github.com>
Date: Mon, 13 Apr 2020 11:12:28 +0800
Subject: [PATCH] move utils to common
---
.../com/github/kr328/clash/BaseActivity.kt | 2 +-
.../kr328/clash/CreateProfileActivity.kt | 2 +-
.../github/kr328/clash/LogViewerActivity.kt | 2 +-
.../com/github/kr328/clash/LogcatService.kt | 6 ++---
.../com/github/kr328/clash/LogsActivity.kt | 4 +--
.../com/github/kr328/clash/MainActivity.kt | 4 +--
.../com/github/kr328/clash/OnBootReceiver.kt | 12 ++++-----
.../github/kr328/clash/ProfileEditActivity.kt | 2 +-
.../github/kr328/clash/ProfilesActivity.kt | 6 ++---
.../github/kr328/clash/SettingsActivity.kt | 2 +-
.../com/github/kr328/clash/remote/Remote.kt | 2 +-
.../github/kr328/clash/remote/RemoteUtils.kt | 2 +-
.../kr328/clash/settings/BehaviorFragment.kt | 2 +-
.../kr328/clash/settings/NetworkFragment.kt | 2 +-
.../github/kr328/clash/utils/ServiceUtils.kt | 4 +--
.../github/kr328/clash/common}/Constants.kt | 2 +-
.../common}/serialization/MergedParcels.kt | 2 +-
.../clash/common}/serialization/Parcels.kt | 2 +-
.../clash/common}/util/ComponentUtils.kt | 2 +-
.../kr328/clash/common}/util/LanguageUtils.kt | 2 +-
.../kr328/clash/common}/util/ServiceUtils.kt | 2 +-
.../clash/common}/utils/ByteFormatter.kt | 2 +-
.../github/kr328/clash/common}/utils/Log.kt | 4 +--
.../github/kr328/clash/core/event/LogEvent.kt | 2 +-
.../github/kr328/clash/core/model/General.kt | 2 +-
.../kr328/clash/core/model/ProxyGroupList.kt | 2 +-
service/src/main/AndroidManifest.xml | 7 ++++-
.../github/kr328/clash/service/BaseService.kt | 2 +-
.../kr328/clash/service/ClashNotification.kt | 4 +--
.../github/kr328/clash/service/Constants.kt | 2 ++
.../kr328/clash/service/ProfileReceiver.kt | 27 +++++++++++--------
.../clash/service/ServiceStatusProvider.kt | 11 ++++++++
.../clash/module/DynamicNotificationModule.kt | 4 +--
.../clash/service/data/DatabaseMigrations.kt | 2 +-
34 files changed, 79 insertions(+), 58 deletions(-)
rename {core/src/main/java/com/github/kr328/clash/core => common/src/main/java/com/github/kr328/clash/common}/Constants.kt (60%)
rename {core/src/main/java/com/github/kr328/clash/core => common/src/main/java/com/github/kr328/clash/common}/serialization/MergedParcels.kt (99%)
rename {core/src/main/java/com/github/kr328/clash/core => common/src/main/java/com/github/kr328/clash/common}/serialization/Parcels.kt (99%)
rename {service/src/main/java/com/github/kr328/clash/service => common/src/main/java/com/github/kr328/clash/common}/util/ComponentUtils.kt (88%)
rename {service/src/main/java/com/github/kr328/clash/service => common/src/main/java/com/github/kr328/clash/common}/util/LanguageUtils.kt (91%)
rename {service/src/main/java/com/github/kr328/clash/service => common/src/main/java/com/github/kr328/clash/common}/util/ServiceUtils.kt (86%)
rename {core/src/main/java/com/github/kr328/clash/core => common/src/main/java/com/github/kr328/clash/common}/utils/ByteFormatter.kt (94%)
rename {core/src/main/java/com/github/kr328/clash/core => common/src/main/java/com/github/kr328/clash/common}/utils/Log.kt (85%)
diff --git a/app/src/main/java/com/github/kr328/clash/BaseActivity.kt b/app/src/main/java/com/github/kr328/clash/BaseActivity.kt
index 7cf6e7a..fe3a0f0 100644
--- a/app/src/main/java/com/github/kr328/clash/BaseActivity.kt
+++ b/app/src/main/java/com/github/kr328/clash/BaseActivity.kt
@@ -15,7 +15,7 @@ import androidx.appcompat.widget.Toolbar
import androidx.coordinatorlayout.widget.CoordinatorLayout
import com.github.kr328.clash.preference.UiSettings
import com.github.kr328.clash.remote.Broadcasts
-import com.github.kr328.clash.service.util.createLanguageConfigurationContext
+import com.github.kr328.clash.common.util.createLanguageConfigurationContext
import com.google.android.material.snackbar.Snackbar
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.MainScope
diff --git a/app/src/main/java/com/github/kr328/clash/CreateProfileActivity.kt b/app/src/main/java/com/github/kr328/clash/CreateProfileActivity.kt
index 66e9466..c4546bf 100644
--- a/app/src/main/java/com/github/kr328/clash/CreateProfileActivity.kt
+++ b/app/src/main/java/com/github/kr328/clash/CreateProfileActivity.kt
@@ -13,7 +13,7 @@ import android.view.View
import android.view.ViewGroup
import android.widget.BaseAdapter
import android.widget.TextView
-import com.github.kr328.clash.service.util.intent
+import com.github.kr328.clash.common.util.intent
import kotlinx.android.synthetic.main.activity_create_profile.*
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
diff --git a/app/src/main/java/com/github/kr328/clash/LogViewerActivity.kt b/app/src/main/java/com/github/kr328/clash/LogViewerActivity.kt
index 4c0bf01..eb4c6e4 100644
--- a/app/src/main/java/com/github/kr328/clash/LogViewerActivity.kt
+++ b/app/src/main/java/com/github/kr328/clash/LogViewerActivity.kt
@@ -11,7 +11,7 @@ import androidx.recyclerview.widget.LinearLayoutManager
import com.github.kr328.clash.adapter.LiveLogAdapter
import com.github.kr328.clash.adapter.LogAdapter
import com.github.kr328.clash.core.event.LogEvent
-import com.github.kr328.clash.service.util.intent
+import com.github.kr328.clash.common.util.intent
import kotlinx.android.synthetic.main.activity_log_viewer.*
import kotlinx.coroutines.*
import kotlinx.coroutines.sync.Mutex
diff --git a/app/src/main/java/com/github/kr328/clash/LogcatService.kt b/app/src/main/java/com/github/kr328/clash/LogcatService.kt
index 4b84548..f69457e 100644
--- a/app/src/main/java/com/github/kr328/clash/LogcatService.kt
+++ b/app/src/main/java/com/github/kr328/clash/LogcatService.kt
@@ -16,15 +16,15 @@ import androidx.collection.CircularArray
import androidx.core.app.NotificationCompat
import androidx.core.app.NotificationManagerCompat
import com.github.kr328.clash.core.event.LogEvent
-import com.github.kr328.clash.core.utils.Log
+import com.github.kr328.clash.common.utils.Log
import com.github.kr328.clash.model.LogFile
import com.github.kr328.clash.preference.UiSettings
import com.github.kr328.clash.service.ClashManagerService
import com.github.kr328.clash.service.IClashManager
import com.github.kr328.clash.service.ipc.IStreamCallback
import com.github.kr328.clash.service.ipc.ParcelableContainer
-import com.github.kr328.clash.service.util.createLanguageConfigurationContext
-import com.github.kr328.clash.service.util.intent
+import com.github.kr328.clash.common.util.createLanguageConfigurationContext
+import com.github.kr328.clash.common.util.intent
import com.github.kr328.clash.utils.format
import com.github.kr328.clash.utils.logsDir
import kotlinx.coroutines.*
diff --git a/app/src/main/java/com/github/kr328/clash/LogsActivity.kt b/app/src/main/java/com/github/kr328/clash/LogsActivity.kt
index 7707142..038a2b3 100644
--- a/app/src/main/java/com/github/kr328/clash/LogsActivity.kt
+++ b/app/src/main/java/com/github/kr328/clash/LogsActivity.kt
@@ -14,8 +14,8 @@ import com.github.kr328.clash.adapter.LogFileAdapter
import com.github.kr328.clash.design.common.Category
import com.github.kr328.clash.design.view.CommonUiLayout
import com.github.kr328.clash.model.LogFile
-import com.github.kr328.clash.service.util.intent
-import com.github.kr328.clash.service.util.startForegroundServiceCompat
+import com.github.kr328.clash.common.util.intent
+import com.github.kr328.clash.common.util.startForegroundServiceCompat
import com.github.kr328.clash.utils.format
import com.github.kr328.clash.utils.logsDir
import com.google.android.material.bottomsheet.BottomSheetDialog
diff --git a/app/src/main/java/com/github/kr328/clash/MainActivity.kt b/app/src/main/java/com/github/kr328/clash/MainActivity.kt
index 4502a62..8cc1276 100644
--- a/app/src/main/java/com/github/kr328/clash/MainActivity.kt
+++ b/app/src/main/java/com/github/kr328/clash/MainActivity.kt
@@ -9,10 +9,10 @@ import android.view.ViewGroup
import android.widget.TextView
import androidx.appcompat.app.AlertDialog
import com.github.kr328.clash.core.model.General
-import com.github.kr328.clash.core.utils.asBytesString
+import com.github.kr328.clash.common.utils.asBytesString
import com.github.kr328.clash.remote.withClash
import com.github.kr328.clash.remote.withProfile
-import com.github.kr328.clash.service.util.intent
+import com.github.kr328.clash.common.util.intent
import com.github.kr328.clash.utils.startClashService
import com.github.kr328.clash.utils.stopClashService
import kotlinx.android.synthetic.main.activity_main.*
diff --git a/app/src/main/java/com/github/kr328/clash/OnBootReceiver.kt b/app/src/main/java/com/github/kr328/clash/OnBootReceiver.kt
index f10a529..e3d2626 100644
--- a/app/src/main/java/com/github/kr328/clash/OnBootReceiver.kt
+++ b/app/src/main/java/com/github/kr328/clash/OnBootReceiver.kt
@@ -5,8 +5,9 @@ import android.content.Context
import android.content.Intent
import com.github.kr328.clash.common.ids.Intents
import com.github.kr328.clash.service.ProfileBackgroundService
-import com.github.kr328.clash.service.util.componentName
-import com.github.kr328.clash.service.util.startForegroundServiceCompat
+import com.github.kr328.clash.common.util.componentName
+import com.github.kr328.clash.common.util.startForegroundServiceCompat
+import com.github.kr328.clash.service.Constants
import com.github.kr328.clash.utils.startClashService
class OnBootReceiver : BroadcastReceiver() {
@@ -14,10 +15,7 @@ class OnBootReceiver : BroadcastReceiver() {
if (intent?.action != Intent.ACTION_BOOT_COMPLETED || context == null)
return
- context.startClashService()
- context.startForegroundServiceCompat(
- Intent(Intents.INTENT_ACTION_PROFILE_SETUP)
- .setComponent(ProfileBackgroundService::class.componentName)
- )
+ if (context.cacheDir.resolve(Constants.CLASH_SERVICE_RUNNING_FILE).exists())
+ context.startClashService()
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/github/kr328/clash/ProfileEditActivity.kt b/app/src/main/java/com/github/kr328/clash/ProfileEditActivity.kt
index 631372b..c3d3d9a 100644
--- a/app/src/main/java/com/github/kr328/clash/ProfileEditActivity.kt
+++ b/app/src/main/java/com/github/kr328/clash/ProfileEditActivity.kt
@@ -8,7 +8,7 @@ import android.text.Html
import android.view.View
import android.webkit.MimeTypeMap
import androidx.appcompat.app.AlertDialog
-import com.github.kr328.clash.core.utils.Log
+import com.github.kr328.clash.common.utils.Log
import com.github.kr328.clash.design.common.TextInput
import com.github.kr328.clash.remote.withProfile
import com.github.kr328.clash.service.data.ProfileEntity
diff --git a/app/src/main/java/com/github/kr328/clash/ProfilesActivity.kt b/app/src/main/java/com/github/kr328/clash/ProfilesActivity.kt
index 35f1bd8..d9b96c0 100644
--- a/app/src/main/java/com/github/kr328/clash/ProfilesActivity.kt
+++ b/app/src/main/java/com/github/kr328/clash/ProfilesActivity.kt
@@ -10,9 +10,9 @@ import com.github.kr328.clash.common.ids.Intents
import com.github.kr328.clash.service.ProfileBackgroundService
import com.github.kr328.clash.service.data.ProfileEntity
import com.github.kr328.clash.service.transact.ProfileRequest
-import com.github.kr328.clash.service.util.componentName
-import com.github.kr328.clash.service.util.intent
-import com.github.kr328.clash.service.util.startForegroundServiceCompat
+import com.github.kr328.clash.common.util.componentName
+import com.github.kr328.clash.common.util.intent
+import com.github.kr328.clash.common.util.startForegroundServiceCompat
import com.github.kr328.clash.weight.ProfilesMenu
import kotlinx.android.synthetic.main.activity_profiles.*
import kotlinx.coroutines.Job
diff --git a/app/src/main/java/com/github/kr328/clash/SettingsActivity.kt b/app/src/main/java/com/github/kr328/clash/SettingsActivity.kt
index fc86e64..3c284d9 100644
--- a/app/src/main/java/com/github/kr328/clash/SettingsActivity.kt
+++ b/app/src/main/java/com/github/kr328/clash/SettingsActivity.kt
@@ -1,7 +1,7 @@
package com.github.kr328.clash
import android.os.Bundle
-import com.github.kr328.clash.service.util.intent
+import com.github.kr328.clash.common.util.intent
import kotlinx.android.synthetic.main.activity_settings.*
class SettingsActivity : BaseActivity() {
diff --git a/app/src/main/java/com/github/kr328/clash/remote/Remote.kt b/app/src/main/java/com/github/kr328/clash/remote/Remote.kt
index 843d616..d8c5493 100644
--- a/app/src/main/java/com/github/kr328/clash/remote/Remote.kt
+++ b/app/src/main/java/com/github/kr328/clash/remote/Remote.kt
@@ -18,7 +18,7 @@ import com.github.kr328.clash.service.ClashManagerService
import com.github.kr328.clash.service.IClashManager
import com.github.kr328.clash.service.IProfileService
import com.github.kr328.clash.service.ProfileService
-import com.github.kr328.clash.service.util.intent
+import com.github.kr328.clash.common.util.intent
import com.microsoft.appcenter.crashes.Crashes
import kotlinx.coroutines.*
import kotlinx.coroutines.channels.Channel
diff --git a/app/src/main/java/com/github/kr328/clash/remote/RemoteUtils.kt b/app/src/main/java/com/github/kr328/clash/remote/RemoteUtils.kt
index 118db9d..2b5a565 100644
--- a/app/src/main/java/com/github/kr328/clash/remote/RemoteUtils.kt
+++ b/app/src/main/java/com/github/kr328/clash/remote/RemoteUtils.kt
@@ -6,7 +6,7 @@ import android.net.Uri
import com.github.kr328.clash.ApkBrokenActivity
import com.github.kr328.clash.service.Constants
import com.github.kr328.clash.service.ServiceStatusProvider
-import com.github.kr328.clash.service.util.intent
+import com.github.kr328.clash.common.util.intent
object RemoteUtils {
fun detectClashRunning(context: Context): Boolean {
diff --git a/app/src/main/java/com/github/kr328/clash/settings/BehaviorFragment.kt b/app/src/main/java/com/github/kr328/clash/settings/BehaviorFragment.kt
index 537d942..8051376 100644
--- a/app/src/main/java/com/github/kr328/clash/settings/BehaviorFragment.kt
+++ b/app/src/main/java/com/github/kr328/clash/settings/BehaviorFragment.kt
@@ -6,7 +6,7 @@ import com.github.kr328.clash.OnBootReceiver
import com.github.kr328.clash.R
import com.github.kr328.clash.remote.Broadcasts
import com.github.kr328.clash.service.settings.ServiceSettings
-import com.github.kr328.clash.service.util.componentName
+import com.github.kr328.clash.common.util.componentName
class BehaviorFragment : BaseSettingFragment() {
companion object {
diff --git a/app/src/main/java/com/github/kr328/clash/settings/NetworkFragment.kt b/app/src/main/java/com/github/kr328/clash/settings/NetworkFragment.kt
index 0d40f57..8fbf7f2 100644
--- a/app/src/main/java/com/github/kr328/clash/settings/NetworkFragment.kt
+++ b/app/src/main/java/com/github/kr328/clash/settings/NetworkFragment.kt
@@ -6,7 +6,7 @@ import com.github.kr328.clash.R
import com.github.kr328.clash.preference.UiSettings
import com.github.kr328.clash.remote.Broadcasts
import com.github.kr328.clash.service.settings.ServiceSettings
-import com.github.kr328.clash.service.util.intent
+import com.github.kr328.clash.common.util.intent
class NetworkFragment : BaseSettingFragment() {
companion object {
diff --git a/app/src/main/java/com/github/kr328/clash/utils/ServiceUtils.kt b/app/src/main/java/com/github/kr328/clash/utils/ServiceUtils.kt
index edada0c..07b8d90 100644
--- a/app/src/main/java/com/github/kr328/clash/utils/ServiceUtils.kt
+++ b/app/src/main/java/com/github/kr328/clash/utils/ServiceUtils.kt
@@ -7,9 +7,9 @@ import com.github.kr328.clash.preference.UiSettings
import com.github.kr328.clash.service.ClashService
import com.github.kr328.clash.common.ids.Intents
import com.github.kr328.clash.service.TunService
-import com.github.kr328.clash.service.util.intent
+import com.github.kr328.clash.common.util.intent
import com.github.kr328.clash.service.util.sendBroadcastSelf
-import com.github.kr328.clash.service.util.startForegroundServiceCompat
+import com.github.kr328.clash.common.util.startForegroundServiceCompat
fun Context.startClashService(): Intent? {
val startTun = UiSettings(this).get(UiSettings.ENABLE_VPN)
diff --git a/core/src/main/java/com/github/kr328/clash/core/Constants.kt b/common/src/main/java/com/github/kr328/clash/common/Constants.kt
similarity index 60%
rename from core/src/main/java/com/github/kr328/clash/core/Constants.kt
rename to common/src/main/java/com/github/kr328/clash/common/Constants.kt
index e12fd69..da8b05c 100644
--- a/core/src/main/java/com/github/kr328/clash/core/Constants.kt
+++ b/common/src/main/java/com/github/kr328/clash/common/Constants.kt
@@ -1,4 +1,4 @@
-package com.github.kr328.clash.core
+package com.github.kr328.clash.common
object Constants {
const val TAG = "ClashForAndroid"
diff --git a/core/src/main/java/com/github/kr328/clash/core/serialization/MergedParcels.kt b/common/src/main/java/com/github/kr328/clash/common/serialization/MergedParcels.kt
similarity index 99%
rename from core/src/main/java/com/github/kr328/clash/core/serialization/MergedParcels.kt
rename to common/src/main/java/com/github/kr328/clash/common/serialization/MergedParcels.kt
index b50989b..5250ac5 100644
--- a/core/src/main/java/com/github/kr328/clash/core/serialization/MergedParcels.kt
+++ b/common/src/main/java/com/github/kr328/clash/common/serialization/MergedParcels.kt
@@ -1,4 +1,4 @@
-package com.github.kr328.clash.core.serialization
+package com.github.kr328.clash.common.serialization
import android.os.Parcel
import kotlinx.serialization.*
diff --git a/core/src/main/java/com/github/kr328/clash/core/serialization/Parcels.kt b/common/src/main/java/com/github/kr328/clash/common/serialization/Parcels.kt
similarity index 99%
rename from core/src/main/java/com/github/kr328/clash/core/serialization/Parcels.kt
rename to common/src/main/java/com/github/kr328/clash/common/serialization/Parcels.kt
index d235f56..bfa2a29 100644
--- a/core/src/main/java/com/github/kr328/clash/core/serialization/Parcels.kt
+++ b/common/src/main/java/com/github/kr328/clash/common/serialization/Parcels.kt
@@ -1,4 +1,4 @@
-package com.github.kr328.clash.core.serialization
+package com.github.kr328.clash.common.serialization
import android.os.Parcel
import kotlinx.serialization.*
diff --git a/service/src/main/java/com/github/kr328/clash/service/util/ComponentUtils.kt b/common/src/main/java/com/github/kr328/clash/common/util/ComponentUtils.kt
similarity index 88%
rename from service/src/main/java/com/github/kr328/clash/service/util/ComponentUtils.kt
rename to common/src/main/java/com/github/kr328/clash/common/util/ComponentUtils.kt
index 0b8cf2b..4d9c396 100644
--- a/service/src/main/java/com/github/kr328/clash/service/util/ComponentUtils.kt
+++ b/common/src/main/java/com/github/kr328/clash/common/util/ComponentUtils.kt
@@ -1,4 +1,4 @@
-package com.github.kr328.clash.service.util
+package com.github.kr328.clash.common.util
import android.content.ComponentName
import android.content.Intent
diff --git a/service/src/main/java/com/github/kr328/clash/service/util/LanguageUtils.kt b/common/src/main/java/com/github/kr328/clash/common/util/LanguageUtils.kt
similarity index 91%
rename from service/src/main/java/com/github/kr328/clash/service/util/LanguageUtils.kt
rename to common/src/main/java/com/github/kr328/clash/common/util/LanguageUtils.kt
index 1441547..f362c9e 100644
--- a/service/src/main/java/com/github/kr328/clash/service/util/LanguageUtils.kt
+++ b/common/src/main/java/com/github/kr328/clash/common/util/LanguageUtils.kt
@@ -1,4 +1,4 @@
-package com.github.kr328.clash.service.util
+package com.github.kr328.clash.common.util
import android.content.Context
import android.content.res.Configuration
diff --git a/service/src/main/java/com/github/kr328/clash/service/util/ServiceUtils.kt b/common/src/main/java/com/github/kr328/clash/common/util/ServiceUtils.kt
similarity index 86%
rename from service/src/main/java/com/github/kr328/clash/service/util/ServiceUtils.kt
rename to common/src/main/java/com/github/kr328/clash/common/util/ServiceUtils.kt
index fc2157c..9236edb 100644
--- a/service/src/main/java/com/github/kr328/clash/service/util/ServiceUtils.kt
+++ b/common/src/main/java/com/github/kr328/clash/common/util/ServiceUtils.kt
@@ -1,4 +1,4 @@
-package com.github.kr328.clash.service.util
+package com.github.kr328.clash.common.util
import android.content.Context
import android.content.Intent
diff --git a/core/src/main/java/com/github/kr328/clash/core/utils/ByteFormatter.kt b/common/src/main/java/com/github/kr328/clash/common/utils/ByteFormatter.kt
similarity index 94%
rename from core/src/main/java/com/github/kr328/clash/core/utils/ByteFormatter.kt
rename to common/src/main/java/com/github/kr328/clash/common/utils/ByteFormatter.kt
index 4e332e1..2842b18 100644
--- a/core/src/main/java/com/github/kr328/clash/core/utils/ByteFormatter.kt
+++ b/common/src/main/java/com/github/kr328/clash/common/utils/ByteFormatter.kt
@@ -1,4 +1,4 @@
-package com.github.kr328.clash.core.utils
+package com.github.kr328.clash.common.utils
object ByteFormatter {
fun byteToString(bytes: Long): String {
diff --git a/core/src/main/java/com/github/kr328/clash/core/utils/Log.kt b/common/src/main/java/com/github/kr328/clash/common/utils/Log.kt
similarity index 85%
rename from core/src/main/java/com/github/kr328/clash/core/utils/Log.kt
rename to common/src/main/java/com/github/kr328/clash/common/utils/Log.kt
index 654235e..73b53e4 100644
--- a/core/src/main/java/com/github/kr328/clash/core/utils/Log.kt
+++ b/common/src/main/java/com/github/kr328/clash/common/utils/Log.kt
@@ -1,6 +1,6 @@
-package com.github.kr328.clash.core.utils
+package com.github.kr328.clash.common.utils
-import com.github.kr328.clash.core.Constants.TAG
+import com.github.kr328.clash.common.Constants.TAG
object Log {
fun i(message: String, throwable: Throwable? = null) =
diff --git a/core/src/main/java/com/github/kr328/clash/core/event/LogEvent.kt b/core/src/main/java/com/github/kr328/clash/core/event/LogEvent.kt
index b3dc2b2..d452a6c 100644
--- a/core/src/main/java/com/github/kr328/clash/core/event/LogEvent.kt
+++ b/core/src/main/java/com/github/kr328/clash/core/event/LogEvent.kt
@@ -2,7 +2,7 @@ package com.github.kr328.clash.core.event
import android.os.Parcel
import android.os.Parcelable
-import com.github.kr328.clash.core.serialization.Parcels
+import com.github.kr328.clash.common.serialization.Parcels
import kotlinx.serialization.Serializable
@Serializable
diff --git a/core/src/main/java/com/github/kr328/clash/core/model/General.kt b/core/src/main/java/com/github/kr328/clash/core/model/General.kt
index 947247c..d638a0a 100644
--- a/core/src/main/java/com/github/kr328/clash/core/model/General.kt
+++ b/core/src/main/java/com/github/kr328/clash/core/model/General.kt
@@ -2,7 +2,7 @@ package com.github.kr328.clash.core.model
import android.os.Parcel
import android.os.Parcelable
-import com.github.kr328.clash.core.serialization.Parcels
+import com.github.kr328.clash.common.serialization.Parcels
import kotlinx.serialization.*
@Serializable
diff --git a/core/src/main/java/com/github/kr328/clash/core/model/ProxyGroupList.kt b/core/src/main/java/com/github/kr328/clash/core/model/ProxyGroupList.kt
index 194af0d..7d68a94 100644
--- a/core/src/main/java/com/github/kr328/clash/core/model/ProxyGroupList.kt
+++ b/core/src/main/java/com/github/kr328/clash/core/model/ProxyGroupList.kt
@@ -2,7 +2,7 @@ package com.github.kr328.clash.core.model
import android.os.Parcel
import android.os.Parcelable
-import com.github.kr328.clash.core.serialization.MergedParcels
+import com.github.kr328.clash.common.serialization.MergedParcels
import kotlinx.serialization.Serializable
@Serializable
diff --git a/service/src/main/AndroidManifest.xml b/service/src/main/AndroidManifest.xml
index a6cc7a4..a6d0c2c 100644
--- a/service/src/main/AndroidManifest.xml
+++ b/service/src/main/AndroidManifest.xml
@@ -67,6 +67,11 @@
android:name=".ProfileReceiver"
android:exported="false"
android:process=":background"
- android:permission="${applicationId}.permission.RECEIVE_BROADCASTS" />
+ android:permission="${applicationId}.permission.RECEIVE_BROADCASTS">
+
+
+
+
+
diff --git a/service/src/main/java/com/github/kr328/clash/service/BaseService.kt b/service/src/main/java/com/github/kr328/clash/service/BaseService.kt
index 5e450d1..671bafb 100644
--- a/service/src/main/java/com/github/kr328/clash/service/BaseService.kt
+++ b/service/src/main/java/com/github/kr328/clash/service/BaseService.kt
@@ -4,7 +4,7 @@ import android.app.Service
import android.content.Context
import com.github.kr328.clash.core.Clash
import com.github.kr328.clash.service.settings.ServiceSettings
-import com.github.kr328.clash.service.util.createLanguageConfigurationContext
+import com.github.kr328.clash.common.util.createLanguageConfigurationContext
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.MainScope
import kotlinx.coroutines.cancel
diff --git a/service/src/main/java/com/github/kr328/clash/service/ClashNotification.kt b/service/src/main/java/com/github/kr328/clash/service/ClashNotification.kt
index 6fc1e0c..3e09b4d 100644
--- a/service/src/main/java/com/github/kr328/clash/service/ClashNotification.kt
+++ b/service/src/main/java/com/github/kr328/clash/service/ClashNotification.kt
@@ -6,8 +6,8 @@ import android.os.Build
import androidx.core.app.NotificationCompat
import androidx.core.app.NotificationManagerCompat
import com.github.kr328.clash.core.Clash
-import com.github.kr328.clash.core.utils.asBytesString
-import com.github.kr328.clash.core.utils.asSpeedString
+import com.github.kr328.clash.common.utils.asBytesString
+import com.github.kr328.clash.common.utils.asSpeedString
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
diff --git a/service/src/main/java/com/github/kr328/clash/service/Constants.kt b/service/src/main/java/com/github/kr328/clash/service/Constants.kt
index c99d94b..6c8b144 100644
--- a/service/src/main/java/com/github/kr328/clash/service/Constants.kt
+++ b/service/src/main/java/com/github/kr328/clash/service/Constants.kt
@@ -8,4 +8,6 @@ object Constants {
const val PROFILE_PROVIDER_SUFFIX = ".profiles"
const val STATUS_PROVIDER_SUFFIX = ".status"
const val SETTING_PROVIDER_SUFFIX = ".settings"
+
+ const val CLASH_SERVICE_RUNNING_FILE = "clash_running"
}
\ No newline at end of file
diff --git a/service/src/main/java/com/github/kr328/clash/service/ProfileReceiver.kt b/service/src/main/java/com/github/kr328/clash/service/ProfileReceiver.kt
index c52bc52..3c8e67c 100644
--- a/service/src/main/java/com/github/kr328/clash/service/ProfileReceiver.kt
+++ b/service/src/main/java/com/github/kr328/clash/service/ProfileReceiver.kt
@@ -10,9 +10,9 @@ import com.github.kr328.clash.common.ids.Intents
import com.github.kr328.clash.common.ids.PendingIds
import com.github.kr328.clash.service.data.ProfileDao
import com.github.kr328.clash.service.model.toProfileMetadata
-import com.github.kr328.clash.service.util.componentName
-import com.github.kr328.clash.service.util.intent
-import com.github.kr328.clash.service.util.startForegroundServiceCompat
+import com.github.kr328.clash.common.util.componentName
+import com.github.kr328.clash.common.util.intent
+import com.github.kr328.clash.common.util.startForegroundServiceCompat
class ProfileReceiver : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
@@ -25,14 +25,7 @@ class ProfileReceiver : BroadcastReceiver() {
context.startForegroundServiceCompat(intent)
}
Intent.ACTION_BOOT_COMPLETED, Intent.ACTION_MY_PACKAGE_REPLACED -> {
- if (initialized)
- return
- initialized = true
-
- context.startForegroundServiceCompat(
- ProfileBackgroundService::class.intent
- .setAction(Intents.INTENT_ACTION_PROFILE_SETUP)
- )
+ tryInitialize(context)
}
}
}
@@ -41,6 +34,18 @@ class ProfileReceiver : BroadcastReceiver() {
private val requested = mutableMapOf()
private var initialized = false
+ @Synchronized
+ fun tryInitialize(context: Context) {
+ if ( initialized )
+ return
+ initialized = true
+
+ context.startForegroundServiceCompat(
+ ProfileBackgroundService::class.intent
+ .setAction(Intents.INTENT_ACTION_PROFILE_SETUP)
+ )
+ }
+
suspend fun requestNextUpdate(context: Context, id: Long) {
val metadata = ProfileDao.queryById(id)?.toProfileMetadata(context) ?: return
val service = context.getSystemService() ?: return
diff --git a/service/src/main/java/com/github/kr328/clash/service/ServiceStatusProvider.kt b/service/src/main/java/com/github/kr328/clash/service/ServiceStatusProvider.kt
index c55015b..8f02479 100644
--- a/service/src/main/java/com/github/kr328/clash/service/ServiceStatusProvider.kt
+++ b/service/src/main/java/com/github/kr328/clash/service/ServiceStatusProvider.kt
@@ -5,12 +5,23 @@ import android.content.ContentValues
import android.database.Cursor
import android.net.Uri
import android.os.Bundle
+import com.github.kr328.clash.common.Global
class ServiceStatusProvider : ContentProvider() {
companion object {
const val METHOD_PING_CLASH_SERVICE = "pingClashService"
var serviceRunning: Boolean = false
+ set(value) {
+ field = value
+
+ Global.application.cacheDir.resolve(Constants.CLASH_SERVICE_RUNNING_FILE).apply {
+ if (value)
+ createNewFile()
+ else
+ delete()
+ }
+ }
var currentProfile: String? = null
}
diff --git a/service/src/main/java/com/github/kr328/clash/service/clash/module/DynamicNotificationModule.kt b/service/src/main/java/com/github/kr328/clash/service/clash/module/DynamicNotificationModule.kt
index e6be95f..d38060d 100644
--- a/service/src/main/java/com/github/kr328/clash/service/clash/module/DynamicNotificationModule.kt
+++ b/service/src/main/java/com/github/kr328/clash/service/clash/module/DynamicNotificationModule.kt
@@ -9,8 +9,8 @@ import com.github.kr328.clash.common.ids.Intents
import com.github.kr328.clash.common.ids.NotificationChannels
import com.github.kr328.clash.common.ids.NotificationIds
import com.github.kr328.clash.core.Clash
-import com.github.kr328.clash.core.utils.asBytesString
-import com.github.kr328.clash.core.utils.asSpeedString
+import com.github.kr328.clash.common.utils.asBytesString
+import com.github.kr328.clash.common.utils.asSpeedString
import com.github.kr328.clash.service.R
import com.github.kr328.clash.service.ServiceStatusProvider
import kotlinx.coroutines.Dispatchers
diff --git a/service/src/main/java/com/github/kr328/clash/service/data/DatabaseMigrations.kt b/service/src/main/java/com/github/kr328/clash/service/data/DatabaseMigrations.kt
index a758230..9bcaaf7 100644
--- a/service/src/main/java/com/github/kr328/clash/service/data/DatabaseMigrations.kt
+++ b/service/src/main/java/com/github/kr328/clash/service/data/DatabaseMigrations.kt
@@ -8,7 +8,7 @@ import androidx.core.database.getStringOrNull
import androidx.room.migration.Migration
import androidx.sqlite.db.SupportSQLiteDatabase
import com.github.kr328.clash.common.Global
-import com.github.kr328.clash.core.utils.Log
+import com.github.kr328.clash.common.utils.Log
import com.github.kr328.clash.service.Constants
import com.github.kr328.clash.service.settings.ServiceSettings
import com.github.kr328.clash.service.util.resolveBaseDir