码迷,mamicode.com
首页 > 移动开发 > 详细

Gradle 配置 Android 工程

时间:2016-03-20 17:33:02      阅读:243      评论:0      收藏:0      [点我收藏+]

标签:

# Gradle 配置 Android 工程 #


随着Android studio 的普及,gradle 也开始在android 开发着中普及起来。这里分享一下我的grale 脚本以及对gradle的认识。


1.Gradle 的基本结构

技术分享


整个工程的gradle 由 project build.gradle, seetings.gradle,gradle.properties,module build.gradle 组成。


## 1.project build.gradle ##
projects build.gradle是项目所有模块需要的资源。以及配置各个module中的公共资源,如版本号,build tool 等信息

    ext {
    applicationId = "com.tracelijing.immediately"
    buildToolsVersion = "23.0.2"
    compileSdkVersion = 23
    minSdkVersion = 14
    targetSdkVersion = 23
    versionCode = 1
    versionName = "1.0.0"
    }


## 2.settings.gradle: ##
这个文件是用来配置多模块的,比如你的项目有两个模块module-app,module-tlibrary,那么你就需要在这个文件中进行配置,格式如下:

    include ‘:app‘, ‘:tlibrary‘

## 3.gradle.properties: ##
gradle 配置文件,比如可以配置签名相关信息如keystore位置,密码,keyalias等。

## 4.module.gradle: ##
主要是配置每个子module 的细节,上面我们也提到了在root build.gradle 中声明子module 公用的信息,下面我们看下子module 中如何使用 rootProject 的信息。

    android {
    compileSdkVersion rootProject.ext.compileSdkVersion
    buildToolsVersion rootProject.ext.buildToolsVersion
    
    defaultConfig {
    minSdkVersion rootProject.ext.minSdkVersion
    targetSdkVersion rootProject.ext.targetSdkVersion
    versionCode rootProject.ext.versionCode
    versionName rootProject.ext.versionName
    }
    buildTypes {
    release {
    minifyEnabled false
    proguardFiles getDefaultProguardFile(‘proguard-android.txt‘), ‘proguard-rules.pro‘
    }
    }
    


- android 中 module 的区分主要有以下两中

    Android application module
    
        apply plugin: ‘com.android.application‘
    
    android project module
    
        apply plugin: ‘com.android.library‘

- 工程依赖,jar 包管理

     导入jar包

       ` compile files(‘libs/xxx.jar‘)`

    导入工程

    `compile project(‘:module-A‘)`

    导入aar

    `compile ‘com.aaa.xxx:core:1.0.1@aar‘`

    排除依赖
    `compile (group:‘xxx‘,name:‘xxx‘,version:‘xxx‘){
  exclude group:‘xxx‘,module:‘xxx‘//module对应的就是artifactId}`
    

- 签名管理
  签名是一个很敏感的东西,所以我们应该妥善的保管。这里我们可以把签名发展本地。
  定义一个keystore.properties
    
     store_file=D\:\\Code\\immediately.jks  
      store_password=123456  
      key_alias=123456  
      key_password=123456  

    
          signingConfigs {
          def Properties props = new Properties()
          def propFile = new File(‘signing.properties‘)
          if (propFile.canRead()) {
          props.load(new FileInputStream(propFile))
          
          signingConfigs {
          release {
          storeFile file(props[‘store_file‘])
          storePassword props[‘store_password‘]
          keyAlias props[‘key_alias‘]
          keyPassword props[‘key_password‘]
          }
          debug {
          storeFile file(props[‘store_file‘])
          storePassword props[‘store_password‘]
          keyAlias props[‘key_alias‘]
          keyPassword props[‘key_password‘]
          }
          }
          } else {
          signingConfigs {
          debug {
          println ‘signing.properties not found‘
          }
          }
         }
          }
    
- 输出管理

    因为需要经常打包,apk 文件和 mapping 文件不在同一处比较麻烦所以重现定义了一下 apk 文件 已经 mapping 文件的输出路径,这样方便了管理资源
    
     android.applicationVariants.all { variant ->
         variant.outputs.each { output ->
             def outputFile = output.outputFile
             def intoFile = "D:\\immediateRelease"
             if (outputFile != null && outputFile.name.endsWith(‘.apk‘)) {
                 //这里修改apk文件名
                 def fileName = "immediatel-${defaultConfig.versionCode}-${releaseTime()}.apk"
                 output.outputFile = new File(intoFile, fileName)
             }
 
             if (variant.getBuildType().isMinifyEnabled()) {
                 variant.assemble.doLast {
                     copy {
                         from variant.mappingFile
                         into intoFile
                         rename { String fileName ->
                             "mapping-${defaultConfig.versionCode}-${releaseTime()}.txt"
                         }
                     }
                 }
             }
         }
     }

## 总结 ##
本篇只讲了 gradle 的基本结构和一些基本配置。  
详细请参考 github https://github.com/lijing01/immediately  
Gradle 可以做很多事情,之后会进一步的学习。

Gradle 配置 Android 工程

标签:

原文地址:http://www.cnblogs.com/babytrace/p/5297968.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!