Gradle脚本打包Android项目及相关配置
本文简单介绍gradle,然后说明如何使用gradle脚本打包AndroidStudio工程,主要是用于脚本自动化构建,比如用在Jenkins自动打包Android项目时。
核心shell脚本./gradlew assembleRelease
什么是gradle
Gradle是一个开源的自动化构建工具,专注于灵活性和性能。它使用一种基于Groovy
或Kotlin
的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置。
官网:https://gradle.org/
常用场景:Android Studio
DSL
(Domain Specified Language)领域专用语言。
Groovy
是一种基于JVM(Java虚拟机)的敏捷开发语言,它结合了Python、Ruby和Smalltalk的许多强大的特性,Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有代码。由于其运行在 JVM 上的特性,Groovy也可以使用其他非Java语言编写的库。官网:http://www.groovy-lang.org/
Kotlin
科特林是一个用于现代多平台应用的静态编程语言,由JetBrains
开发。Kotlin已正式成为Android官方支持开发语言。官网:https://kotlinlang.org/ 中文官网:https://www.kotlincn.net/
对比Ant
相对现在Android Studio默认使用的Gradle,早期的Eclipse+ADT是通过Ant进行Android打包,而其设置方式是通过XML实现的。
gradle配置参考文档
这方面文档很多,引用一下他人的
Android:Gradle 通用配置
史上最全Android build.gradle配置详解
使用IDE打包Android工程
使用Android Studio,直接Build
-> Make Project
则运行gradle配置进行打包了。
使用gradle脚本打包Android工程
这通常需要先安装全局的gradle,然后配置环境变量。之后直接运行gradle assembleDebug
或者gradle assembleRelease
就可以打包了。实际打包结果取决于你所安装的Gradle版本,这和使用AndroidStudio菜单操作的打包结果可能不同。
windows下全局环境变量设置
打开环境变量管理,设置全局环境变量GRADLE_HOME
为gradle安装位置,例如c:/gradle/gradle-4.10.3
。
设置path,添加%GRADLE_HOME%
和 %GRADLE_HOME%/bin
使用gradlew打包无需配置环境变量
gradlew实际上是gradle的一个包装warpper,使用Android Studio时会自动生成对应的gradlew文件,gradle文件夹,
也可以手动在命令行运行gradle wrapper
得到这些文件。
而文件gradle-wrapper.properties
包含了相关配置,通常如下:
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https://services.gradle.org/distributions/gradle-6.5-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
此时可以通过运行以下脚本进行打包。
./gradlew assembleDebug
./gradlew assembleRelease
注意windows下最好使用cmder
或者类似的可以运行shell
脚本的工具。
其打包效果,与直接使用AndroidStudio相同,默认情况下,是无签名的release包,希望自动增加签名需要如下配置。
给release打包配置签名
如何签名:Gradle签名打包及Cordova签名打包Android
生成JKS文件参考:android signingConfigs打包配置
cordova打包时签名
cordova打包时,不要修改build文件,在android根目录下增加文件release-signing.properties
,内容如下:
storeFile=./xxx.jks
storePassword=zzz
keyAlias=xxx
keyPassword=yyy
相关资料
知乎:如何通俗地理解 Gradle?
CSDN:ant 脚本编写
Runoob: 1.2.1 使用Eclipse + ADT + SDK开发Android APP
CNBlogs: 迁移ADT/ANT构建的Android项目至Gradle,a walk through。
CNBlogs: Android Ant 和 Gradle 打包流程和效率对照