Fix module not loaded after update

This commit is contained in:
Nullptr 2022-05-31 23:40:19 +08:00
parent 4493c45025
commit 14bc932249
No known key found for this signature in database
GPG Key ID: 0B9D02052FF536BD
2 changed files with 20 additions and 1 deletions

View File

@ -1,5 +1,7 @@
package org.lsposed.lspatch.config
import android.content.pm.PackageManager
import android.util.Log
import androidx.room.Room
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.ExperimentalCoroutinesApi
@ -9,9 +11,12 @@ import org.lsposed.lspatch.database.entity.Module
import org.lsposed.lspatch.database.entity.Scope
import org.lsposed.lspatch.lspApp
import org.lsposed.lspatch.util.ModuleLoader
import java.io.File
object ConfigManager {
private const val TAG = "ConfigManager"
@OptIn(ExperimentalCoroutinesApi::class)
private val dispatcher = Dispatchers.Default.limitedParallelism(1)
@ -59,7 +64,18 @@ object ConfigManager {
suspend fun getModuleFilesForApp(pkgName: String): List<org.lsposed.lspd.models.Module> =
withContext(dispatcher) {
val modules = scopeDao.getModulesForApp(pkgName)
return@withContext modules.map {
return@withContext modules.mapNotNull {
if (!File(it.apkPath).exists()) {
loadedModules.remove(it)
try {
it.apkPath = lspApp.packageManager.getApplicationInfo(it.pkgName, 0).sourceDir
} catch (e: PackageManager.NameNotFoundException) {
moduleDao.delete(moduleDao.getModule(it.pkgName))
Log.w(TAG, "Module may be uninstalled: ${it.pkgName}")
return@mapNotNull null
}
Log.i(TAG, "Module apk path updated: ${it.pkgName}")
}
loadedModules.getOrPut(it) {
org.lsposed.lspd.models.Module().apply {
packageName = it.pkgName

View File

@ -10,6 +10,9 @@ import org.lsposed.lspatch.database.entity.Module
@Dao
interface ModuleDao {
@Query("SELECT * FROM module WHERE pkgName = :pkgName")
suspend fun getModule(pkgName: String): Module
@Query("SELECT * FROM module")
suspend fun getAll(): List<Module>