Gradle

为什么要用Gradle?

    Gradle是比较先进的构建系统,也是一个很好的构建工具,允许通过插件自定义构建逻辑。

    以下是为什么Android Studio选择Gradle的主要原因:

    1.使用领域专用语言(Domain Specific Language)来描述和处理构建逻辑。(以下简称DSL)
    2.基于Groovy。DSL可以混合各种声明元素,用代码操控这些DSL元素达到逻辑自定义。
    3.支持已有的Maven或者Ivy仓库基础建设
    4.非常灵活,允许使用best practices,并不强制让你遵照它的原则来。
    5.其它插件时可以暴露自己的DSL和API来让Gradle构建文件使用。
    6.允许IDE集成,是很好的API工具
     

基础配置

   Android Studio中有一个顶级的build.gradle文件,每一个module还有一个自己的build.gradle。这个文件是使用Groovy语法和Android Plugin for Gradle元素的配置文件。通常我们只需要修改module的build文件就可以了。
   下面是一个简单的例子
apply plugin:'com.android.application'

        android{
            compileSdkVersion 19
            buildToolsVersion"19.0.0"

            defaultConfig{
                applicationId"com.example.my.app"
                minSdkVersion 8
                targetSdkVersion 19
                versionCode 1
                versionName"1.0"
            }
            buildTypes{
                release{
                minifyEnabled true
                proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'
                }
            }
        }
    第一句apply plugin: ‘com.android.application’说明在这个build文件中使用Android plugin for Gradle,有了这一句后,那些针对Android的元素才有意义。比如android{…}这个就是配置所有针对Android项目build时的选项。

    compileSdkVersion:编译时用的sdk版本
    buildToolsVersion:build工具的版本
    defaultConfig:动态的在build时配置AndroidManifest.xml里的项目,defaultConfig里的配置可以覆盖manifest里的配置。
    buildTypes:配置如何构建和打包你的App,默认有debug和release两个类型。
    debug类型包含调试时的信息,并且有debug key签名。
    release默认是不含签名的。本例中release版本用了ProGuard。
    dependencies:配置此模块的依赖。

依赖:

dependencies{
            // Module dependency
            compile project(":lib") 
            // Remote binary dependency
            compile'com.android.support:appcompat-v7:19.0.1'
            // Local binary dependency
            compile fileTree(dir:'libs',include:['*.jar'])
}
模块依赖: compile project(“:lib”),表明本模块依赖于lib模块,编译的时候系统会把lib模块包含进来

远程的二进制依赖: compile ‘com.android.support:appcompat-v7:19.0.1’
*当本地没有此依赖时会默认从Maven Central Repository下载相应的依赖。从哪里下载可以在顶级的build文件中配置。

*本地二进制依赖:**compile fileTree(dir: ‘libs’,include:[‘.jar’]),把jar包拷贝到/libs文件夹下,compile fileTree(dir: ‘libs’,include:[‘*.jar’])意思是,app/libs下的所有jar包都包含进来

ProGuard

ProGuard的作用是在byte级别对你的app进行分析优化,使得你的App变得更小,更快。值得一提的是,当你使用某些开源项目时,他们会提醒你把一些包排除在ProGuard里,防止出错。
android{
        ...
        buildTypes{
            release{
                minifyEnabled true
                proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'
                }
            }
        }
getDefaultProguardFile(‘proguard-android.txt’)获得默认的ProGuard配置。每个模块也都有模块级别的ProGuard规则,在proguard-rules.pro这个文件里,当然你也可以自己配置ProGuard规则


Applicatuion ID(也就是android包名)
Application ID是用来唯一标识要发行的应用的。在build.gradle里设置。
   defaultConfig{
                applicationId"com.example.my.app"
                minSdkVersion 15
                targetSdkVersion 19
                versionCode 1
                versionName"1.0"
            }
     //系统允许你对不同的产品类型设定不同的id,比如免费版和高级版。
            productFlavors{
                pro{
                    applicationId="com.example.my.pkg.pro"
                }
                free{
                    applicationId="com.example.my.pkg.free"
                }
            }

            buildTypes{
            debug{
                applicationIdSuffix".debug"
            }
        }

配置签名

debug版本与release版本的区别在于是否可以在一个安全的设备上debug和APK如何被签名的。在debug版本中,系统会提供一个默认的key来签名和已知的证书来授权App,避免在构建的时候出现密码提示。但是在release版本中,除非你主动提供一个key,不然系统是不会构建此项目的

Release签名步骤

创建keystore。keystore是一个包含一系列私钥的二进制文件,这个文件必须妥善保管。
创建一个私钥。一个私钥代表着一个app实体。
 在build文件中配置
        android{
                ...
                defaultConfig{...}
                signingConfigs{
                release{
                    storeFile file("myreleasekey.keystore")
                    storePassword"password"
                    keyAlias"MyReleaseKey"
                    keyPassword"password"
                }
            }
            buildTypes{
            release{
                ...
                signingConfig signingConfigs.release
            }
        }
    在Android Studio中启动assembleRelease。app/build/apk/app-release.apk这个文件就是包含你release key的apk了。
    注:一般不会直接在build文件中写入密码的,密码信息可以写在环境变量中
    storePassword System.getenv("KSTOREPWD")
    keyPassword System.getenv("KEYPWD")
    *或者用命令行输入
    storePassword System.console().readLine("\nKeystore password: ")
    keyPassword System.console().readLine("\nKey password: ")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值