传送门:Android自动化构建之使用JavaWeb实现上传打包加固多渠道-GUI篇(上)
一、前言:
Android打包是一件比较繁琐又耗时的操作,相信很多朋友都想自己搞一个属于自己的自动化构建程序,本文则是对这一程序的实现提供一个思路方法,没有采用 Jenkins持续集成 这种方式来实现,但大概思路都大同小异。
关于本文需要了解的一些东西:
1. 实现思路为:使用JavaGUI做一个zip打包工具,将自定义配置信息写入项目并打包成zip格式,最终将文件拖拽上传至服务器,服务器进行一系列的操作:解压,读取配置,打包,加固,多渠道,最后下发至浏览器端进行自动下载,由于公司电脑是WindowsServer2012,所以内部实现是基于Windows命令的
2.Android项目构建配置都各有不同,所以本文主要提供一个实现思路,感兴趣的朋友可以自己动手实现一个更适合自己的构建工具
3.项目分为GUI端和Web端,均为Java实现,大部分操作都是流/IO,字符串操作,简单易懂
4.使用GUI端需要的配置:JDK环境变量
5.使用Web端需要的配置:IntelliJ IDEA、Tomcat服务器、JDK环境变量、Gradle环境变量、360加固宝PC端、AndroidSDK、Android端所使用到的所有签名文件
6.开发工具,环境变量配置等本文就不多罗嗦了,毕竟不是使用说明书,但是会讲一下Tomcat与IDEA配置所产生的1099端口冲突的坑,还有Gradle多环境配置
7.项目地址:
GUI端:[AutoBuildForAndroid-GUI](https://github.com/SmartKidsLOL/AutoBuildForAndroid-GUI
Web端:[AutoBuildForAndroid-WEB](https://github.com/SmartKidsLOL/AutoBuildForAndroid-Web
二、WEB端的实现效果图
由于CSDN图片大小要求,所以GIF图只能演示5M以下,实际效果还请自行下载查看。
使用上篇的AndroidZipGUI工具将Android项目打包成zip后,直接拖进浏览器动画中,浏览器动画会加速,当任务失败/完成后动画速度会恢复,因为项目在后台已经提前打包加固多渠道处理完成,所以再次将已完成的项目拖进去后会直接进行下载。服务器会默认保存所有已完成的任务(默认第二天凌晨自动清理)。
三、服务器端环境配置(Gradle多环境配置与IDEA的1099坑)
其他环境配置:
360加固包: 要提前放至服务器,并配置好(登录账号,签名信息,多渠道等等)
AndroidSDK: 从客户端拷贝过来即可
Gradle多环境配置:
为了使用方便,可以将自己本地端Studio下的Gradle文件夹拷贝至服务器即可,最好单独放一个文件夹,而不是C盘。
首先配置环境变量,以我的win10为例:
其次,注意:变量值为什么不指定到Gradle的根目录下呢?因为如果指定到Gradle的根目录,当使用全局环境变量执行Gradle命令时,首先会检测gradle-wrapper.properties此文件中的Gradle环境变量——也就是GRADLE_USER_HOME,如果你的Gradle环境变量不是这个名字或者指定的目录不是上面目录,则gradle默认会将未找到的Gradle编译版本下载到默认路径或者是你已指定的某个Gradle目录下,则会造成重复下载,上面的话虽然有点绕,没有表述好,但请读者请这样配置就可以了。
因为从客户端拷贝过来的Gradle文件夹已经存在很多下载好的,所以这样配置可以省去编译再下载的功夫,其次也利于管理,最后添加至Path系统环境路径中:
IDEA启动Tomcat时运行Java CMD命令/其他操作遇到的1099端口被占用的坑:
此坑是基于IDEA的JMX插件端口问题,当使用IDEA开启Tomcat后,运行Java的Process类调用CMD执行命令时会报出该错误,暂时没有找到有效方法,请勿浪费时间。关于JMX是什么,不是此文重点,请自行百度/知乎即可。
解决方法:不要使用IDEA运行Tomcat,当你想要测试项目时,使用IDEA打包路径选择至Tomcat下的webapps目录,再Build Artifacts,手动开启Tomcat即可。
四、怎么使用:
在上一章中已经讲过,打包最终是根据Gradle配置不同而打不通的包。
1.先配置好IDEA
JDK如果已经配置全局变量,则会默认使用环境变量下的jdk,Tomcat需要配置为自己的版本,先配置服务器后再在此图依赖下导入Tomcat源码即可。
2.其次配置自己的服务器路径、自定义参数。
将Web端项目部署用IDEA部署至服务器后,需要修改 constance 包下的 CustomConstants 类,这个是我为了方便配置,将主要字符串抛出来供使用者方便配置的,必须在此类中修改为自己的服务器参数路径:
public class CustomConstants {
/**
* 自己的项目和360加固包盘符路径
*/
// 服务器文件存放的盘符
public static final String CMD_DISC_D = "d:";
// 360加固宝所在的盘符
public static final String CMD_DISC_H = "d:";
/**
* 需要修改的服务器Base路径
* 自动化构建根目录,与上面的{@link #CMD_DISC_D}盘符相对应
*/
public static final String AUTO_BUILD_ROOT_PATH = "D:\\AutoBuild";
/**
* 360加固目录,与上面的{@link #CMD_DISC_H}盘符相对应
* 例:public static final String JIAGU_360_PATH = "D:\\360JiaGu\\jiagu";
*/
public static final String JIAGU_360_PATH = "";
/**
* 定时任务每隔多长时间清除一次服务端文件,默认24小时,如无其他需求,则不需要改
*/
public static final long DEFAULT_CLEAR_TASK_INTERVAL = 1000 * 60 * 60 * 24<