android weex跳转闪退,Android Weex集成和踩坑 指南

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依赖不一致,各位一定要严格按照官方文档

f7889b7c4bd92136db1a2324f2596df2.png

对应添加这三个 依赖,想要调试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'

注意:

5545d2226876044968a59f711d0dc9cd.png

根据官方文档,你要使用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)

9da5c23b3dd3d29c4b2247aee3c71b7a.png

断点位置,h5 使用渐变的时候,导致weex闪退,仅限旧版本,更新最新版本够没有此问题。

大致就这些,有什么遗漏的,请大家留言、评论


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部