博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一次因为文件名开头包含空格而导致FTP文件一直无法下载的悲剧!
阅读量:5927 次
发布时间:2019-06-19

本文共 2561 字,大约阅读时间需要 8 分钟。

最近负责公司研究新的多渠道打包方案,之前的打包方案太慢了,因此采用了美团 方案进行了多渠道打包。但是由于马虎,在配置多渠道打包定制渠道包的APK的文件名称的时候,在apk文件名称签名多敲了一个空格,因此出出现了FTP文件一直无法下载的悲剧,下面具体描述一下。

在Jenkins成功的时候多渠道包之后,会转移编译好的apk到FTP服务器,如下图所示,Jenkins第557次编译成功后的产物转移到FTP服务器之后,如下所示:

这里写图片描述

这个时候,用火狐浏览器去点击相应的apk进行下载可以正常下载下来,例如我们就下载XTCWatch_v3.6.0.App_Android_Trunk_557_imoo.apk到桌面,如下所示:

这里写图片描述

链接为:

project/Android/Common/App_Android_Trunk/2017-04-14-00-40-55-svn-19462-build-557/%20XTCWatch_v3.6.0.App_Android_Trunk_557_imoo.apk

成功下载到桌面之后,如下所示:

这里写图片描述
特别注意上图中的文件名,发现在XTCWatch_v3.6.0.App_Android_Trunk_557_imoo.apk字符串之前还有一个空格,之前我一直忽略了。

然后我提测给测试人员,测试人员没有安装火狐浏览器,使用的是Google Chrome浏览器,然后一直无法下载下来。我们自己用Google Chrome浏览器来复现一下,如下所示:

这里写图片描述

我们也下载XTCWatch_v3.6.0.App_Android_Trunk_557_imoo.apk到桌面,点击链接,直接提示无法访问此网站,如下所示:

这里写图片描述

可以发现链接为:

/project/Android/Common/App_Android_Trunk/2017-04-14-00-40-55-svn-19462-build-557/XTCWatch_v3.6.0.App_Android_Trunk_557_imoo.apk

对比一下之前的火狐浏览器的请求

FireFox 浏览器点击请求的链接/project/Android/Common/App_Android_Trunk/2017-04-14-00-40-55-svn-19462-build-557/%20XTCWatch_v3.6.0.App_Android_Trunk_557_imoo.apkGoogle Chrome浏览器点击请求的链接/project/Android/Common/App_Android_Trunk/2017-04-14-00-40-55-svn-19462-build-557/XTCWatch_v3.6.0.App_Android_Trunk_557_imoo.apk

这里写图片描述

我还不信邪了,我又去使用XFTP下载该apk,发现也是报错,如下图所示:

这里写图片描述

我又换了CuteFTP软件下载该apk,发现可以正常下载,如下图所示:

这里写图片描述

点击查看刚刚的下载任务属性,发现下载路径有空格符,如下图所示:

这里写图片描述

下面是XFTP和CuteFTP请求的链接对比

XTFP的请求链接/project/Android/Common/App_Android_Trunk/2017-04-14-00-40-55-svn-19462-build-557/XTCWatch_v3.6.0.App_Android_Trunk_557_imoo.apkCuteFTP的请求链接/project/Android/Common/App_Android_Trunk/2017-04-14-00-40-55-svn-19462-build-557/ XTCWatch_v3.6.0.App_Android_Trunk_557_imoo.apk

这里写图片描述

因此可以总结原因就是:

FireFox浏览器和CuteFTP保持FTP服务器上的文件原版路径不改变,因此可以正常下载下来。

而Google Chrome浏览器和XFTP软件,自作聪明的将FTP服务器上的文件的文件名中的空格符去掉了,导致下载请求链接时,链接并不存在,所以无法下载。

手贱,增加了空格符的groovy脚本语言如下所示:

walle {    // 指定渠道包的输出路径    apkOutputFolder = new File("${project.buildDir}/outputs/channels");    // 定制渠道包的APK的文件名称    apkFileNameFormat = ' XTCWatch_'+'v${versionName}_${channel}.apk';    // 渠道配置文件    channelFile = new File("${project.getProjectDir()}/channel")

这里写图片描述

通过一段时间查找原因,终于找到了是因为文件名加了一个空格符导致无法下载的问题后,修复的groovy脚本语言如下所示:

walle {    // 指定渠道包的输出路径    apkOutputFolder = new File("${project.buildDir}/outputs/channels");    // 定制渠道包的APK的文件名称    apkFileNameFormat = 'XTCWatch_'+'v${versionName}_${channel}.apk';    // 渠道配置文件    channelFile = new File("${project.getProjectDir()}/channel")}

这里写图片描述

提交代码,重新Jenkins编译之后,再次用Google Chrome浏览器和XFTP下载多渠道包apk,正常,如下所示:

这里写图片描述

点击链接下载的话,可以正常下载,如下所示:

这里写图片描述

使用XFTP也可以正常下载,如下所示:

这里写图片描述


这里写图片描述

作者:欧阳鹏 欢迎转载,与人分享是进步的源泉!

转载请保留原文地址:
如果本文对您有所帮助,欢迎您扫码下图所示的支付宝和微信支付二维码对本文进行打赏。

这里写图片描述

转载于:https://www.cnblogs.com/ouyangpeng/p/8537655.html

你可能感兴趣的文章
shell 脚本加密
查看>>
我的友情链接
查看>>
递归与非递归法实现链表相加 CC150 V5 2.5题 java版
查看>>
GDB调试程序实例演示
查看>>
两个对象转换的方法
查看>>
LVS负载均衡-NET、DR模式配置
查看>>
saltstack的安装(转载连接)
查看>>
解决windows系统80端口被占用问题
查看>>
文本文档TXT每行开头结尾加内容批处理代码
查看>>
Tomcat详解
查看>>
10分钟采集凡客最新的省、市、区、邮政编码和电话区号(附源码)
查看>>
【Linux】IPC-消息队列
查看>>
【Python】猜数小游戏(文件操作)
查看>>
(装载)C#中AppDomain.CurrentDomain.BaseDirectory与Application.StartupPath的区别
查看>>
php的几种运行模式CLI、CGI、FastCGI、mod_php
查看>>
[原创]同一个Tomcat,配置多个context、多个Host
查看>>
MyEclipse的Git配置
查看>>
Beta版本发布报告
查看>>
剑指offer-面试题13.在O(1)时间删除链表节点
查看>>
关于清晰讲解linux正则表达式的博文分享
查看>>