如果您的应用以 Android 14 为目标并使用动态代码加载 (DCL),则所有动态加载的文件都必须标记为只读,否则系统就会抛出异常。
目的:动态加载代码会大大增加应用程序因代码注入或代码篡改而受到危害的风险。(待了解)
- 例如 DEX、JAR 或 APK等 文件文件打开后和写入任何内容之前立即设置为只读:
val jar = File("DYNAMICALLY_LOADED_FILE.jar")
val os = FileOutputStream(jar)
os.use {
// Set the file to read-only first to prevent race conditions
jar.setReadOnly()
// Then write the actual file content
}
val cl = PathClassLoader(jar, parentClassLoader)