Skip to content

Commit

Permalink
android: do not put js file directly
Browse files Browse the repository at this point in the history
  • Loading branch information
penfeizhou authored and jingpeng committed Mar 29, 2023
1 parent 9c19a76 commit 9a6ae9b
Show file tree
Hide file tree
Showing 12 changed files with 88 additions and 37 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ public void onClick(View v) {
RootNode rootNode = new RootNode(doricContext);
rootNode.setRootView(doricPanel);
String filePath = getIntent().getStringExtra("file");
String json = DoricUtils.readAssetFile("src/" + filePath);
String json = DoricUtils.readAssetBinFile("src/" + filePath);
try {
long start = System.currentTimeMillis();
JSONObject jsonObject = new JSONObject(json);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,11 +63,12 @@
import pub.doric.devkit.qrcode.DisplayUtil;
import pub.doric.devkit.qrcode.activity.CaptureActivity;
import pub.doric.devkit.qrcode.activity.CodeUtils;
import pub.doric.utils.DoricUtils;

import static pub.doric.devkit.ui.DoricShowNodeTreeActivity.DORIC_CONTEXT_ID_KEY;

public class DoricDevActivity extends AppCompatActivity implements DoricDev.StatusCallback {
private int REQUEST_CODE = 100;
private final int REQUEST_CODE = 100;
private ContextCellAdapter cellAdapter;

@Override
Expand Down Expand Up @@ -282,26 +283,6 @@ public ContextCellHolder(@NonNull View itemView) {
}
}

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);
}

private 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 "";
}
}

private static class ContextCellAdapter extends RecyclerView.Adapter<ContextCellHolder> {
private final ArrayList<DoricContext> contexts = new ArrayList<>();
Expand Down Expand Up @@ -360,11 +341,11 @@ public void onClick(DialogInterface dialog, int which) {
context.getSource()));
String btnTitle = holder.itemView.getContext().getString(android.R.string.ok);
builder.setMessage(
String.format(Locale.getDefault(),
"Size:%d\nMD5:%s\nScript:\n%s",
context.getScript().length(),
md5(context.getScript()),
context.getScript()))
String.format(Locale.getDefault(),
"Size:%d\nMD5:%s\nScript:\n%s",
context.getScript().length(),
DoricUtils.md5(context.getScript()),
context.getScript()))
.setPositiveButton(btnTitle, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Expand Down
5 changes: 0 additions & 5 deletions doric-android/doric/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,6 @@ android {
consumerProguardFiles 'proguard-rules.pro'
}
}
sourceSets {
main {
assets.srcDirs = ["../../doric-js/bundle"]
}
}
}

