此文,接持续集成一的内容,今天主要简单梳理android打包的gradle命令,和记述jenkins集成过程中遇到的问题和解决方案。


一、gradlew命令

在iOS持续集成过程中,打包最后用fastlane方案解决,在android打包过程中,发现之前的方式是
gradle,神奇的是fastlane也简介了gradle,关键点是之前打包提示报错gradle的版本较低,但是后来选择gradlew却能执行了。
gradlew 是什么东西呢,和gradle貌似不大一样,肯定有关系。没错,他就是gradle wrapper,意思是gradle的一个包装,大家可以理解为在这个项目本地就封装了gradle,比如我的项目是HelloWord, 在HelloWord/gradle/wrapper/gralde-wrapper.properties文件中声明了它指向的目录和版本,
比如工程的内容是:

1
2
3
4
5
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip

如果你项目没有该文件的话,那么gradlew会到~/.gradle/wrapper/dists/gradle-2.10-all下寻找,或者你新建给文件,内容复制到里面。其实你会发现是同一个目录咯。里面会有个随机数的文件夹,里面就是gradle,只要下载成功即可用grdlew wrapper的命令代替全局的gradle命令。
这就是在jenkins执行过程中选择Use Gradle Wrapper的魅力之处了把。

二、遇到的问题和整理

1、升级gym中提示报错While executing gem(Gem:specific Gem Not Found Exception)
解决:很奇怪的解决方案sudo gem update gym -v 0.10.0就是之前升级命令指向了升级的版本号。

2、jenkins在一个project中使用多个repo的内容。譬如在打包task中支持ci_android的项目代码。 简单来说就是可以在一个job中clone下多份源码然后一一进行操作。
解决:其实这里需要做反省,之前对jenkins研究不是很透,然后还信誓旦旦的说了错话,感觉自己打脸自己,好响。闲话不表,其实jenkins中一个插件可以实现,Multiple SCMs可以实现,非常简单,
最重要的是可以在增加git源码的下面,有个选项
Additional Behaviours==>check out to a sub-directory可以新建一个子目录存放第
二个git下的源码。


下面会继续研究lint已经各种静态代码检查的内容,并且继续踏坑。。。。。