Linux下部署打包安卓应用环境gradle采坑记

1、场景

开发在线打包功能,在网页前端输入各种配置,Java后台将资源后者参数传给打包脚本,并执行脚本打包出应用。为了将前后台代码和安卓打包环境实现一键部署,需要将环境结构做一个类似镜像的压缩文件出来,方便日后别人使用时,放置到服务器上只要运行脚本即可部署好。

2、使用shell脚本构建好文件目录结构,解压缩出安卓源代码,编译sdk, 签名文件, gradle工具文件,按照固定的目录结构,成功打包。然后将此结构使用tar命令压缩后,放入另外一个目录,用脚本解压以及完成相关的目录创建,最后运行程序,始终在gradle编译的时候报一个错误:

* What went wrong:
A problem occurred configuring root project 'AppFramework'.
> java.io.FileNotFoundException: /androidPack/packEnv/gradle-4.4/lib/plugins/gradle-diagnostics-4.4.jar (没有那个文件或目录)

 

刚开始很纳闷,我是用新的环境,新的目录来运行gradle工具的,为什么其在编译时还是会去使用老目录下的工具。一直怀疑是否因为安卓源代码中的什么配置造成的,或者是老目录下是否有缓存,然后核查尝试多次之后发现都无效果。辗转一上午,百思不得其解。下午依旧还是在缓存的思维中去寻找解决方案,甚至想到重启Linux服务器来尝试,然而在重启之前,鬼使神差地想到是不是有一个进程一直在用老的工具在执行,于是使用ps -aux 命令一查,果然有一个gradle在跑:

 ps -aux | grep gradle
root     14497  1.5 13.3 5319152 1071500 ?     Ssl  00:48   5:25 /opt/jdk1.8.0_241/bin/java -Xmx1536m -Dfile.encoding=UTF-8 -Duser.country=CN -Duser.language=zh -Duser.variant -cp /androidPack/packEnv/gradle-4.4/lib/gradle-launcher-4.4.jar org.gradle.launcher.daemon.bootstrap.GradleDaemon 4.4

 

使用kill 命令将其杀掉之后,终于此问题不再出现。对gradled的守护进程机制不了解导致自己苦苦挣扎了这么久,又是在怀疑人生的边缘徘徊,不过终究还是找到源头,杀掉了它,没有被它干掉。那些杀不死你的,中奖使你变得更强大。

 

你可能感兴趣的:(Android)