使用jenkins搭建自动化打包的apk 下载
来源:互联网 发布:好听的网络歌手歌曲 编辑:程序博客网 时间:2024/05/22 11:54
说明
- 更新到svn 以及发送到邮件有点慢,所有直接下载文件快
- 使用php做应用服务器
页面android.html
<!DOCTYPE html><html lang="en"><head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="edge"> <meta name="renderer" content="webkit|ie-comp|ie-stand"> <meta name="viewport" content="width=device-width, initial-scale=1"> <style> ul, li { list-style: none; } .box { margin: 10px 10px; text-align: left; } </style></head><body><div class="box"> <p> 说明:带有Release是正式包的、带有Debug是测试包;关键词根据当前的关键字索引; 按照时间索引的话根据YYYY-MM-DD 的格式索引 </p> <div> app类型: <select id="appKey"> <option value="">请选择</option> </select> app类别: <select id="appCategory"> <option value="">全部</option> <option value="Debug">测试包</option> <option value="Release">正式包</option> </select> 关键词:<input type="text" id="key"/> <button type="button" id="select">搜索</button> </div> <br/> <ul id="list"> </ul></div></body><script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script><script> function getNowFormatDate() { var date = new Date(); var seperator1 = "-"; var year = date.getFullYear(); var month = date.getMonth() + 1; var strDate = date.getDate(); if (month >= 1 && month <= 9) { month = "0" + month; } if (strDate >= 0 && strDate <= 9) { strDate = "0" + strDate; } var currentdate = year + seperator1 + month + seperator1 + strDate; return currentdate; }</script><script> var path = ''; var arr = { "0": "2017-09-20-14-20_ALL_v1.5.1_debug.apk", "1": "2017-09-20-14-20_ALL_v1.5.1_debug.apk", "2": "2017-09-20-14-20_ALL_v1.5.1_debug.apk", "3": "2017-09-20-14-20_ALL_v1.5.1_debug.apk" }; $.post("/softwarePackage/test2.php", {}, function (data) { data = eval('(' + data + ')');// console.log(data); showDir(data); }); var listArr = []; $("#key").val(getNowFormatDate()); // showDir(arr); function showDir(arr) { var temp = []; $.each(arr, function (k, v) {// console.log(k)// console.log(v) temp.push("<li><a target='_blank' href='/softwarePackage/download.php?name=" + v + "'>" + re(v) + "</a></li>");// if("-".indexOf(k)>-1){// $.each(v,function (k2,v2) {// var path2 = k+"/";// var arrTemp = v2.split(",");// listArr.add("<li><a target='_blank' href='/softwarePackage/download.php?name="+path2+arrTemp[0]+"'>"+k+">>>>"+arrTemp[0]+" "+arrTemp[1]+"</a></li>");//// $("#list").append("<li><a target='_blank' href='/softwarePackage/download.php?name="+path2+arrTemp[0]+"'>"+k+">>>>"+arrTemp[0]+" "+arrTemp[1]+"</a></li>")// });// }else {// var arrTemp = v.split(",");// $("#list").append("<li><a target='_blank' href='/softwarePackage/download.php?name="+path+arrTemp[0]+"'>"+arrTemp[0]+" "+arrTemp[1]+"</a></li>")// } }); var len = temp.length; for(var i=len-1;i>=0;i--){ listArr.push(temp[i]); } toList(listArr); console.log(listArr); } $("#select").click(function () { toList(listArr); }); function toList(arr) { $("#list").html(""); var key = $("#key").val(); var appKey = $("#appKey").val(); var appCategory = $("#appCategory").val(); for (var i = 0; i < arr.length; i++) { var temp = arr[i]; var keyBool = key == "" ? true : temp.indexOf(key) > -1; var appKeyBool = appKey == "" ? true : temp.indexOf(appKey) > -1; var appCategoryKeyBool = appCategory == "" ? true : temp.indexOf(appCategory) > -1; if (keyBool && appKeyBool && appCategoryKeyBool) { $("#list").append(temp); } } } function re(str) { str = str; return str; }</script></html>
数据源
<?phpfunction get_dirs($dir_path) { $res = array(); $res_lists = array(); foreach(glob("$dir_path/*") as $item) { // $item = iconv('GB2312','UTF-8',$item); if(is_dir($item)) { $folder = end(explode('/', $item)); $res[$folder] =get_dirs($item); continue; } $temp = ''; // if(file_exists($item)){ // $temp=','.date("Y-m-d H:i:s",filemtime($item)); // } $res[] = basename($item.$temp); } return $res ; }// echo "<pre>";echo json_encode(get_dirs('./android'));// echo "</pre>";?>
下载脚本
<?phpset_time_limit(0); //大文件在读取内容未结束时会被超时处理,导致下载文件不全。 $fpath = './android/'.$_GET['name']; $file_pathinfo = pathinfo($fpath); $file_name = $file_pathinfo['basename']; $file_extension = $file_pathinfo['extension']; $handle = fopen($fpath,"rb"); if (FALSE === $handle) exit("Failed to open the file"); $filesize = filesize($fpath); header("Content-type:video/mpeg4");//更具不同的文件类型设置header输出类型 header("Accept-Ranges:bytes"); header("Accept-Length:".$filesize); header("Content-Disposition: attachment; filename=".$file_name);header("Content-type: application/octet-stream");header('Content-Disposition: attachment; filename="' . $file_name . '"');header("Content-Length: ".$filesize);$contents = ''; while (!feof($handle)) { // $contents = fread($handle, 8192); $contents = fread($handle, 1024*1024*10); echo $contents; @ob_flush(); //把数据从PHP的缓冲中释放出来 flush(); //把被释放出来的数据发送到浏览器 } fclose($handle); exit; ?>
阅读全文
0 0
- 使用jenkins搭建自动化打包的apk 下载
- Android jenkins自动化打包Eclipse APK
- 使用Jenkins+gitlab自动化打包
- Android使用Jenkins完成自动化打包操作---Jenkins的安装以及基础配置
- linux的jenkins安装与使用jenkins自动化打包maven项目部署到tomcat
- jenkins打包android的apk包实践经验
- jenkins 自动化打包
- jenkins 自动化打包
- Linux下的Jenkins+Tomcat+Maven+Gitlab+Shell环境的搭建使用(jenkins自动化部署)
- jenkins自动打包apk
- Jenkins 打包Unity APK
- 【Android自动化打包】03. APK的数字签名
- 【Android自动化打包】03. APK的数字签名
- 使用Jenkins搭建Android自动打包环境
- 使用Jenkins+Git+Gradle自动化构建Android APK包
- Win7使用jenkins一键打包unity工程的apk包
- iOS 自动化打包测试(使用jenkins、Tomcat、JDK实现)
- 从iOS 使用jenkins 自动化打包说去
- 如何判断当前进程是在32位/64位系统上运行
- 数据库的存储过程
- keytool生成keystore、truststore、证书以及SSL单向认证在服务端tomcat和客户端的配置
- 借助Nginx搭建反向代理服务器
- Python3远程连接腾讯云ubuntu下的MongoDb
- 使用jenkins搭建自动化打包的apk 下载
- 警告: [unchecked] 未经检查的转换
- python字符串处理函数汇总
- CODE[VS] 1036商务旅行
- Windows环境变量
- Flask mysql tornado bootstrap layer小实例
- 【ccf-201703-5】引水入城
- redis基本操作命令
- oracle 客户端报错 ORA-12514