Android Studio中gradle参数说明

一, Module: app中gradle参数说明 首先举个例子,然后一 一说明

apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion '25.0.0'
    defaultConfig {
        applicationId "com.okkuaixiu.combo"
        minSdkVersion 15
        targetSdkVersion 25
        versionCode 2
        versionName "1.0.1"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        debug {
            minifyEnabled true
            shrinkResources true
            signingConfig signingConfigs.debug
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        release {
            minifyEnabled true
            shrinkResources true
            signingConfig signingConfigs.release
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    signingConfigs {
        debug {
            storeFile file('../oipoi.keystore')
            storePassword "6863"
            keyAlias "uuiw"
            keyPassword "66763"
        }
        release {
            storeFile file('../oipoi.keystore')
            storePassword "6863"
            keyAlias "uuiw"
            keyPassword "66763"
        }

    }
}

repositories {
    flatDir {
        dirs 'libs'
    }
}

dependencies {
    compile 'com.android.support:appcompat-v7:25.0.0'
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:support-v4:25.0.1'
    compile 'com.android.support:cardview-v7:25.0.1'
    compile files('libs/happy-dns-0.2.7.jar')
    compile files('libs/okhttp-2.7.5.jar')
    compile files('libs/okio-1.6.0.jar')
    compile files('libs/qiniu-android-sdk-7.1.2.jar')
    compile(name: 'fastjson-1.2.9', ext: 'jar')
    compile files('libs/universal-image-loader-1.9.5.jar')
    compile(name: 'xUtils-2.6.14', ext:'jar')
    compile(name: 'org.apache.http.legacy', ext:'jar')
    compile 'com.umeng.analytics:analytics:latest.integration'
    compile 'cn.yipianfengye.android:zxing-library:2.1'
    compile files('libs/gson-2.2.4.jar')
}

下面开始对上面例子中使用的参数进行说明

开头第一行apply plugin: ‘com.android.application’,这表示该module是一个app module,应用了com.android.application插件,如果是一个android library,那么这里的是apply plugin: ‘com.android.library’。

android{}表示的是Android专有的一些配置

compileSdkVersion表示基于那个SDK编译的

buildToolsVersion是基于哪个构建工具版本进行构建的。

defaultConfig是默认配置,如果没有其他的配置覆盖,就会使用这里的。看其属性的名字就可以知道其作用,比如applicationId是配置包名的,versionCode是版本号,versionName是版本名称等。

buildTypes是构建类型,常用的有release和debug两种,可以在这里面启用混淆,启用zipAlign以及配置签名信息等。配置签名信息是放在signingConfigs里面,有debug和release两种,storeFile file('../oipoi.keystore')中写的标识这个keystore文件是放在项目的同一个目录下面.storeFile是签名证书文件,keyAlias是别名,keyPassword是key的密码,storePassword是证书的密码
我们可以为不同的buildTypes选择是否启用混淆,一般release发布版本是需要启用混淆的,这样别人反编译之后就很难分析你的代码,而我们自己开发调试的时候是不需要混淆的,所以debug不启用混淆。minifyEnabled为true表示启用混淆,proguardFile是混淆使用的配置文件,这里是module根目录下的proguard-rules.pro文件

dependencies就不属于Android专有的配置了,它定义了该module需要依赖的jar,aar,jcenter库信息。在里面可以看到有几种写法,但是标识都是同一个意思.比如,compile(name: 'alibabauth_accountlink-1.1.4', ext: 'jar')和compile files('libs/umeng_social_api.jar')表示的都是依赖于第三方的jar,所以怎样写都是可以的.但是要注意一点这两种写法都是表示在项目libs目录下存在此jar包,否则会报找不到jar包的错误,这是很明显的。compile 'com.android.support:support-v4:25.0.1',这种写法就表示了是从android中央库中获取的,不需要在本地libs目录下有v4包。这一点是不同的。

在平时的打包发布时如果需要更改apk名称,可以在android{}目录中写法如下:

applicationVariants.all { variant ->
        variant.outputs.each { output ->
            if (variant.buildType.name.equals('release')) {
                output.outputFile = new File(output.outputFile.parent, "正式版-v" +
                        defaultConfig.versionName + ".apk" );
            } else if (variant.buildType.name.equals('debug')) {
                output.outputFile = new File(output.outputFile.parent, "测试版-v" +
                        defaultConfig.versionName + ".apk" );
            }
        }
    }

可以看到根据测试和正式可以有不同的名称。 output.outputFile.parent表示生成apk的路径,这个是默认路径在项目/app/build/outpus/apk,当然我们可以自己写路径。

variant.buildType.name指编译类型,就是debug或者release

defaultConfig.versionName表示在defaultConfig标签下写的版本号

如果想加上日期,可以添加代码:

def releaseTime() {
    return new Date().format("yyyyMMdd", TimeZone.getTimeZone("UTC"))
}

在 .apk前面添加defaultConfig.versionName + "-${releaseTime()}.apk"引用一下就可以了。

猜你喜欢

转载自my.oschina.net/u/2438447/blog/908778