【App】Easyinstall for Android

简介: EasyInstall工具极大的方便了QA、RD、PM、FE等不同角色同学安装NA版本包做试用及内测,有效的提升了NA迭代交付过程的环节效率。

一、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 排期计划:

阶段 大体内容 产出 预估天数 预估日期
需求收集
  1. 从使用EasyInstall的PM、QA、RD调研新的需求。
  2. 分析EasyInstall中不合理的、可优化的、可拓展的需求。
  3. 网上收集其他公司同种类型的工具,了解基本功能,对比研究可拓展需求。
产出需求收集列表,划分优先级 3天 4.5-4.7
需求可行性
  1. 分析需求实现之后带来的效益,包括效率上、体验上等。
  2. 分析需求的隐患,未来的变动可否导致一些潜在问题。
  3. 分析需求的优先级、技术可行性,包括技术内容、难度等,将产出大,效益小的需求砍掉。

将可行的需求列出,包含效益、风险

、所要用到的技术等

5天 4.10-4.14
需求实现
  1. 根据需求去学习一些新的技术内容。
  2. 编写代码,初步实现需求的基本功能,统计过程中遇到的问题,将问题消化解决。
  3. 需求代码做一些优化与健壮性维护,健全需求的功能。

产出需求新功能,能在APP上debug

展示

根据需求量、技术内容

、技术难度以及4.7版本

测试业务量所决定

4.10-4.28
组内小规模测试
  1. 实现需求功能之后在组内进行简单的新功能测试,并验证以前的功能是否收到影响。
  2. 使用过程中统计bug及不合理的地方。
  3. 分析bug,定位bug,修复bug,回归测试bug。
产出bug列表及解决方式 5天 5.2-5.12
推广
  1. 将新版APP推广给大家使用,将使用过程中遇到的问题记录。
  2. 维护新版APP,不断优化、解决问题。
产出下载链接或者二维码 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端最新包下载地址:

http://10.19.128.100:8080/jenkins/job/WMapp/lastSuccessfulBuild/artifact/app/build/outputs/apk/waimai.apk

最新包是指最新成功构建的包。下载历史包的话要将上面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:

http://10.19.128.100:8080/jenkins/job/WMapp/lastSuccessfulBuild/artifact/app/build/outputs/apk/image.png

Android-debug:

http://10.19.128.100:8080/jenkins/job/WMapp/lastSuccessfulBuild/artifact/app/build/outputs/apk/debug-image.png

上面url都是最新版的地址,历史包的地址只要将url中lastSuccessfulBuild替换成对应的构建号即可。

ios扫码地址:

http://10.19.128.100:8080/jenkins/job/WMapp_iOS/lastSuccessfulBuild/artifact/scm-output/image.png

历史包的地址同理。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
4月前
|
XML 物联网 API
Android Ble蓝牙App(五)数据操作
Android Ble蓝牙App(五)数据操作
|
4月前
|
Web App开发 移动开发 小程序
"项目中mpaas升级到10.2.3 适配Android 14之后 app中的H5以及小程序都访问不了,
"项目中mpaas升级到10.2.3 适配Android 14之后 app中的H5以及小程序都访问不了,显示“网络不给力,请稍后再试”,预发内网版本不能使用,线上版本可以正常使用,这个是什么原因啊,是某些参数没有配置吗,还是说是一些参数改错了?
59 2
|
3月前
|
Android开发 开发者 iOS开发
APP开发后如何上架,上架Android应用市场前要准备什么
移动应用程序(APP)的开发已经成为现代企业和开发者的常见实践。然而,开发一个成功的APP只是第一步,将其上架到应用商店让用户下载和使用是实现其潜力的关键一步。
|
4天前
|
测试技术 Android开发
Android App获取不到pkgInfo信息问题原因
Android App获取不到pkgInfo信息问题原因
14 0
|
1月前
|
设计模式 测试技术 数据库
基于Android的食堂点餐APP的设计与实现(论文+源码)_kaic
基于Android的食堂点餐APP的设计与实现(论文+源码)_kaic
|
2月前
|
安全 Java 数据挖掘
当 App 有了系统权限,真的可以为所欲为? Android Performance Systrace
当 App 有了系统权限,真的可以为所欲为? Android Performance Systrace 转载自: https://androidperformance.com/2023/05/14/bad-android-app-with-system-permissions/#/0-Dex-%E6%96%87%E4%BB%B6%E4%BF%A1%E6%81%AF
31 0
|
3月前
|
Android开发
闲暇时间收集和整理的Android的一些常用的App
闲暇时间收集和整理的Android的一些常用的App
14 0
|
3月前
|
Android开发 UED 开发者
解释Android App Bundle是什么,它的优势是什么?
解释Android App Bundle是什么,它的优势是什么?
58 0
|
3月前
|
JavaScript Android开发
Cordova 后台运行 Android APP
Cordova 后台运行 Android APP