使用jenkins搭建自动化打包的apk 下载

来源:互联网 发布:好听的网络歌手歌曲 编辑:程序博客网 时间:2024/05/22 11:54

说明

  1. 更新到svn 以及发送到邮件有点慢,所有直接下载文件快
  2. 使用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]+"&nbsp;&nbsp;&nbsp;"+arrTemp[1]+"</a></li>");////                    $("#list").append("<li><a target='_blank' href='/softwarePackage/download.php?name="+path2+arrTemp[0]+"'>"+k+">>>>"+arrTemp[0]+"&nbsp;&nbsp;&nbsp;"+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]+"&nbsp;&nbsp;&nbsp;"+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; ?>