Skip to content

Commit 759ec57

Browse files
author
Fastace
committed
BUG标记:备份流程在 ResticBackupUtil.backupWithRestic() 方法中仍然卡住,没有看到任何 ResticBackupUtil 或 ResticExecutor 的调试日志输出
1 parent e7785b7 commit 759ec57

3 files changed

Lines changed: 30 additions & 22 deletions

File tree

source/core/service/src/main/kotlin/com/xayah/core/service/util/PackagesBackupUtil.kt

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -236,13 +236,16 @@ class PackagesBackupUtil @Inject constructor(
236236
return BackupResult.failed("Failed to get apk path of $packageName")
237237
}
238238

239-
// val resticUtil = ResticBackupUtil(context) // REMOVED local instantiation
240-
return resticUtil.backupWithRestic( // USED injected resticUtil
241-
sourcePath = srcDir, // 使用 srcDir 而不是 apkPath
239+
// 添加调试日志
240+
log { "About to call resticUtil.backupWithRestic()" }
241+
log { "resticUtil is null: ${resticUtil == null}" }
242+
log { "Source directory: $srcDir" }
243+
244+
val result = resticUtil.backupWithRestic(
245+
sourcePath = srcDir,
242246
localRepoPath = getLocalResticRepoPath(),
243247
password = getResticPassword(),
244248
onProgress = { progress: Float ->
245-
// 修复点: 移除同步调用,使用 launch 启动非阻塞更新 (257行)
246249
currentScope.launch {
247250
t.updateInfo(dataType = DataType.PACKAGE_APK, bytes = (progress * 100).toLong())
248251
}
@@ -253,8 +256,10 @@ class PackagesBackupUtil @Inject constructor(
253256
}
254257
}
255258
)
256-
}
257259

260+
log { "resticUtil.backupWithRestic() completed with result: $result" }
261+
return result
262+
}
258263
/**
259264
* Package data: USER, USER_DE, DATA, OBB, MEDIA
260265
*/

source/core/service/src/main/kotlin/com/xayah/core/service/util/ResticBackupUtil.kt

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.xayah.core.service.util
22

33
import android.content.Context
4+
import android.util.Log
45
import dagger.hilt.android.qualifiers.ApplicationContext
56
import javax.inject.Inject
67
import java.util.concurrent.CompletableFuture
@@ -13,34 +14,24 @@ import com.xayah.core.common.restic.ResticInitializationProvider // 使用接
1314

1415
class ResticBackupUtil @Inject constructor(
1516
@ApplicationContext private val context: Context,
16-
private val resticInitializationProvider: ResticInitializationProvider // 注入接口
17+
private val resticExecutor: ResticExecutor // 注入接口
1718
) {
18-
private val resticExecutor = ResticExecutor(context)
19-
2019
suspend fun backupWithRestic(
2120
sourcePath: String,
2221
localRepoPath: String,
2322
password: String,
2423
onProgress: (Float) -> Unit,
2524
onCancel: (() -> Unit)? = null
2625
): BackupResult {
27-
// 使用注入的接口检查初始化状态
28-
if (!resticInitializationProvider.isResticInitialized) {
29-
val initialized = resticInitializationProvider.waitForResticInitialization()
30-
if (!initialized) {
31-
return BackupResult.failed("Restic initialization timeout")
32-
}
33-
}
26+
Log.d("ResticBackupUtil", "Starting backupWithRestic")
27+
Log.d("ResticBackupUtil", "Source path: $sourcePath")
28+
Log.d("ResticBackupUtil", "Local repo path: $localRepoPath")
3429

35-
// 创建一个 CompletableFuture 作为取消信号
3630
val cancelFuture = CompletableFuture<Unit>()
37-
38-
// 如果提供了取消回调,将其绑定到 cancelFuture 的完成事件
39-
onCancel?.let {
40-
cancelFuture.thenRun { it() }
41-
}
31+
Log.d("ResticBackupUtil", "Created cancelFuture")
4232

4333
return try {
34+
Log.d("ResticBackupUtil", "Calling resticExecutor.executeBackup()")
4435
val summary = resticExecutor.executeBackup(
4536
repoPath = localRepoPath,
4637
password = password,

source/core/service/src/main/kotlin/com/xayah/core/service/util/ResticExecutor.kt

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ package com.xayah.core.service.util
33
import android.content.Context
44
import android.util.Log
55
import android.os.Build
6+
import dagger.hilt.android.qualifiers.ApplicationContext
7+
import javax.inject.Inject
68
import java.io.File
79
import java.io.InputStream
810
import java.nio.charset.Charset
@@ -15,7 +17,13 @@ import kotlinx.serialization.json.Json
1517
import kotlinx.serialization.decodeFromString
1618
import com.xayah.core.common.restic.ResticBinaryManager
1719

18-
class ResticExecutor(private val context: Context) {
20+
class ResticExecutor @Inject constructor (
21+
@ApplicationContext private val context: Context
22+
) {
23+
companion object {
24+
private const val TAG = "ResticExecutor"
25+
}
26+
1927
private val jsonFormat = Json { ignoreUnknownKeys = true }
2028
private val storageDir = File(context.filesDir, "restic")
2129
private val binaryManager = ResticBinaryManager(context)
@@ -100,6 +108,10 @@ class ResticExecutor(private val context: Context) {
100108
"--json"
101109
)
102110

111+
Log.d(TAG, "Starting backup with command: $command")
112+
Log.d(TAG, "Working directory: ${storageDir.absolutePath}")
113+
Log.d(TAG, "Repository: $repoPath")
114+
103115
val process = executeCommandWithPasswordFile(command, password)
104116
var summary: ResticBackupSummary? = null
105117

0 commit comments

Comments
 (0)