gradle 教程积累

1. 基础教程

实践博客

Maven

建立企业内部maven服务器并使用Android Studio发布公共项目

Gradle Tutorial

官网资料

2.进阶博文

  • Android Gradle编译过程 比较详细的讲述了Gradle 编译 Apk的过程。
  • Weapons for Boilerplate Destruction 之Gradle 篇
    《gradle 教程积累》 检查插件
    《gradle 教程积累》 增加依赖
    《gradle 教程积累》 增加外部扩展(1),可以清晰统一的管理子moduled的配置
    以上project.extensions.create….,可以使用${project.myextension.aNumber}访问到对应的属性
    《gradle 教程积累》 获取变量从而达到动态配置的目的

3.进阶源码阅读

  • hugo JakeWharton 不必介绍了。项目中使用Gradle plugin 和自定义Task 顺便学习一些Process Annotation.

开源插件

使用案例

  • 本地引入.aar文件
dependencies {
   compile(name:'nameOfYourAARFileWithoutExtension', ext:'aar')
 }
repositories{
      flatDir{
              dirs 'libs'
       }
 }
def gitSha = 'git rev-parse --short HEAD'.execute([], project.rootDir).text.trim()
def gitTag = 'git tag'.execute([], project.rootDir).text.trim().split("\n").last()
def gitCommits = Integer.parseInt('git rev-list --count HEAD'.execute([], project.rootDir).text.trim()) 
  • 动态修改Manifest中的参数

    《gradle 教程积累》

android {
    compileSdkVersion 23
    buildToolsVersion '23.0.2'

    defaultConfig {
        applicationId "com.liulishuo.engzo"
        minSdkVersion 15
        targetSdkVersion 23
        manifestPlaceholders = [
                // 这里需要换成:tencent+你的AppId
                "tencentAuthId": "tencent123456",
        ]
    }
}
  • 使用全局变量进行依赖版本及一些常用配置的统一管理
  • 配置 Apk split 使Android Studio每个对应的Cpu 架构都生成单独的apk,减小整个应用的大小。
  • rootdirOfProject/gradle.properties 配置变量如: VERSION_NAME=1.2.2-SNAPSHOT 然后可以在配置文件所在项目中的所有*.gradle 文件直接引用。 有点类似Java public static的感觉。
  • Java 指定JDK版本
android {
    compileOptions {
     sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
//      targetCompatibility JavaVersion.VERSION_1_8
//        sourceCompatibility JavaVersion.VERSION_1_8
    }
}

问题解决

  • 依赖更新
    项目依赖的远程包如果有更新,会有提醒或者自动更新吗? 不会的,需要你手动设置changing标记为true,这样gradle会每24小时检查更新,通过更改resolutionStrategy可以修改检查周期。
configurations.all {
// check for updates every build
resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
}
dependencies {
compile group: "group", name: "projectA", version: "1.1-SNAPSHOT", changing: true
}

之前上传aar同一版本到maven仓库,但依赖却没有更新,该怎么办呢?可以直接删除本地缓存,缓存在~/.gradle/caches目录下,删除缓存后,下次运行就会自动重新下载远程依赖了。

    原文作者:北疆_
    原文地址: https://www.jianshu.com/p/952ca955755a
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