AssetManager: re-extract native libs if APK file was updated

This commit is contained in:
Julian Winkler
2025-10-26 11:03:29 +01:00
parent 213b2029d8
commit 8a5625350e

View File

@@ -33,6 +33,7 @@ import java.net.URLDecoder;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Enumeration; import java.util.Enumeration;
import java.util.HashMap; import java.util.HashMap;
@@ -625,11 +626,11 @@ public final class AssetManager {
} }
} else { // single file } else { // single file
Path file = Paths.get(android.os.Environment.getExternalStorageDirectory().getPath(), target); Path file = Paths.get(android.os.Environment.getExternalStorageDirectory().getPath(), target);
if (!Files.exists(file)) { if (!Files.exists(file) || Files.getLastModifiedTime(file).toMillis() < Files.getLastModifiedTime(Paths.get(apk_path)).toMillis()) {
try (InputStream inputStream = ClassLoader.getSystemClassLoader().getResourceAsStream(path)) { try (InputStream inputStream = ClassLoader.getSystemClassLoader().getResourceAsStream(path)) {
if (inputStream != null) { if (inputStream != null) {
Files.createDirectories(file.getParent()); Files.createDirectories(file.getParent());
Files.copy(inputStream, file); Files.copy(inputStream, file, StandardCopyOption.REPLACE_EXISTING);
} }
} }
} }