weex(Android视野)

前言

东西比较小众,虽然官网说了很多阿里系应用都在用,但是那个文档,简直是不能忍受的,简单说说集成这几天遇到的问题吧(以Android开发的视野去看待问题)

这个是干嘛的?

如果熟悉混合开发的对于这个肯定不会陌生。通俗点讲就是阿里出了这么一个东西,让你实现混合开发的。

怎么用?

web端去写主要逻辑代码,接入到移动端。 移动端怎么用?其实很简单,接入它的sdk,然后调用他的几个核心方法

new WXSDKInstance(Context context).render(String pageName,String template,Map<String,Object> options,String jsonInitData,WXRenderStrategy flag);

new WXSDKInstance(Context context).renderByUrl(String pageName,String template,Map<String,Object> options,String jsonInitData,WXRenderStrategy flag);

//以下为render的注释

/**
   * Render template asynchronously
   *
   * @param pageName, used for performance log. 不做过多解释了
   * @param template bundle js 其实就是一个路径,H5的页面放在服务端 就是http:\\xxxxxxxx  
   * @param options  os   iphone/android/ipad
   *                 weexversion    Weex version(like 1.0.0)
   *                 appversion     App version(like 1.0.0)
   *                 devid        Device id(like Aqh9z8dRJNBhmS9drLG5BKCmXhecHUXIZoXOctKwFebH)
   *                 sysversion    Device system version(like 5.4.4、7.0.4, should be used with os)
   *                 sysmodel     Device model(like iOS:"MGA82J/A", android:"MI NOTE LTE")
   *                 Time    UNIX timestamp, UTC+08:00
   *                 TTID(Optional)
   *                 MarkertId
   *                 Appname(Optional)  tm,tb,qa
   *                 Bundleurl(Optional)  template url
   * @param jsonInitData Initial data for rendering 这些是干啥的再研究,研究出来再补上
   * @param flag     RenderStrategy {@link WXRenderStrategy}  这个就参考固定写法了
   */

再按照官方的集成步骤,设置下ImageAdapter等等就能用了

爬坑之路

先贴出官方文档

1、关于compile ‘com.taobao.android:weex_inspector:${version}’
这个version如果有遇到最新版本Android Studio找不到的,自行往下翻阅历史版本。
2、关于跳转和退出Activity
请千万不要嘲讽 不就startActivity么finish么。等你真写的时候就会发现start特妹的,weex框架给出了一套内置的Module去做跳转与退出处理
首先项目里应当有且只有这么一个Activity去加载weex的js文件,暂且把这个Activity命名为WXLoadActivity 在他的注册里添加几个过滤器

<intent-filter>
<action android:name="com.taobao.android.intent.action.WEEX" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="com.taobao.android.intent.category.WEEX" />
<action android:name="android.intent.action.VIEW" />
<data android:scheme="http" />
<data android:scheme="https" />
<data android:scheme="file" />
<data android:scheme="wxpage" />
</intent-filter>

之后,js调用就会有页面跳转了,因为只有这么一个Activity要加载所有的js文件,所以框架本身应当做了处理 去告诉我们这个url是什么。在Activity.getIntent 这个intent里有所有的东西,下面贴出一个intent的json数据吧

{
"action":"android.intent.action.VIEW",
"categories":[
"com.taobao.android.intent.category.WEEX"
],
"component":{
"className":"com.sxg.weexdemo.ThirdActivity",
"packageName":"com.sxg.weexdemo",
"shortClassName":".ThirdActivity"
},
"contentUserHint":-2,
"data":{
"absolute":true,
"authority":"192.168.0.220:8084",
"canonicalUri":{
"$ref":"@"
},
"encodedAuthority":"192.168.0.220:8084",
"encodedPath":"/dist/fan_one.js",
"encodedSchemeSpecificPart":"//192.168.0.220:8084/dist/fan_one.js",
"hierarchical":true,
"host":"192.168.0.220",
"lastPathSegment":"fan_one.js",
"opaque":false,
"path":"/dist/fan_one.js",
"pathSegments":[
"dist",
"fan_one.js"
],
"port":8084,
"queryParameterNames":[
],
"relative":false,
"scheme":"http",
"schemeSpecificPart":"//192.168.0.220:8084/dist/fan_one.js"
},
"dataString":"http://192.168.0.220:8084/dist/fan_one.js",
"document":false,
"excludingStopped":false,
"extras":{
"empty":false,
"emptyParcel":false,
"pairValue":"5",
"parcelled":false
},
"flags":0,
"launchStartTime":2521754143,
"miuiFlags":0,
"scheme":"http"
}

我加载的文件本身就是assets目录下的dist/fan_one.js

同学们自行参考吧。跳转和退出页面都在js本身里处理通过 push和pop方法触发

知道了信息存放位置,我贴个能用的代码,有别的方式自己拿,仅供参考


        String var = intent.getData().getEncodedPath();
        if (var.startsWith("/")) {
            var = var.replaceFirst("/", "");
        }
        //加载网页
        mWXSDKInstance.render(templateName(), WXFileUtils.loadAsset(var, this), options, initJsonData(), WXRenderStrategy.APPEND_ONCE);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值