dependencies {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
�޻������ߗ�����×�������×���������Ò���ߜ�������ݪ�������������Ë��������ߌ����ߙ��ߛ�����Ћ���������З�������Ý���������Ï������߷�����Џ�����Н�������Ì�����ߋ����݋���Е����������ߌ���ݗ�����Ќ����ћ����Л����҈��ѕ����Ќ���������Ì�����ߋ����݋���Е���������������ߙ�������ߞ���������������׌��������ߌ������߄������ߜ����ߌ��������������ߛ�������ќ�������������݌��������������ߌ������������ы������݋���Е�����������������ߌ������������і���ߌ��������������ߌ������������ь����ߌ������������ߛ�������ѝ���ў����������׌������������������߂�����ߙ�������ߍ������������������׌��������߄������ߜ����ߌ��������������ߛ�������ј�������������׌���������������ߛ�������ѝ���э����������׌������������������߂�����߱�����������э�����������Ќ��������З�����

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
؊��ߌ���������݊��ߌ����������������ߠ�������������������מ�����������߄����ߓ��ߝ���������������ߜ����ߚ�����������ؾ���������������������������������������������������������������������ߜ����ߝ������ߑ��ߪ���Ǿ����מ����������������ߜ����ߝ�����������ߝ����ѝ��������������ߜ����ߝ��������������ߝ������������������ߜ����ߒ�����������ߝ�����������ߝ�����������������ߓ��ߞ�ߝ�ߜ�ߛ�����ߓ��ߜ������������߲���ߓ���ߛ����߈���ߝ����ߖ�ߜ�����ߐ�������ߙ���׉��ߖ�����ߖ��ߒ����������ߖ��ߖ�����߄�����������߼������ߋ��ߋ����ߝ����ߖ���ߞߌ�����ߖ��������������ߜ�������ם��������������߃�ם���������΢������߃ߝ���������͢������������ߪ��ߝ�������ߋ�ߚ��������ҝ��ߌ�������ߙ���ߋ��ߋ��������������ߞ���ל���������������������������������������͡��������������������ߝ���ל�������������������������������������͡��������������������ߜ���ל����������������������������������͡�������������������ߛ��ߜ�������������������������͡����������������߼������ߋ��ߍ��ߝ�����ߌ�������ߋ�ߋ��ߞ����������߾����ߚ���������������ߝ��������ߚ�������������ߚ�������������ߚ�������������ߚ����������������߂�������߻���߈���ߋ��ߍ��������ߝ����ߞ��ߏ����������ߖ��ם������������������߄��������ߜ������ߝ�������������������������ߞ���ל����������������������������͡����������������������߬��ߋ����ߓ����ߌ����������ߝ���ߋ�߅�����������ߝ���ל�������������������������͡�������������ߝ��������ߚ�������������ߚ�����������������������߂����ߚ���ߖ��ם������������������߄��������ߜ�������ם����������������������߃ߝ������������������΢���������ߞ���ל���������������������������������͡��������������������ߝ���ל�������������������������������͡����������������������߬��ߋ����ߓ����ߌ����������ߝ���ߋ�߅�����������ߜ���ל����������������������������͡�������������ߝ��������ߚ�������������ߚ�������������ߚ����������������������߂����ߍ�����ߝ�����������������ߠ�����˫������������׉�߄����ߜ����ߝ��������������߈�����ў���׉������ߜ����ߓ����ߝ������������ѓ����������ߜ����ߝ������ߑ��ߪ���Ǿ����ד��������ߙ���ד��ߖ�����ߖ��ߓ���ߖ���߄��������ߝ���������ߝ������������ќ���������ז������߂����ߍ�����ߝ����ѝ�����������������ߠ������������׉�߄����ߌ������׋�����߉�߄��������ߜ����ݑ�������������������ߍ�����߄����������������ߋ�����ݑ�����������������������߉�����߉������������߂���������ߜ����݌�������������������ߍ�����߄����������������ߋ�����݌�����������������������߉�����߉������������߂���������ߜ����ݝ��������������������ߍ�����߄����������������ߋ�����ݝ������������������������߉�����߉������������߂���������ߜ����ݐ�������������������ߖ��׉ߖ���������߾�����������߄����������������ߍ�����߄��������������������ߋ�����ݞ��������������������������������߉�����ߠ�������������������׉�����������������߂�������������߂������������ߚ���ߖ��׉ߖ���������߾�����߄����������������߉љ������ך���߄��������������������ߋ�������ך������������������߂������������������ߍ�����߄��������������������ߋ�����ݞ��������������������������߉�����ߵ���ь��������׉�����������������߂�������������߂������������ߚ���߄����������������ߋ�������׉������������������ߍ�����߄��������������������ߋ�����ݐ���������������������������߉�����ߵ���ь��������׉�����������������߂�������������߂��������ߛ�������������������ߍ�����߄����������������ߋ�����ݑ���������������������߉�����ߊ��������������������߂�����߂��������ߜ������������������ߑ��߲�������ߝ���������������������ߋ�������א���߄����ߖ��א��ߖ���������߾�����������߄��������ߍ����������߂����ߖ��א��ߖ���������߾�����߄��������ߐ��љ������ך���߄ߋ�������ך��߂����������ߍ����������߂����߰�����њ������א���љ�������פ��߉�����߄��������ߖ��׋�����߉�����ݐ�������߄������������ߍ��������������߂��������ߖ��׉ߖ���������߾�����������߄������������ߜ����ߖ���ߟ���������ۄ�ԝ����������������������ߐ�������ߟ���������ۄ��������������������׉ւ��������������ߜ����������������ь��ז��߉����������߂��������ߚ���߄������������ߋ�������׉����������߂����߂�������������ߠ��������׉�߄����ߌ������׉ы����߄��������ߜ����ݑ�������������������ߍ�����߉щ�������������ߜ����݌�������������������ߍ�����߉щ�������������ߜ����ݝ��������������������ߍ�����߉щ�������������ߜ����ݐ���������������ߜ����ݞ������������������ߖ��׋�����߉щ���������،�������߄����������������ߍ�����ߵ���я����׉щ������������������߂������������ߍ�����߉щ�������������ߜ����ݞ������������������������ߜ����ߛ�����߱�����������љ���������������׉щ������������������ߍ�����ߠ�����˫������������כ���������������������������ߛ�������������������ߍ�����ߊ�������������߂�����������ߠ�������������������ב����ߞ����߄����߭������ь��׈������ߑ����ߵ���я����מ�����������������ߠ���������������������ב����߄����߭������ь��׈������ߑ����ߙ����������߄��������ߜ����ߞ�����ߤ����������ߙ���ד��ߖ�����ߖ��ߞ��������ѓ������ߖ���߄������������ߞ���я���נ������������מ����������������������߂��������ߜ����ߍ����߱�����������ќ���������ב����ߵ���ь��������מ��������������ߍ�����ߠ��������׵���я����׍���������߂�������������ߠ�������������א����������ߙ������������ߌ���������������߄�������߱�����������ѓ��ן�������ۄ������������ۄ��������������ۄ����������������֟�����ߋ��߄��������ߜ����ߋ�����������߭������ј��׈������ߐ�������������������ߜ����ߋ�������������߭������ј��׋����������ߙ���������������������ߜ����ߞ�����ߵ���я����׌������������������������ߜ����ߍ��������ߞ���ђ��ך���ߠ��������ך�����������ߜ����ߍ����߭������ў����׋������������ߋ����������ߍ����������������ߜ����ߍ����������ߍ����ߵ���ь��������נ������������׍���������������������߱�����������ѓ��ן�������ۄ��������������������߱�����������э�����������׍��������������߂����ߜ�����ך�߄��������߱�����������ѓ��ן������ۄ���ۄ�ь����������������߱�����������э��������������������߂�����������ߠ����������߄����߈�����ь�����������߭������ј��׈�������ݛ���������������������߈�����ь������������߭������ј��׈�������ݛ����������������������߈�����ќ�������������߭������ј��׈�������ݛ�����������������������߈�����ќ��������������߭������ј��׈�������ݛ�����������������������
Original file line number Diff line number Diff line change
Expand Up @@ -263,7 +263,7 @@ private void initDoricRuntime() {
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);
Expand All @@ -283,7 +283,7 @@ public void teardown() {
}

private void loadBuiltinJS(String assetName) {
String script = DoricUtils.readAssetFile(assetName);
String script = DoricUtils.readAssetBinFile(assetName);
mDoricJSE.loadJS(script, "Assets://" + assetName);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -279,7 +279,7 @@ public boolean filter(String url) {

@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);
}
Expand All @@ -292,7 +292,7 @@ public boolean filter(String url) {

@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);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
}
51 changes: 51 additions & 0 deletions doric-android/doric/src/main/java/pub/doric/utils/DoricUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,8 @@
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;

Expand All @@ -63,6 +65,55 @@
* @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 {
Expand Down
20 changes: 20 additions & 0 deletions doric-js/generateDts.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
const fs = require("fs");
const path = require("path");
const crypto = require("crypto");

async function work() {
const imageDts = await fs.promises.readFile("src/image.d.ts", "utf-8");
Expand All @@ -13,6 +15,24 @@ ${indexDts
${imageDts}
`;
await fs.promises.writeFile("index.d.ts", content);
const files = [
"bundle/doric-lib.js",
"bundle/doric-sandbox.js",
"bundle/doric-web.js",
"bundle/doric-web.html",
];
const androidAssets = "../doric-android/doric/src/main/assets";
for (let file of files) {
const md5 = crypto.createHash("md5");
md5.update(path.basename(file));
const name = md5.digest("hex").toLowerCase();
const data = await fs.promises.readFile(file);
const temp = new Uint8Array(data.buffer);
for (let i = 0; i < temp.length; i++) {
temp[i] = 0xff - temp[i];
}
await fs.promises.writeFile(path.resolve(androidAssets, name), data);
}
}

work();

0 comments on commit 9a6ae9b

Please sign in to comment.