用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。没有使用的不用添加