使用devtools在线调试会导致实例被destory,同时JS FRAMEWORK被启动多次,导致程序无法运行的bug
我在自己的程序里出现这个问题后,又用官方提供的示例程序(hackernews)调试,都出现了这个问题。
-
修改build.gradle: compile 'com.taobao.android:weex_sdk:0.11.0' //compile project(':weex_sdk') compile 'com.taobao.android:weex_inspector:0.10.0.5' compile 'com.squareup.okhttp:okhttp:2.3.0' compile 'com.squareup.okhttp:okhttp-ws:2.3.0' compile 'com.squareup.okio:okio:1.0.1' 2、修改WXApplication: public class WXApplication extends Application {
@Override public void onCreate() { super.onCreate(); initDebugEnvironment(true, "192.168.1.107"); InitConfig config=new InitConfig.Builder().setImgAdapter(new ImageAdapter()).build(); WXSDKEngine.initialize(this,config); }
private void initDebugEnvironment(boolean enable, String host) { WXEnvironment.sRemoteDebugMode = enable; WXEnvironment.sRemoteDebugProxyUrl = "ws://" + host + ":8088/debugProxy/native"; } } 3、错误日志如下:

devtools调试的原理决定了在连接devtools后必须要重新初始化JS Framework并且重新创建Instance
也就是说我得等到JS Framework重新初始化后再手动的创建instance?
遇到同样的问题,求官方给予指引,谢谢
@misakuo 连接devtools后重新初始化JS Framework这没有问题。 但是!修改了weex代码(热刷新),也导致了WXSDKEngine.reload(); 结果整个debug页面被刷新,所有log都来不及显示,之后也不再显示了。 iOS没有这个问题。
热刷新跑到了这里
@ChromeDevtoolsMethod
public void reload(JsonRpcPeer peer, JSONObject params) {
WXLogUtils.e("WxDebug-new >>>> reload=" + params);
WXSDKEngine.reload();
Context context = WXEnvironment.getApplication();
if (context != null) {
context.sendBroadcast(new Intent()
.setAction(IWXDebugProxy.ACTION_DEBUG_INSTANCE_REFRESH)
.putExtra("params", null == params ? "" : params.toString())
);
}
}
其实应该进这里
@ChromeDevtoolsMethod
public void refresh(JsonRpcPeer peer, JSONObject params) {
WXLogUtils.e("WxDebug-new >>>> refresh=" + params);
Context context = WXEnvironment.getApplication();
if (context != null) {
context.sendBroadcast(new Intent()
.setAction(IWXDebugProxy.ACTION_DEBUG_INSTANCE_REFRESH)
.putExtra("params", null == params ? "" : params.toString())
);
}
}
问题解决了,是weex-debug的锅。
怎么解决