Android Weex集成和踩坑 指南

Weex官网地址:https://weex.apache.org/zh/docs/components/list.html

首先集成Weex

  1. 导入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'
  2. Application初始化配置:
    InitConfig config = new InitConfig.Builder()
            //图片库接口
            .setImgAdapter(new IWXImgLoaderAdapter())
            //网络库接口
            .setHttpAdapter(new DefaultWXHttpAdapter())
            .build();
    WXSDKEngine.initialize(this, config);

     

  3. 开始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)
    还有两个方法就不多做介绍,大家都看得懂。其他的配置看官方文档即可。
  4. weex的简单集成完成了,几乎都是官方文档的东西,不多介绍,请大家看去官网查看https://weex.apache.org/zh/guide/develop/integrate-to-android-app.html

开始今天的坑 android集成Weex Playground

第一点:

gradle依赖不一致,各位一定要严格按照官方文档

Android Weex集成和踩坑 指南_第1张图片

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

Android Weex集成和踩坑 指南_第2张图片

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

 

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

 

你可能感兴趣的:(入坑记录)