android: do not put js file directly
This commit is contained in:
@@ -263,7 +263,7 @@ public class DoricJSEngine implements Handler.Callback, DoricTimerExtension.Time
|
||||
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(legacy ? DoricConstant.DORIC_BUNDLE_LIB_ES5 : DoricConstant.DORIC_BUNDLE_LIB);
|
||||
String libJS = DoricUtils.readAssetBinFile(legacy ? DoricConstant.DORIC_BUNDLE_LIB_ES5 : DoricConstant.DORIC_BUNDLE_LIB);
|
||||
mDoricJSE.loadJS(packageModuleScript(libName, libJS), "Module://" + libName);
|
||||
} catch (Exception e) {
|
||||
mDoricRegistry.onException(null, e);
|
||||
@@ -283,7 +283,7 @@ public class DoricJSEngine implements Handler.Callback, DoricTimerExtension.Time
|
||||
}
|
||||
|
||||
private void loadBuiltinJS(String assetName) {
|
||||
String script = DoricUtils.readAssetFile(assetName);
|
||||
String script = DoricUtils.readAssetBinFile(assetName);
|
||||
mDoricJSE.loadJS(script, "Assets://" + assetName);
|
||||
}
|
||||
|
||||
|
||||
@@ -279,7 +279,7 @@ public class DoricWebShellJSExecutor implements IDoricJSE {
|
||||
|
||||
@Override
|
||||
public WebResourceResponse onIntercept(String url) {
|
||||
String content = DoricUtils.readAssetFile("doric-web.html");
|
||||
String content = DoricUtils.readAssetBinFile("doric-web.html");
|
||||
InputStream inputStream = new ByteArrayInputStream(content.getBytes());
|
||||
return new WebResourceResponse("text/html", "utf-8", inputStream);
|
||||
}
|
||||
@@ -292,7 +292,7 @@ public class DoricWebShellJSExecutor implements IDoricJSE {
|
||||
|
||||
@Override
|
||||
public WebResourceResponse onIntercept(String url) {
|
||||
String content = DoricUtils.readAssetFile("doric-web.js");
|
||||
String content = DoricUtils.readAssetBinFile("doric-web.js");
|
||||
InputStream inputStream = new ByteArrayInputStream(content.getBytes());
|
||||
return new WebResourceResponse("text/javascript", "utf-8", inputStream);
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@ public class DoricWebViewJSEngine extends DoricJSEngine {
|
||||
protected void initJSEngine() {
|
||||
mDoricJSE = new DoricWebViewJSExecutor(Doric.application());
|
||||
String assetName = "doric-web.js";
|
||||
String script = DoricUtils.readAssetFile(assetName);
|
||||
String script = DoricUtils.readAssetBinFile(assetName);
|
||||
mDoricJSE.loadJS(script, "Assets://" + assetName);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -54,6 +54,8 @@ import java.io.InputStream;
|
||||
import java.lang.reflect.Array;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.nio.ByteOrder;
|
||||
import java.nio.charset.Charset;
|
||||
import java.security.MessageDigest;
|
||||
|
||||
import pub.doric.Doric;
|
||||
|
||||
@@ -63,6 +65,55 @@ import pub.doric.Doric;
|
||||
* @CreateDate: 2019-07-18
|
||||
*/
|
||||
public class DoricUtils {
|
||||
public static String readAssetBinFile(String assetFile) {
|
||||
InputStream inputStream = null;
|
||||
try {
|
||||
|
||||
AssetManager assetManager = Doric.application().getAssets();
|
||||
String md5Name = md5(assetFile);
|
||||
inputStream = assetManager.open(md5Name);
|
||||
int length = inputStream.available();
|
||||
byte[] buffer = new byte[length];
|
||||
inputStream.read(buffer);
|
||||
for (int i = 0; i < buffer.length; i++) {
|
||||
buffer[i] = (byte) (0xff - buffer[i]);
|
||||
}
|
||||
return new String(buffer);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
if (inputStream != null) {
|
||||
try {
|
||||
inputStream.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
private static String toHex(byte[] bytes) {
|
||||
char[] hexDigits = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
|
||||
char[] resultCharArray = new char[bytes.length * 2];
|
||||
int index = 0;
|
||||
for (byte b : bytes) {
|
||||
resultCharArray[index++] = hexDigits[b >>> 4 & 0xf];
|
||||
resultCharArray[index++] = hexDigits[b & 0xf];
|
||||
}
|
||||
return new String(resultCharArray);
|
||||
}
|
||||
|
||||
public static String md5(String s) {
|
||||
try {
|
||||
MessageDigest md = MessageDigest.getInstance("MD5");
|
||||
byte[] bytes = md.digest(s.getBytes(Charset.forName("UTF-8")));
|
||||
return toHex(bytes);
|
||||
} catch (Exception e) {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
public static String readAssetFile(String assetFile) {
|
||||
InputStream inputStream = null;
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user