diff --git a/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionLoader.kt b/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionLoader.kt index c43af2fdc4..c40d781575 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionLoader.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionLoader.kt @@ -141,6 +141,11 @@ internal object ExtensionLoader { ?.asSequence() ?.filter { it.isFile && it.extension == PRIVATE_EXTENSION_EXTENSION } ?.mapNotNull { + // Just in case, since Android 14+ requires them to be read-only + if (it.canWrite()) { + it.setReadOnly() + } + val path = it.absolutePath pkgManager.getPackageArchiveInfo(path, PACKAGE_FLAGS) ?.apply { applicationInfo.fixBasePaths(path) } @@ -277,7 +282,12 @@ internal object ExtensionLoader { val hasReadme = appInfo.metaData.getInt(METADATA_HAS_README, 0) == 1 val hasChangelog = appInfo.metaData.getInt(METADATA_HAS_CHANGELOG, 0) == 1 - val classLoader = PathClassLoader(appInfo.sourceDir, null, context.classLoader) + val classLoader = try { + PathClassLoader(appInfo.sourceDir, null, context.classLoader) + } catch (e: Exception) { + logcat(LogPriority.ERROR, e) { "Extension load error: $extName ($pkgName)" } + return LoadResult.Error + } val sources = appInfo.metaData.getString(METADATA_SOURCE_CLASS)!! .split(";")