Androidstudio 打包配置

用Android studio有一段时间了但是一直都没有过多的去看看build.gradle 这个文件,知道是编译配置,但是里面的东西就是一直copy以前项目的,多少改改。然后想着既然可以独立做项目了,那么应该要有一个完整的学习,至少要能够自己一个人就能完成一个项目,于是就简单的研究了一下:下面直接看代码

apply plugin: 'com.android.application'

def keystorePropertiesFile = rootProject.file("keystore.properties")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))

static def releaseTime() {
    return new Date().format("yyyy_MM_dd_HH_mm_ss", TimeZone.getTimeZone("UTC"))
}
android {
    compileSdkVersion 26
    defaultConfig {
        applicationId "com.sigel.test"
        minSdkVersion 24
        targetSdkVersion 26
        versionCode VersionCode as Integer
        versionName VersionName
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

    signingConfigs {
        release {
            storeFile file(keystoreProperties['KEY_STORE_FILE'])
            storePassword keystoreProperties['KEY_STORE_PWD']
            keyAlias "测试科技"
            keyPassword keystoreProperties['KEY_ALIAS_PWD']
        }
    }

    buildTypes {
        release {
            zipAlignEnabled true//优化zipAlign
            minifyEnabled true//是否混淆
            shrinkResources true//移除无用的资源文件  shrinkResources依赖于minifyEnabled,必须和minifyEnabled一起用
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'//加载默认的混淆配置文件
            signingConfig signingConfigs.release

            applicationVariants.all { variant ->
                variant.outputs.all { output ->
                    def outputFlie = output.outputFile
                    if (outputFlie != null && outputFlie.name.endsWith(".apk")&& variant.buildType.name.equals("release")){
                        def fileName ="Test_${variant.versionName}_${variant.versionCode}_${releaseTime()}_release.apk"
                        outputFileName = fileName
                    }

                }
            }
        }

        debug {
            minifyEnabled false
            signingConfig signingConfigs.release
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    dataBinding{
        enabled true
    }

}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation('com.android.support.test.espresso:espresso-core:3.0.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    implementation 'com.github.sigale:FlowLineView:v1.0.0'

    api project(path: ':base')

}
第一句代码大家都应该知道,这里就不说了
def keystorePropertiesFile = rootProject.file("keystore.properties")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile)
 
 

这个是我把我的签名配置写在了一个叫keystore.properties的文件里面了,后面我要用这些配置呢,就在闲先声明一下。

static def releaseTime() {
    return new Date().format("yyyy_MM_dd_HH_mm_ss", TimeZone.getTimeZone("UTC"))
}
这是一个获取时间的方法,后面更改apk名字的时候我用到了

然后就是android 里面的一些常规配置了这里也不多说,说一下sigingConfigs吧。

这个里面呢就是我们用gradle assemblerelease 打包的时候读取的签名配置信息。

然后其他的代码块里面都有注释。最后解释一点

dataBinding{
    enabled true
}
这个是我用了databindng。没有使用的不用添加

猜你喜欢

转载自blog.csdn.net/xxx_19942/article/details/80674798