Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 30 additions & 2 deletions app/src/main/java/moe/ono/core/NativeCoreBridge.java
Original file line number Diff line number Diff line change
@@ -1,15 +1,19 @@
package moe.ono.core;

import static moe.ono.util.io.FileUtils.copyFile;

import android.content.Context;

import androidx.annotation.NonNull;

import com.tencent.mmkv.MMKV;

import java.io.File;
import java.io.IOException;

import moe.ono.startup.StartupInfo;
import moe.ono.util.FileUtils;
import moe.ono.util.HostInfo;
import moe.ono.util.Logger;


public class NativeCoreBridge {
Expand Down Expand Up @@ -44,7 +48,11 @@ public static void initializeMmkvForPrimaryNativeLibrary(@NonNull Context ctx) {
if (sPrimaryNativeLibraryInitialized) {
return;
}
File filesDir = ctx.getFilesDir();
File filesDir = ctx.getExternalMediaDirs()[0];
if (filesDir == null) {
filesDir = ctx.getFilesDir();
}

File mmkvDir = new File(filesDir, "ono_mmkv");
if (!mmkvDir.exists()) {
mmkvDir.mkdirs();
Expand All @@ -54,6 +62,26 @@ public static void initializeMmkvForPrimaryNativeLibrary(@NonNull Context ctx) {
if (!cacheDir.exists()) {
cacheDir.mkdir();
}
File oldDir = new File(ctx.getFilesDir(), "ono_mmkv");
if (oldDir.exists() && oldDir.isDirectory()) {
File[] files = oldDir.listFiles();
if (files == null) return;

for (File src : files) {
if (!src.isFile()) continue;
File dest = new File(mmkvDir, src.getName());
if (!dest.exists()) {
try {
copyFile(src, dest);
Logger.i("Copy config file: " + src.getName());
} catch (IOException e) {
Logger.e(e);
}
}
}

FileUtils.deleteFile(oldDir);
}
MMKV.initialize(ctx, mmkvDir.getAbsolutePath());
MMKV.mmkvWithID("global_config", MMKV.MULTI_PROCESS_MODE);
MMKV.mmkvWithID("global_cache", MMKV.MULTI_PROCESS_MODE);
Expand Down