diff --git a/Android/app/build.gradle b/Android/app/build.gradle index 9439a4fa..97fb3689 100644 --- a/Android/app/build.gradle +++ b/Android/app/build.gradle @@ -22,6 +22,7 @@ android { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'androidx.appcompat:appcompat:1.1.0' + implementation "com.google.android.material:material:1.0.0" implementation project(':doric') implementation 'com.github.bumptech.glide:glide:4.10.0' implementation 'com.github.bumptech.glide:annotations:4.10.0' diff --git a/Android/app/src/main/java/pub/doric/demo/DemoActivity.java b/Android/app/src/main/java/pub/doric/demo/DemoActivity.java index 31d88f4b..e9048e58 100644 --- a/Android/app/src/main/java/pub/doric/demo/DemoActivity.java +++ b/Android/app/src/main/java/pub/doric/demo/DemoActivity.java @@ -28,11 +28,16 @@ import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; +import java.util.ArrayList; + import pub.doric.DoricContext; -import pub.doric.dev.DevPanel; -import pub.doric.dev.SensorManagerHelper; -import pub.doric.dev.event.EnterDebugEvent; -import pub.doric.dev.event.QuitDebugEvent; +import pub.doric.DoricContextManager; +import pub.doric.devkit.DataModel; +import pub.doric.devkit.event.EnterDebugEvent; +import pub.doric.devkit.event.QuitDebugEvent; +import pub.doric.devkit.event.ReloadEvent; +import pub.doric.devkit.ui.DevPanel; +import pub.doric.devkit.util.SensorManagerHelper; import pub.doric.utils.DoricUtils; /** @@ -63,7 +68,12 @@ public class DemoActivity extends AppCompatActivity { if (devPanel != null && devPanel.isAdded()) { return; } - new DevPanel().show(getSupportFragmentManager(), "DevPanel"); + + ArrayList dataModels = new ArrayList<>(); + for (DoricContext doricContext : DoricContextManager.aliveContexts()) { + dataModels.add(new DataModel(doricContext.getContextId(), doricContext.getSource())); + } + new DevPanel(dataModels).show(getSupportFragmentManager(), "DevPanel"); } }); } @@ -100,6 +110,15 @@ public class DemoActivity extends AppCompatActivity { doricContext.startDebug(); } + @Subscribe(threadMode = ThreadMode.MAIN) + public void onReloadEvent(ReloadEvent reloadEvent) { + for (DoricContext context : DoricContextManager.aliveContexts()) { + if (reloadEvent.source.contains(context.getSource())) { + context.reload(reloadEvent.script); + } + } + } + @Subscribe(threadMode = ThreadMode.MAIN) public void onQuitDebugEvent(QuitDebugEvent quitDebugEvent) { doricContext.stopDebug(); @@ -108,7 +127,11 @@ public class DemoActivity extends AppCompatActivity { @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (KeyEvent.KEYCODE_MENU == event.getKeyCode()) { - new DevPanel().show(getSupportFragmentManager(), "DevPanel"); + ArrayList dataModels = new ArrayList<>(); + for (DoricContext doricContext : DoricContextManager.aliveContexts()) { + dataModels.add(new DataModel(doricContext.getContextId(), doricContext.getSource())); + } + new DevPanel(dataModels).show(getSupportFragmentManager(), "DevPanel"); } return super.onKeyDown(keyCode, event); } diff --git a/Android/devkit/.gitignore b/Android/devkit/.gitignore new file mode 100644 index 00000000..796b96d1 --- /dev/null +++ b/Android/devkit/.gitignore @@ -0,0 +1 @@ +/build diff --git a/Android/devkit/build.gradle b/Android/devkit/build.gradle new file mode 100644 index 00000000..3a38d83f --- /dev/null +++ b/Android/devkit/build.gradle @@ -0,0 +1,51 @@ +apply plugin: 'com.android.library' + +def projectHome = project.rootDir.getParent() + "/demo" + +android { + compileSdkVersion 29 + buildToolsVersion "29.0.2" + + + defaultConfig { + minSdkVersion 16 + targetSdkVersion 29 + versionCode 1 + versionName "1.0" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + consumerProguardFiles 'consumer-rules.pro' + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + + debug { + buildConfigField "String", "PROJECT_HOME", "\"${projectHome}\"" + } + } + +} + +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar']) + + implementation 'com.github.pengfeizhou:jsc4a:0.1.0' + implementation 'androidx.appcompat:appcompat:1.1.0' + implementation "com.google.android.material:material:1.0.0" + implementation 'com.squareup.okhttp3:okhttp:4.2.2' + implementation 'com.google.code.gson:gson:2.8.6' + implementation 'cn.bingoogolapple:bga-qrcode-zxing:1.3.7' + implementation 'com.github.tbruyelle:rxpermissions:0.10.2' + implementation "io.reactivex.rxjava2:rxjava:2.2.14" + api 'org.greenrobot:eventbus:3.1.1' + implementation 'com.lahm.library:easy-protector-release:1.1.0' + api 'org.nanohttpd:nanohttpd:2.3.1' + + testImplementation 'junit:junit:4.12' + androidTestImplementation 'androidx.test.ext:junit:1.1.1' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' +} diff --git a/Android/devkit/consumer-rules.pro b/Android/devkit/consumer-rules.pro new file mode 100644 index 00000000..e69de29b diff --git a/Android/devkit/proguard-rules.pro b/Android/devkit/proguard-rules.pro new file mode 100644 index 00000000..f1b42451 --- /dev/null +++ b/Android/devkit/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile diff --git a/Android/devkit/src/androidTest/java/pub/doric/devkit/ExampleInstrumentedTest.java b/Android/devkit/src/androidTest/java/pub/doric/devkit/ExampleInstrumentedTest.java new file mode 100644 index 00000000..f4908b83 --- /dev/null +++ b/Android/devkit/src/androidTest/java/pub/doric/devkit/ExampleInstrumentedTest.java @@ -0,0 +1,27 @@ +package pub.doric.devkit; + +import android.content.Context; + +import androidx.test.platform.app.InstrumentationRegistry; +import androidx.test.ext.junit.runners.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.*; + +/** + * Instrumented test, which will execute on an Android device. + * + * @see Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); + + assertEquals("pub.doric.devkit.test", appContext.getPackageName()); + } +} diff --git a/Android/devkit/src/main/AndroidManifest.xml b/Android/devkit/src/main/AndroidManifest.xml new file mode 100644 index 00000000..60a25b75 --- /dev/null +++ b/Android/devkit/src/main/AndroidManifest.xml @@ -0,0 +1,9 @@ + + + + + + + + diff --git a/Android/devkit/src/main/java/pub/doric/devkit/DataModel.java b/Android/devkit/src/main/java/pub/doric/devkit/DataModel.java new file mode 100644 index 00000000..0f1e7759 --- /dev/null +++ b/Android/devkit/src/main/java/pub/doric/devkit/DataModel.java @@ -0,0 +1,11 @@ +package pub.doric.devkit; + +public class DataModel { + public String contextId; + public String source; + + public DataModel(String contextId, String source) { + this.contextId = contextId; + this.source = source; + } + } \ No newline at end of file diff --git a/Android/doric/src/main/java/pub/doric/dev/DevKit.java b/Android/devkit/src/main/java/pub/doric/devkit/DevKit.java similarity index 80% rename from Android/doric/src/main/java/pub/doric/dev/DevKit.java rename to Android/devkit/src/main/java/pub/doric/devkit/DevKit.java index c8f22358..332b171d 100644 --- a/Android/doric/src/main/java/pub/doric/dev/DevKit.java +++ b/Android/devkit/src/main/java/pub/doric/devkit/DevKit.java @@ -1,13 +1,13 @@ -package pub.doric.dev; +package pub.doric.devkit; +import com.google.gson.Gson; import com.google.gson.JsonObject; -import pub.doric.utils.DoricUtils; - public class DevKit implements IDevKit { - static boolean isRunningInEmulator = false; + public static boolean isRunningInEmulator = false; public static String ip = ""; + private static Gson gson = new Gson(); private static class Inner { private static final DevKit sInstance = new DevKit(); @@ -33,7 +33,7 @@ public class DevKit implements IDevKit { JsonObject result = new JsonObject(); result.addProperty("cmd", command.toString()); result.add("data", jsonObject); - wsClient.send(DoricUtils.gson.toJson(result)); + wsClient.send(gson.toJson(result)); } @Override diff --git a/Android/devkit/src/main/java/pub/doric/devkit/DoricDev.java b/Android/devkit/src/main/java/pub/doric/devkit/DoricDev.java new file mode 100644 index 00000000..d122da11 --- /dev/null +++ b/Android/devkit/src/main/java/pub/doric/devkit/DoricDev.java @@ -0,0 +1,17 @@ +package pub.doric.devkit; + +import com.google.gson.JsonObject; + +public class DoricDev { + public static void connectDevKit(String url) { + DevKit.getInstance().connectDevKit(url); + } + + public static void sendDevCommand(IDevKit.Command command, JsonObject jsonObject) { + DevKit.getInstance().sendDevCommand(command, jsonObject); + } + + public static void disconnectDevKit() { + DevKit.getInstance().disconnectDevKit(); + } +} diff --git a/Android/doric/src/main/java/pub/doric/dev/IDevKit.java b/Android/devkit/src/main/java/pub/doric/devkit/IDevKit.java similarity index 82% rename from Android/doric/src/main/java/pub/doric/dev/IDevKit.java rename to Android/devkit/src/main/java/pub/doric/devkit/IDevKit.java index 767c0ceb..3d1f422a 100644 --- a/Android/doric/src/main/java/pub/doric/dev/IDevKit.java +++ b/Android/devkit/src/main/java/pub/doric/devkit/IDevKit.java @@ -1,9 +1,7 @@ -package pub.doric.dev; +package pub.doric.devkit; import com.google.gson.JsonObject; -import pub.doric.IDoricDriver; - public interface IDevKit { enum Command { diff --git a/Android/doric/src/main/java/pub/doric/engine/IStatusCallback.java b/Android/devkit/src/main/java/pub/doric/devkit/IStatusCallback.java similarity index 68% rename from Android/doric/src/main/java/pub/doric/engine/IStatusCallback.java rename to Android/devkit/src/main/java/pub/doric/devkit/IStatusCallback.java index 0dcbd70e..88c9a701 100644 --- a/Android/doric/src/main/java/pub/doric/engine/IStatusCallback.java +++ b/Android/devkit/src/main/java/pub/doric/devkit/IStatusCallback.java @@ -1,4 +1,4 @@ -package pub.doric.engine; +package pub.doric.devkit; public interface IStatusCallback { void start(); diff --git a/Android/doric/src/main/java/pub/doric/dev/WSClient.java b/Android/devkit/src/main/java/pub/doric/devkit/WSClient.java similarity index 86% rename from Android/doric/src/main/java/pub/doric/dev/WSClient.java rename to Android/devkit/src/main/java/pub/doric/devkit/WSClient.java index cf05d8ed..dd81e587 100644 --- a/Android/doric/src/main/java/pub/doric/dev/WSClient.java +++ b/Android/devkit/src/main/java/pub/doric/devkit/WSClient.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package pub.doric.dev; +package pub.doric.devkit; import org.greenrobot.eventbus.EventBus; import org.json.JSONException; @@ -28,12 +28,12 @@ import okhttp3.Request; import okhttp3.Response; import okhttp3.WebSocket; import okhttp3.WebSocketListener; -import pub.doric.DoricContext; -import pub.doric.DoricContextManager; -import pub.doric.dev.event.ConnectExceptionEvent; -import pub.doric.dev.event.EOFExceptionEvent; -import pub.doric.dev.event.EnterDebugEvent; -import pub.doric.dev.event.OpenEvent; +import pub.doric.devkit.event.ConnectExceptionEvent; +import pub.doric.devkit.event.EOFExceptionEvent; +import pub.doric.devkit.event.EnterDebugEvent; +import pub.doric.devkit.event.OpenEvent; +import pub.doric.devkit.event.ReloadEvent; +import pub.doric.devkit.ui.DevPanel; /** * @Description: com.github.penfeizhou.doric.dev @@ -75,11 +75,7 @@ public class WSClient extends WebSocketListener { case "RELOAD": { String source = jsonObject.optString("source"); String script = jsonObject.optString("script"); - for (DoricContext context : DoricContextManager.aliveContexts()) { - if (source.contains(context.getSource())) { - context.reload(script); - } - } + EventBus.getDefault().post(new ReloadEvent(source, script)); } break; case "SWITCH_TO_DEBUG": { diff --git a/Android/doric/src/main/java/pub/doric/dev/event/ConnectExceptionEvent.java b/Android/devkit/src/main/java/pub/doric/devkit/event/ConnectExceptionEvent.java similarity index 55% rename from Android/doric/src/main/java/pub/doric/dev/event/ConnectExceptionEvent.java rename to Android/devkit/src/main/java/pub/doric/devkit/event/ConnectExceptionEvent.java index 945276ad..8dec1b30 100644 --- a/Android/doric/src/main/java/pub/doric/dev/event/ConnectExceptionEvent.java +++ b/Android/devkit/src/main/java/pub/doric/devkit/event/ConnectExceptionEvent.java @@ -1,4 +1,4 @@ -package pub.doric.dev.event; +package pub.doric.devkit.event; public class ConnectExceptionEvent { } diff --git a/Android/doric/src/main/java/pub/doric/dev/event/EOFExceptionEvent.java b/Android/devkit/src/main/java/pub/doric/devkit/event/EOFExceptionEvent.java similarity index 52% rename from Android/doric/src/main/java/pub/doric/dev/event/EOFExceptionEvent.java rename to Android/devkit/src/main/java/pub/doric/devkit/event/EOFExceptionEvent.java index 376f0e62..b0c3dd3d 100644 --- a/Android/doric/src/main/java/pub/doric/dev/event/EOFExceptionEvent.java +++ b/Android/devkit/src/main/java/pub/doric/devkit/event/EOFExceptionEvent.java @@ -1,4 +1,4 @@ -package pub.doric.dev.event; +package pub.doric.devkit.event; public class EOFExceptionEvent { } diff --git a/Android/doric/src/main/java/pub/doric/dev/event/EnterDebugEvent.java b/Android/devkit/src/main/java/pub/doric/devkit/event/EnterDebugEvent.java similarity index 51% rename from Android/doric/src/main/java/pub/doric/dev/event/EnterDebugEvent.java rename to Android/devkit/src/main/java/pub/doric/devkit/event/EnterDebugEvent.java index 2cb0f41c..5e02b0d0 100644 --- a/Android/doric/src/main/java/pub/doric/dev/event/EnterDebugEvent.java +++ b/Android/devkit/src/main/java/pub/doric/devkit/event/EnterDebugEvent.java @@ -1,4 +1,4 @@ -package pub.doric.dev.event; +package pub.doric.devkit.event; public class EnterDebugEvent { } diff --git a/Android/devkit/src/main/java/pub/doric/devkit/event/OpenEvent.java b/Android/devkit/src/main/java/pub/doric/devkit/event/OpenEvent.java new file mode 100644 index 00000000..d878baf4 --- /dev/null +++ b/Android/devkit/src/main/java/pub/doric/devkit/event/OpenEvent.java @@ -0,0 +1,4 @@ +package pub.doric.devkit.event; + +public class OpenEvent { +} diff --git a/Android/doric/src/main/java/pub/doric/dev/event/QuitDebugEvent.java b/Android/devkit/src/main/java/pub/doric/devkit/event/QuitDebugEvent.java similarity index 50% rename from Android/doric/src/main/java/pub/doric/dev/event/QuitDebugEvent.java rename to Android/devkit/src/main/java/pub/doric/devkit/event/QuitDebugEvent.java index 4a891395..188f0339 100644 --- a/Android/doric/src/main/java/pub/doric/dev/event/QuitDebugEvent.java +++ b/Android/devkit/src/main/java/pub/doric/devkit/event/QuitDebugEvent.java @@ -1,4 +1,4 @@ -package pub.doric.dev.event; +package pub.doric.devkit.event; public class QuitDebugEvent { } diff --git a/Android/devkit/src/main/java/pub/doric/devkit/event/ReloadEvent.java b/Android/devkit/src/main/java/pub/doric/devkit/event/ReloadEvent.java new file mode 100644 index 00000000..3f33289c --- /dev/null +++ b/Android/devkit/src/main/java/pub/doric/devkit/event/ReloadEvent.java @@ -0,0 +1,11 @@ +package pub.doric.devkit.event; + +public class ReloadEvent { + public String source; + public String script; + + public ReloadEvent(String source, String script) { + this.source = source; + this.script = script; + } +} diff --git a/Android/doric/src/main/java/pub/doric/engine/remote/RemoteJSExecutor.java b/Android/devkit/src/main/java/pub/doric/devkit/remote/RemoteJSExecutor.java similarity index 98% rename from Android/doric/src/main/java/pub/doric/engine/remote/RemoteJSExecutor.java rename to Android/devkit/src/main/java/pub/doric/devkit/remote/RemoteJSExecutor.java index f1a82079..677c3d98 100644 --- a/Android/doric/src/main/java/pub/doric/engine/remote/RemoteJSExecutor.java +++ b/Android/devkit/src/main/java/pub/doric/devkit/remote/RemoteJSExecutor.java @@ -1,4 +1,4 @@ -package pub.doric.engine.remote; +package pub.doric.devkit.remote; import com.github.pengfeizhou.jscore.JSDecoder; import com.github.pengfeizhou.jscore.JSONBuilder; @@ -23,8 +23,8 @@ import okhttp3.Request; import okhttp3.Response; import okhttp3.WebSocket; import okhttp3.WebSocketListener; -import pub.doric.dev.DevKit; -import pub.doric.dev.event.QuitDebugEvent; +import pub.doric.devkit.DevKit; +import pub.doric.devkit.event.QuitDebugEvent; import pub.doric.engine.IStatusCallback; public class RemoteJSExecutor { diff --git a/Android/doric/src/main/java/pub/doric/engine/remote/ValueBuilder.java b/Android/devkit/src/main/java/pub/doric/devkit/remote/ValueBuilder.java similarity index 98% rename from Android/doric/src/main/java/pub/doric/engine/remote/ValueBuilder.java rename to Android/devkit/src/main/java/pub/doric/devkit/remote/ValueBuilder.java index 34aa21f0..63ddae03 100644 --- a/Android/doric/src/main/java/pub/doric/engine/remote/ValueBuilder.java +++ b/Android/devkit/src/main/java/pub/doric/devkit/remote/ValueBuilder.java @@ -1,4 +1,4 @@ -package pub.doric.engine.remote; +package pub.doric.devkit.remote; import org.json.JSONArray; import org.json.JSONObject; diff --git a/Android/doric/src/main/java/pub/doric/dev/DebugContextPanel.java b/Android/devkit/src/main/java/pub/doric/devkit/ui/DebugContextPanel.java similarity index 91% rename from Android/doric/src/main/java/pub/doric/dev/DebugContextPanel.java rename to Android/devkit/src/main/java/pub/doric/devkit/ui/DebugContextPanel.java index 2ef2fd0b..c360ec83 100644 --- a/Android/doric/src/main/java/pub/doric/dev/DebugContextPanel.java +++ b/Android/devkit/src/main/java/pub/doric/devkit/ui/DebugContextPanel.java @@ -1,4 +1,4 @@ -package pub.doric.dev; +package pub.doric.devkit.ui; import android.app.Dialog; import android.os.Bundle; @@ -15,11 +15,12 @@ import androidx.fragment.app.DialogFragment; import com.google.gson.JsonObject; -import pub.doric.BuildConfig; -import pub.doric.Doric; import pub.doric.DoricContext; import pub.doric.DoricContextManager; -import pub.doric.R; +import pub.doric.devkit.BuildConfig; +import pub.doric.devkit.DoricDev; +import pub.doric.devkit.IDevKit; +import pub.doric.devkit.R; public class DebugContextPanel extends DialogFragment { @Nullable @@ -68,7 +69,7 @@ public class DebugContextPanel extends DialogFragment { jsonObject.addProperty("contextId", doricContext.getContextId()); jsonObject.addProperty("projectHome", BuildConfig.PROJECT_HOME); jsonObject.addProperty("source", doricContext.getSource().replace(".js", ".ts")); - Doric.sendDevCommand(IDevKit.Command.DEBUG, jsonObject); + DoricDev.sendDevCommand(IDevKit.Command.DEBUG, jsonObject); dismissAllowingStateLoss(); } }); diff --git a/Android/doric/src/main/java/pub/doric/dev/DevPanel.java b/Android/devkit/src/main/java/pub/doric/devkit/ui/DevPanel.java similarity index 92% rename from Android/doric/src/main/java/pub/doric/dev/DevPanel.java rename to Android/devkit/src/main/java/pub/doric/devkit/ui/DevPanel.java index 4b678f20..2a4cd37c 100644 --- a/Android/doric/src/main/java/pub/doric/dev/DevPanel.java +++ b/Android/devkit/src/main/java/pub/doric/devkit/ui/DevPanel.java @@ -1,4 +1,4 @@ -package pub.doric.dev; +package pub.doric.devkit.ui; import android.Manifest; import android.content.Context; @@ -23,15 +23,16 @@ import org.greenrobot.eventbus.ThreadMode; import io.reactivex.disposables.Disposable; import io.reactivex.functions.Consumer; -import pub.doric.Doric; -import pub.doric.R; -import pub.doric.dev.event.ConnectExceptionEvent; -import pub.doric.dev.event.EOFExceptionEvent; -import pub.doric.dev.event.OpenEvent; +import pub.doric.devkit.DevKit; +import pub.doric.devkit.DoricDev; +import pub.doric.devkit.R; +import pub.doric.devkit.event.ConnectExceptionEvent; +import pub.doric.devkit.event.EOFExceptionEvent; +import pub.doric.devkit.event.OpenEvent; public class DevPanel extends BottomSheetDialogFragment { - static boolean isDevConnected = false; + public static boolean isDevConnected = false; public DevPanel() { @@ -58,7 +59,7 @@ public class DevPanel extends BottomSheetDialogFragment { public void onClick(View v) { if (DevKit.isRunningInEmulator) { DevKit.ip = "10.0.2.2"; - Doric.connectDevKit("ws://" + DevKit.ip + ":7777"); + DoricDev.connectDevKit("ws://" + DevKit.ip + ":7777"); } else { final RxPermissions rxPermissions = new RxPermissions(DevPanel.this); Disposable disposable = rxPermissions diff --git a/Android/doric/src/main/java/pub/doric/dev/ScanQRCodeActivity.java b/Android/devkit/src/main/java/pub/doric/devkit/ui/ScanQRCodeActivity.java similarity index 91% rename from Android/doric/src/main/java/pub/doric/dev/ScanQRCodeActivity.java rename to Android/devkit/src/main/java/pub/doric/devkit/ui/ScanQRCodeActivity.java index e93070ba..0079b418 100644 --- a/Android/doric/src/main/java/pub/doric/dev/ScanQRCodeActivity.java +++ b/Android/devkit/src/main/java/pub/doric/devkit/ui/ScanQRCodeActivity.java @@ -1,4 +1,4 @@ -package pub.doric.dev; +package pub.doric.devkit.ui; import android.os.Bundle; import android.widget.Toast; @@ -8,8 +8,9 @@ import androidx.appcompat.app.AppCompatActivity; import cn.bingoogolapple.qrcode.core.QRCodeView; import cn.bingoogolapple.qrcode.zxing.ZXingView; -import pub.doric.Doric; -import pub.doric.R; +import pub.doric.devkit.DevKit; +import pub.doric.devkit.DoricDev; +import pub.doric.devkit.R; public class ScanQRCodeActivity extends AppCompatActivity implements QRCodeView.Delegate { @@ -51,7 +52,7 @@ public class ScanQRCodeActivity extends AppCompatActivity implements QRCodeView. setTitle("扫描结果为:" + result); DevKit.ip = result; Toast.makeText(this, "dev kit connecting to " + result, Toast.LENGTH_LONG).show(); - Doric.connectDevKit("ws://" + result + ":7777"); + DoricDev.connectDevKit("ws://" + result + ":7777"); finish(); } diff --git a/Android/doric/src/main/java/pub/doric/dev/SensorManagerHelper.java b/Android/devkit/src/main/java/pub/doric/devkit/util/SensorManagerHelper.java similarity index 99% rename from Android/doric/src/main/java/pub/doric/dev/SensorManagerHelper.java rename to Android/devkit/src/main/java/pub/doric/devkit/util/SensorManagerHelper.java index b4258c44..c9ae1838 100644 --- a/Android/doric/src/main/java/pub/doric/dev/SensorManagerHelper.java +++ b/Android/devkit/src/main/java/pub/doric/devkit/util/SensorManagerHelper.java @@ -1,4 +1,4 @@ -package pub.doric.dev; +package pub.doric.devkit.util; import android.content.Context; import android.hardware.Sensor; diff --git a/Android/doric/src/main/res/layout/layout_debug_context.xml b/Android/devkit/src/main/res/layout/layout_debug_context.xml similarity index 100% rename from Android/doric/src/main/res/layout/layout_debug_context.xml rename to Android/devkit/src/main/res/layout/layout_debug_context.xml diff --git a/Android/doric/src/main/res/layout/layout_debug_context_cell.xml b/Android/devkit/src/main/res/layout/layout_debug_context_cell.xml similarity index 100% rename from Android/doric/src/main/res/layout/layout_debug_context_cell.xml rename to Android/devkit/src/main/res/layout/layout_debug_context_cell.xml diff --git a/Android/doric/src/main/res/layout/layout_dev.xml b/Android/devkit/src/main/res/layout/layout_dev.xml similarity index 100% rename from Android/doric/src/main/res/layout/layout_dev.xml rename to Android/devkit/src/main/res/layout/layout_dev.xml diff --git a/Android/doric/src/main/res/layout/layout_scan_qrcode.xml b/Android/devkit/src/main/res/layout/layout_scan_qrcode.xml similarity index 100% rename from Android/doric/src/main/res/layout/layout_scan_qrcode.xml rename to Android/devkit/src/main/res/layout/layout_scan_qrcode.xml diff --git a/Android/devkit/src/main/res/values/strings.xml b/Android/devkit/src/main/res/values/strings.xml new file mode 100644 index 00000000..5b9a1b96 --- /dev/null +++ b/Android/devkit/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + devkit + diff --git a/Android/doric/build.gradle b/Android/doric/build.gradle index 796434b9..90e95e5e 100644 --- a/Android/doric/build.gradle +++ b/Android/doric/build.gradle @@ -1,7 +1,5 @@ apply plugin: 'com.android.library' -def projectHome = project.rootDir.getParent() + "/demo" - android { compileSdkVersion 29 buildToolsVersion '29.0.2' @@ -22,10 +20,6 @@ android { proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' consumerProguardFiles 'proguard-rules.pro' } - - debug { - buildConfigField "String", "PROJECT_HOME", "\"${projectHome}\"" - } } } @@ -52,19 +46,13 @@ task buildDebugger(type: Exec) { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) + api project(':devkit') implementation 'androidx.appcompat:appcompat:1.1.0' api 'com.github.pengfeizhou:jsc4a:0.1.0' implementation 'com.squareup.okhttp3:okhttp:4.2.2' implementation 'com.github.penfeizhou.android.animation:glide-plugin:1.3.1' - api 'org.nanohttpd:nanohttpd:2.3.1' implementation 'com.google.code.gson:gson:2.8.6' - api "com.google.android.material:material:1.0.0" - implementation 'androidx.constraintlayout:constraintlayout:1.1.3' - implementation 'cn.bingoogolapple:bga-qrcode-zxing:1.3.7' - implementation 'com.github.tbruyelle:rxpermissions:0.10.2' - implementation "io.reactivex.rxjava2:rxjava:2.2.14" - api 'org.greenrobot:eventbus:3.1.1' - implementation 'com.lahm.library:easy-protector-release:1.1.0' + implementation "com.google.android.material:material:1.0.0" testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test.ext:junit:1.1.1' diff --git a/Android/doric/src/main/AndroidManifest.xml b/Android/doric/src/main/AndroidManifest.xml index de0689df..cf6aef36 100644 --- a/Android/doric/src/main/AndroidManifest.xml +++ b/Android/doric/src/main/AndroidManifest.xml @@ -1,9 +1 @@ - - - - - - - - + \ No newline at end of file diff --git a/Android/doric/src/main/java/pub/doric/Doric.java b/Android/doric/src/main/java/pub/doric/Doric.java index f2ac8561..5ecdfec7 100644 --- a/Android/doric/src/main/java/pub/doric/Doric.java +++ b/Android/doric/src/main/java/pub/doric/Doric.java @@ -17,11 +17,6 @@ package pub.doric; import android.app.Application; -import com.google.gson.JsonObject; - -import pub.doric.dev.DevKit; -import pub.doric.dev.IDevKit; - /** * @Description: Doric * @Author: pengfei.zhou @@ -37,17 +32,4 @@ public class Doric { public static Application application() { return sApplication; } - - public static void connectDevKit(String url) { - DevKit.getInstance().connectDevKit(url); - } - - public static void sendDevCommand(IDevKit.Command command, JsonObject jsonObject) { - DevKit.getInstance().sendDevCommand(command, jsonObject); - } - - public static void disconnectDevKit() { - DevKit.getInstance().disconnectDevKit(); - } - } diff --git a/Android/doric/src/main/java/pub/doric/DoricContext.java b/Android/doric/src/main/java/pub/doric/DoricContext.java index a60413fb..1fa78734 100644 --- a/Android/doric/src/main/java/pub/doric/DoricContext.java +++ b/Android/doric/src/main/java/pub/doric/DoricContext.java @@ -26,7 +26,7 @@ import java.util.HashMap; import java.util.Map; import pub.doric.async.AsyncResult; -import pub.doric.engine.IStatusCallback; +import pub.doric.devkit.IStatusCallback; import pub.doric.plugin.DoricJavaPlugin; import pub.doric.shader.RootNode; import pub.doric.utils.DoricConstant; diff --git a/Android/doric/src/main/java/pub/doric/DoricDebugDriver.java b/Android/doric/src/main/java/pub/doric/DoricDebugDriver.java index 1643c179..d07b54e5 100644 --- a/Android/doric/src/main/java/pub/doric/DoricDebugDriver.java +++ b/Android/doric/src/main/java/pub/doric/DoricDebugDriver.java @@ -26,8 +26,8 @@ import java.util.concurrent.Executors; import pub.doric.async.AsyncCall; import pub.doric.async.AsyncResult; +import pub.doric.devkit.IStatusCallback; import pub.doric.engine.DoricJSEngine; -import pub.doric.engine.IStatusCallback; import pub.doric.utils.DoricConstant; import pub.doric.utils.DoricLog; import pub.doric.utils.ThreadMode; diff --git a/Android/doric/src/main/java/pub/doric/dev/event/OpenEvent.java b/Android/doric/src/main/java/pub/doric/dev/event/OpenEvent.java deleted file mode 100644 index b99ccff4..00000000 --- a/Android/doric/src/main/java/pub/doric/dev/event/OpenEvent.java +++ /dev/null @@ -1,4 +0,0 @@ -package pub.doric.dev.event; - -public class OpenEvent { -} diff --git a/Android/doric/src/main/java/pub/doric/engine/DoricJSEngine.java b/Android/doric/src/main/java/pub/doric/engine/DoricJSEngine.java index 64a3dbad..1a93f5ae 100644 --- a/Android/doric/src/main/java/pub/doric/engine/DoricJSEngine.java +++ b/Android/doric/src/main/java/pub/doric/engine/DoricJSEngine.java @@ -28,6 +28,7 @@ import com.github.pengfeizhou.jscore.JavaValue; import java.util.ArrayList; import pub.doric.DoricRegistry; +import pub.doric.devkit.IStatusCallback; import pub.doric.extension.bridge.DoricBridgeExtension; import pub.doric.extension.timer.DoricTimerExtension; import pub.doric.utils.DoricConstant; diff --git a/Android/doric/src/main/java/pub/doric/engine/DoricRemoteJSExecutor.java b/Android/doric/src/main/java/pub/doric/engine/DoricRemoteJSExecutor.java index e3fab19c..ced51e6c 100644 --- a/Android/doric/src/main/java/pub/doric/engine/DoricRemoteJSExecutor.java +++ b/Android/doric/src/main/java/pub/doric/engine/DoricRemoteJSExecutor.java @@ -20,7 +20,8 @@ import com.github.pengfeizhou.jscore.JSRuntimeException; import com.github.pengfeizhou.jscore.JavaFunction; import com.github.pengfeizhou.jscore.JavaValue; -import pub.doric.engine.remote.RemoteJSExecutor; +import pub.doric.devkit.IStatusCallback; +import pub.doric.devkit.remote.RemoteJSExecutor; public class DoricRemoteJSExecutor implements IDoricJSE { diff --git a/Android/doric/src/main/java/pub/doric/utils/DoricUtils.java b/Android/doric/src/main/java/pub/doric/utils/DoricUtils.java index 28cb33aa..e44b7f71 100644 --- a/Android/doric/src/main/java/pub/doric/utils/DoricUtils.java +++ b/Android/doric/src/main/java/pub/doric/utils/DoricUtils.java @@ -28,7 +28,6 @@ import com.github.pengfeizhou.jscore.JSDecoder; import com.github.pengfeizhou.jscore.JSONBuilder; import com.github.pengfeizhou.jscore.JSValue; import com.github.pengfeizhou.jscore.JavaValue; -import com.google.gson.Gson; import org.json.JSONArray; import org.json.JSONObject; @@ -46,8 +45,6 @@ import pub.doric.Doric; * @CreateDate: 2019-07-18 */ public class DoricUtils { - public static Gson gson = new Gson(); - public static String readAssetFile(String assetFile) { InputStream inputStream = null; try { diff --git a/Android/doric/src/main/java/pub/doric/dev/LocalServer.java b/Android/doric/src/main/java/pub/doric/utils/LocalServer.java similarity index 98% rename from Android/doric/src/main/java/pub/doric/dev/LocalServer.java rename to Android/doric/src/main/java/pub/doric/utils/LocalServer.java index 042dc359..87457d7f 100644 --- a/Android/doric/src/main/java/pub/doric/dev/LocalServer.java +++ b/Android/doric/src/main/java/pub/doric/utils/LocalServer.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package pub.doric.dev; +package pub.doric.utils; import android.content.Context; import android.content.res.AssetManager; @@ -21,9 +21,6 @@ import android.net.Uri; import android.util.Log; import android.webkit.MimeTypeMap; -import pub.doric.DoricContext; -import pub.doric.DoricContextManager; - import com.github.pengfeizhou.jscore.JSONBuilder; import org.json.JSONArray; @@ -42,6 +39,8 @@ import java.util.List; import java.util.Map; import fi.iki.elonen.NanoHTTPD; +import pub.doric.DoricContext; +import pub.doric.DoricContextManager; /** * @Description: com.github.penfeizhou.doricdemo @@ -171,7 +170,7 @@ public class LocalServer extends NanoHTTPD { } catch (IOException e) { e.printStackTrace(); } - return NanoHTTPD.newFixedLengthResponse(NanoHTTPD.Response.Status.OK, "text/html", "HelloWorld"); + return NanoHTTPD.newFixedLengthResponse(Response.Status.OK, "text/html", "HelloWorld"); } public interface APICommand { diff --git a/Android/settings.gradle b/Android/settings.gradle index c6f1ccee..bf6ffd62 100644 --- a/Android/settings.gradle +++ b/Android/settings.gradle @@ -1 +1 @@ -include ':app', ':doric' +include ':app', ':doric', ':devkit'