Weex官网地址:https://weex.apache.org/zh/docs/components/list.html
首先集成Weex
- 导入gradle依赖:implementation 'com.taobao.android:weex_sdk:0.20.3.0-beta'
implementation 'com.alibaba:fastjson:1.2.48' implementation 'com.android.support:recyclerview-v7:28.0.0'
- Application初始化配置:
InitConfig config = new InitConfig.Builder() //图片库接口 .setImgAdapter(new IWXImgLoaderAdapter()) //网络库接口 .setHttpAdapter(new DefaultWXHttpAdapter()) .build(); WXSDKEngine.initialize(this, config);
- 开始Activity的配置:
//初始化 WXSDKInstance mWXSDKInstance = new WXSDKInstance(this); //weex加载成功的监听 mWXSDKInstance.registerRenderListener(this); //开始加载页面。bundleUrl网页的url mWXSDKInstance.renderByUrl(getPackageName(), bundleUrl, null, null, WXRenderStrategy.APPEND_ASYNC); //weex成功创建view,需要将view添加到你的布局中 public void onViewCreated(WXSDKInstance instance, View view) //weex创建失败,常见的就是初始化失败(一般因为so原因)、api28不支持http明文请求、js方法错误等 public void onException(WXSDKInstance instance, String errCode, String msg)
还有两个方法就不多做介绍,大家都看得懂。其他的配置看官方文档即可。
- weex的简单集成完成了,几乎都是官方文档的东西,不多介绍,请大家看去官网查看https://weex.apache.org/zh/guide/develop/integrate-to-android-app.html
开始今天的坑 android集成Weex Playground
第一点:
gradle依赖不一致,各位一定要严格按照官方文档
对应添加这三个 依赖,想要调试Weex Playground,这三个缺一不可
implementation 'com.taobao.android:weex_inspector:0.20.3.0-beta'
implementation 'com.squareup.okhttp:okhttp:2.3.0'
implementation 'com.squareup.okhttp:okhttp-ws:2.3.0'
weex官网默认是okhttp而不是okhttp3,下方是okhttp3的依赖
compile 'com.squareup.okhttp3:okhttp:3.4.1'
compile 'com.squareup.okhttp3:okhttp-ws:3.4.1'
注意:
根据官方文档,你要使用Weex Playground,需要修改一个url地址,这个地址一定会有一个weex的sdk所引用,也就是DebugServerProxy这个类,你的要是没有,那就可能是依赖导入不对。
/**
* 清理weex
*/
protected void destroyWeexInstance() {
if (mInstance != null) {
mInstance.destroy();
mInstance.registerRenderListener(null);
mInstance = null;
}
}
在合适的时候一定要清理weex,不然会在h5调试端,报多个实例不存在
第二点:
ndk { abiFilters "armeabi", "x86" }
weex仅支持这两种cpu架构,如果你添加了其他的架构(列如:armeabi-v7a),weex会初始化异常
erroecode -1001 degradeToH5|createInstance fail|wx_create_instance_error isJSFrameworkInit==false reInitCount == 1
如果你的项目集成了Realm数据库,就会出问题,Realm已经抛弃了旧版armeabi,使用armeabi-v7a,如果你不添加armeabi-v7a,Realm就会闪退。你要是ndk添加了armeabi-v7a,默认weex就会去v7下寻找so,但是并不会生成so文件,就出初始化异常。目前我的解决办法就是 将armeabi中的weex所有so复制一份,然后手动复制到项目的jniLibs/armeabi-v7a 目录下。⚠️注意,更新weex sdk的时候一定要记得更换jniLibs/armeabi-v7a 目录下的so,不然依旧初始化失败。
第三点:
weex sdk 0.18.0版本 绘制闪退
com.taobao.weex.ui.view.border.borderdrawable.draw(borderdrawable.java:114)
断点位置,h5 使用渐变的时候,导致weex闪退,仅限旧版本,更新最新版本够没有此问题。
大致就这些,有什么遗漏的,请大家留言、评论