Gradle在Android Studio 的应用
来源:互联网 发布:suse 端口转发 编辑:程序博客网 时间:2024/06/06 01:51
Gradle早就在使用,但直到 Google 官方 IDE Android Studio 发布之后,Gradle 才逐渐流行起来。但其中的强大功能,只是略知一二。
项目与 build 的特定全局变量
用 gradle 可以自动生成 BuildConfig 类,里面还包括一些附加字段。这对配置服务器URL之类的常用自定义字段十分有用,使用过程也方便,能轻松开启或关闭。
defaultConfig { buildConfigField "String", "TWITTER_TOKEN", '"SDASJHDKAJSK"'}buildTypes { debug { buildConfigField "String", "API_URL", '"http://api.dev.com/"' buildConfigField "boolean", "REPORT_CRASHES", "true" } release { buildConfigField "String", "API_URL", '"http://api.prod.com/"' buildConfigField "boolean", "REPORT_CRASHES", "false" }}
这样在全局变量中定义之后,就可以采用 BuildConfig 的 final 类的一些特性,如:
BuildConfig.TWITTER_TOKEN,BuildConfig.REPORT_CRASHESBuildConfig.API_URL
访问到定义的变量值,后两个根据他们所要的build类型不同可以定制化的使用。
构建不同的 buildtype、version 与 app id
android { buildTypes { debug { applicationIdSuffix ".debug" versionNameSuffix "-debug" resValue "string", "app_name", "CoolApp (debug)" signingConfig signingConfigs.debug } release { resValue "string", "app_name", "CoolApp" signingConfig signingConfigs.release } }
隐私信息
在Android系统中,所有应用都必须经过证书数字签名才能安装,以便系统能够识别应用的作者。而其中有些属于敏感信息,不应被别人看到。
使用者永远不该将这类信息check in到源代码管理工具中。
有些人主张,每个人都应当有自己的本地配置文件,甚至用全局的~/.gradle/build.gradle,不过如果你要执行持续集成(CI)或部署,特别是没有自己CI服务器的情况下,不应在CVS系统里存放任何类型的纯文本凭证。
signingConfigs { release { storeFile "${System.env.COOL_APP_PRIVATE_KEY}" keyAlias "${System.env.COOL_APP_ALIAS}" storePassword "${System.env.COOL_APP_STORE_PW}" keyPassword "${System.env.COOL_APP_PW}" }}
因此,可以通过环境变量将敏感信息提供给自己的持续集成服务器,而无需担心将任何“危险”信息check in到公司了。
自动生成版本名称(versionName)与版本号(versionCode)
将你的版本拆分成逻辑组件,分别管理。不用再考虑版本号修改的是否正确,也不用担心版本名更新的是否合适了。
def versionMajor = 1def versionMinor = 0def versionPatch = 0android { defaultConfig { versionCode versionMajor * 10000 + versionMinor * 100 + versionPatch versionName "${versionMajor}.${versionMinor}.${versionPatch}" }}
给BuildConfig增加git hash与build时间
def gitSha = 'git rev-parse --short HEAD'.execute([], project.rootDir).text.trim()def buildTime = new Date().format("yyyy-MM-dd'T'HH:mm:ss'Z'", TimeZone.getTimeZone("UTC"))android { defaultConfig { buildConfigField "String", "GIT_SHA", "\"${gitSha}\"" buildConfigField "String", "BUILD_TIME", "\"${buildTime}\"" }}
现在有两个可用变量:BuildConfig.GIT_SHA 和BuildConfig.BUILD_TIME,用来结合日志与提交信息或者build时间再好不过。
加快 Dev 环境下的构建
想要快速完成部署,只需创建dev类型,将minSdkVersion设定为21。注意:这样做的话,就无法获得 minSdk 的匹配的 linting了,所以只能用在开发工作中,而不能用在发布时。
原理:因为 安卓gradle插件在构建的过程中,将应用程序的每个模块构建为不同的dex文件(pre-dex),如果 minsdk 为21,则直接生成可以在 Android Lollipop 及以上系统中测试的APK包,而无需再耗费大量时间进行 dex 合并进程。
android { productFlavors dev { minSdkVersion 21 } prod { // The actual minSdkVersion for the application. minSdkVersion 14 } }
直接将单元测试结果输出到console中
使用这个小技巧,我们可以实时看到安卓单元测试的记录结果。
android { ... testOptions.unitTests.all { testLogging { events 'passed', 'skipped', 'failed', 'standardOut', 'standardError' outputs.upToDateWhen { false } showStandardStreams = true } }}
现在运行测试时,输出结果如下:
来源:@cesarmcrerreira
翻译:Brokge
- Gradle在Android Studio 的应用
- gradle在android studio中应用入门
- Gradle在Android Studio中的应用技巧
- Gradle在Android studio中遇到的问题
- android studio 一直卡在Gradle:Build Running的解决办法
- android studio 一直卡在Gradle:Build Running的解决办法
- Android Studio卡在Building gradle project info的解决方法
- Android Studio 一直卡在Gradle:Build Running的解决办法
- Android Studio 更新 gradle 一直在build的解决方案
- android studio 一直卡在Gradle:Build Running的解决办法
- Android Studio导入项目卡在Building gradle 的解决方法
- 有时编译android studio卡在gradle的某个任务
- Android Studio导入项目卡在Building gradle的解决方案
- 完美解决Android Studio在gradle上的各种问题
- Android studio一直卡在Gradle:Build Running的解决方法
- 完美解决Android Studio在gradle上的各种问题
- Android Studio 一直卡在Building Gradle project的界面
- 完美解决Android Studio在gradle上的各种问题
- 全站 HTTPS 来了
- 十个最值得阅读学习的C开源项目代码
- android 图片操作之Shader
- C语言内存管理:malloc、calloc、free的实现
- LVS+Keepalived之DR模式配置
- Gradle在Android Studio 的应用
- 地址、指针与引用
- 常见问题
- 独立日记 2016年1月3日 day13
- 大数据系列第二课:scala基础
- 新年本应新气象
- Exception in thread "http-bio-8080-exec-7"内存溢出问题
- C#——winform下的小例子
- golang的bufio用于内容解析