一、EasyInstall 需求收集:
需求背景 | 需求内容 | 优先级 | 备注 | 当前进度 |
---|---|---|---|---|
增加可以下载历史包的功能,不仅局限于下载最新包,还可以提供最新包之前2个历史包的下载功能。 | P0 | 已完成100% | ||
提bug时时需要图片,手机截屏再传到电脑步骤繁琐、费时。 | 增加在APP上提bug的功能,直接将图片从手机传到bug提交页。 |
P1 | 通过在手机上调用外部浏览器访问提bug页面,可以实现在APP上直接提交bug | 已完成100% |
下载页下载时,删除按钮设置为不可点击,防止下载过程中删除安装包导致下载失败 | P0 | 已完成100% |
||
为了观看方便 | 将时间以及构建号从下载页外露,放置到首页,替换“jenkins最新包” | P0 | 已完成100% | |
添加首页刷新的功能,底部添加一个刷新按钮 | P0 | 已完成100% | ||
增加标注打包人,打包时间。 | P0 | Jenkins中不记录打包人,因为现在不需要登录就可以打包;只能记录最终提交代码的RD。 | 已完成100% | |
支持日志导出分析。 | P1 | 调起文件管理器显示日志列表,选择导出哪些日志文件,选好后弹出发送界面可选择百度hi发送到电脑。 |
已完成100% |
二、EasyInstall 排期计划:
阶段 | 大体内容 | 产出 | 预估天数 | 预估日期 |
---|---|---|---|---|
需求收集 |
|
产出需求收集列表,划分优先级 | 3天 | 4.5-4.7 |
需求可行性 |
|
将可行的需求列出,包含效益、风险 、所要用到的技术等 |
5天 | 4.10-4.14 |
需求实现 |
|
产出需求新功能,能在APP上debug 展示 |
根据需求量、技术内容 、技术难度以及4.7版本 测试业务量所决定 |
4.10-4.28 |
组内小规模测试 |
|
产出bug列表及解决方式 | 5天 | 5.2-5.12 |
推广 |
|
产出下载链接或者二维码 | 2天 | 5.16-5.20 |
三、EasyInstall参考文档:
3.1、部分变量命名:
变量 | 备注 |
---|---|
String buildNum |
包的构建号 |
String buildtime |
包的构建时间 |
String getBuildAndTimeUrl |
获得Android构建号和构建号的url |
Map<String, Integer> app_launcher |
k-v结构,key是APP类型,value是图片的资源号; 能将APP和对应的图片对应起来 |
Map<String, String> app_selected_erweima |
k-v结构,可以是APP类型,value是二维码对应的地址; 能将APP和对应的二维码对应起来,下载页面点击分享的时候会用到。 |
ArrayList<String> old_version_selected_m |
第二个spinner要填充的内容,即每个APP对应有哪些版本,通过网络访问获得。 |
public TextView spinner_view_version |
“版本为:” |
public TextView spinner_view; |
“APP类型为:” |
public TextView sign_pagetype; |
显示构建时间和构建号 |
public Spinner spinner |
第一个spinner |
public Spinner spinner_version |
第二个spinner |
ImageButton qr_button; |
扫描二维码的按钮,调用Google扫描二维码的api |
ImageButton imageButton_release |
对应的APP版本的icon展示,没有设置点击响应方法,只有图片显示效果 |
FloatingActionButton fab |
悬浮效果按钮,即最下方的几个按钮 |
View hengxian1 |
首页的分割横线 |
RelativeLayout relativeLayout1 |
首页相对布局,每个相对布局包括一个imageButton,3个textView,一个安装button |
3.2、部分方法解释:
方法 | 备注 |
---|---|
public Boolean getHttp_pakegeNumandTime(String url,int flag) |
该方法返回将全局变量buildTime和buildNum赋值,返回值是该包是否构建成功,flag标志表示给不同的buildtime赋值。 |
class SpinnerSelectedListener implements AdapterView.OnItemSelectedListener { public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { |
该方法是第一个spinner的点击响应方法,主要做一些界面布局的处理、根据所选内容填充第二个spinner的内容、获取Android和ios及其历史包的构建号和构建时间等。 |
handler = new Handler() { public void handleMessage(Message msg) { |
handler接收消息队列中的消息,接收不同的消息号表示不同的子线程任务已经完成,方法中主要做一些网络访问结束后的逻辑处理。 |
protected void onActivityResult(int requestCode, int resultCode, Intent data) |
执行startActivityForResult()方法从另一个activity中跳转过来之后会执行这个方法,requestCode == 666的时候表示已经选择好要导出日志文件,用getData()方法获取该日志的url后,调起Android系统的分享,可以将日志文件导出到百度hi或者微信等。 |
refresh.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { |
refresh按钮的点击响应方法,主要通过创建子线程进行网络访问获取Android和ios及历史包的构建号和构建时间,然后更新首页显示的构建号和构建时间。 |
data.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { |
data按钮的点击响应方法,主要是调起系统的文件管理器访问指定目录,选择要导出的日志文件。 |
fab.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { |
首页右下角推广按钮的点击响应方法,点击后进入另一个extends activity页面。 |
public String convert(long mill){ |
将时间戳转换成对应格式的时间,返回String格式 |
3.3、url解释:
Android端最新包下载地址:
最新包是指最新成功构建的包。下载历史包的话要将上面url中lastSuccessfulBuild替换成对应历史包的构建号即可。
获取最新包构建号的地址:
http://10.19.128.100:8080/jenkins/job/WMapp/lastSuccessfulBuild/api/json
将数据流转换成json格式以后可以从中提取出构建号和构建时间。
历史包的构建号获取方式是通过最新包的构建号来往前遍历,直到找到上一次成功构建的历史包。
如最新包的构建号是380,将url中lastSuccessfulBuild替换成379、378等直到碰见第一个构建成功的包。
判断是否构建成功的标志是json中的result字段,FAILURE表示失败,SUCCESS表示成功。
3.4、分享页面二维码的地址:
Android-release:
Android-debug:
上面url都是最新版的地址,历史包的地址只要将url中lastSuccessfulBuild替换成对应的构建号即可。
ios扫码地址:
http://10.19.128.100:8080/jenkins/job/WMapp_iOS/lastSuccessfulBuild/artifact/scm-output/image.png
历史包的地址同理。