From acdd3c88ccf29cfeb984b5081088237652245033 Mon Sep 17 00:00:00 2001 From: Julian Winkler Date: Fri, 1 Nov 2024 17:49:20 +0100 Subject: [PATCH] AssetManager: fix resource loading if APK path contains spaces Spaces will get encoded to %20 by the ClassLoader. We need to decode them again to get the original path. --- src/api-impl/android/content/res/AssetManager.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/api-impl/android/content/res/AssetManager.java b/src/api-impl/android/content/res/AssetManager.java index e959e630..6acd1a2c 100644 --- a/src/api-impl/android/content/res/AssetManager.java +++ b/src/api-impl/android/content/res/AssetManager.java @@ -28,6 +28,7 @@ import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.net.URL; +import java.net.URLDecoder; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -114,6 +115,7 @@ public final class AssetManager { paths.add(null); // reserve first slot for framework-res.apk while (resources.hasMoreElements()) { String path = resources.nextElement().getPath(); + path = URLDecoder.decode(path, "UTF-8"); if (path.contains("framework-res.apk")) // needs to be first, so it can be overridden paths.set(0, path); else if (!path.contains("com.google.android.gms")) // microg resources can not be merged