东西比较小众,虽然官网说了很多阿里系应用都在用,但是那个文档,简直是不能忍受的,简单说说集成这几天遇到的问题吧(以Android开发的视野去看待问题)
如果熟悉混合开发的对于这个肯定不会陌生。通俗点讲就是阿里出了这么一个东西,让你实现混合开发的。
web端去写主要逻辑代码,接入到移动端。 移动端怎么用?其实很简单,接入它的sdk,然后调用他的几个核心方法
new WXSDKInstance(Context context).render(String pageName,String template,Map options,String jsonInitData,WXRenderStrategy flag);
new WXSDKInstance(Context context).renderByUrl(String pageName,String template,Map 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 在他的注册里添加几个过滤器
之后,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);