feat: Native add legacy mode

This commit is contained in:
pengfei.zhou
2022-07-15 15:59:06 +08:00
committed by osborn
parent 64a370c701
commit 7a126531af
21 changed files with 15180 additions and 15119 deletions

View File

@@ -92,4 +92,8 @@ public class Doric {
public static DoricJSLoaderManager getJSLoaderManager() {
return DoricSingleton.getInstance().getJSLoaderManager();
}
public static void setLegacyMode(boolean legacyMode) {
DoricSingleton.getInstance().legacyMode = legacyMode;
}
}

View File

@@ -44,6 +44,7 @@ public class DoricSingleton {
boolean enableRenderSnapshot = false;
private DoricNativeDriver nativeDriver;
private final DoricContextManager doricContextManager = new DoricContextManager();
public boolean legacyMode = false;
private static class Inner {
private static final DoricSingleton sInstance = new DoricSingleton();

View File

@@ -43,6 +43,7 @@ import pub.doric.Doric;
import pub.doric.DoricContext;
import pub.doric.DoricContextManager;
import pub.doric.DoricRegistry;
import pub.doric.DoricSingleton;
import pub.doric.IDoricMonitor;
import pub.doric.extension.bridge.DoricBridgeExtension;
import pub.doric.extension.timer.DoricTimerExtension;
@@ -109,14 +110,14 @@ public class DoricJSEngine implements Handler.Callback, DoricTimerExtension.Time
e.printStackTrace(new PrintWriter(stringWriter));
mDoricRegistry.onLog(Log.ERROR, stringWriter.toString());
//In case some unexpected errors happened
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
// mDoricRegistry.onLog(Log.WARN, "Use DoricWebViewJSExecutor");
// mDoricJSE = new DoricWebViewJSExecutor(Doric.application());
// loadBuiltinJS("doric-web.js");
// } else {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
mDoricRegistry.onLog(Log.WARN, "Use DoricWebViewJSExecutor");
mDoricJSE = new DoricWebViewJSExecutor(Doric.application());
loadBuiltinJS("doric-web.js");
} else {
mDoricRegistry.onLog(Log.WARN, "Use DoricWebShellJSExecutor");
mDoricJSE = new DoricWebShellJSExecutor(Doric.application());
// }
}
}
}
@@ -260,9 +261,10 @@ public class DoricJSEngine implements Handler.Callback, DoricTimerExtension.Time
private void initDoricRuntime() {
try {
loadBuiltinJS(DoricConstant.DORIC_BUNDLE_SANDBOX);
boolean legacy = DoricSingleton.getInstance().legacyMode;
loadBuiltinJS(legacy ? DoricConstant.DORIC_BUNDLE_SANDBOX_ES5 : DoricConstant.DORIC_BUNDLE_SANDBOX);
String libName = DoricConstant.DORIC_MODULE_LIB;
String libJS = DoricUtils.readAssetFile(DoricConstant.DORIC_BUNDLE_LIB);
String libJS = DoricUtils.readAssetFile(legacy ? DoricConstant.DORIC_BUNDLE_LIB_ES5 : DoricConstant.DORIC_BUNDLE_LIB);
mDoricJSE.loadJS(packageModuleScript(libName, libJS), "Module://" + libName);
} catch (Exception e) {
mDoricRegistry.onException(null, e);

View File

@@ -22,7 +22,9 @@ package pub.doric.utils;
*/
public class DoricConstant {
public static final String DORIC_BUNDLE_SANDBOX = "doric-sandbox.js";
public static final String DORIC_BUNDLE_SANDBOX_ES5 = "doric-sandbox.es5.js";
public static final String DORIC_BUNDLE_LIB = "doric-lib.js";
public static final String DORIC_BUNDLE_LIB_ES5 = "doric-lib.es5.js";
public static final String DORIC_MODULE_LIB = "doric";