示例一:签名信息
gradle.properties 定义签名信息
此处tinker.jks文件放在根目录,与gradle.properties同级目录
KEY_FILE_PATH=tinker.jks
KEY_ALIAS=tinker
KEY_PASSWORD=123456
KEY_STORE_PASSWORD=123456
build.gradle 引用
signingConfigs {
tinker {
keyAlias KEY_ALIAS
keyPassword KEY_PASSWORD
storeFile file(KEY_FILE_PATH)
storePassword KEY_STORE_PASSWORD
}
}
buildTypes {
debug {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.tinker
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.tinker
}
}
示例二 APP版本信息
自定义version.properties 并定义版本信息
VERSION_NAME=1.0.1
VERSION_CODE=101
build.gradle 引用
//获取版本号
def verCode() {
def versionPropsFile = file("../version.properties")
if (versionPropsFile.canRead()) {
Properties versionProps = new Properties()
versionProps.load(new FileInputStream(versionPropsFile))
return versionProps['VERSION_CODE'].toInteger()
} else {
throw new GradleException("Could not read gradle.properties")
}
}
//获取版本名
def verName() {
def versionPropsFile = file("../version.properties")
if (versionPropsFile.canRead()) {
Properties versionProps = new Properties()
versionProps.load(new FileInputStream(versionPropsFile))
return versionProps['VERSION_NAME']
} else {
throw new GradleException("Could not read gradle.properties")
}
}
android{
defaultConfig {
applicationId "com.xq.mybuglyhoxfix"
minSdkVersion 15
targetSdkVersion 25
versionCode verCode()
versionName verName()
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
ndk {
//设置支持的SO库架构
abiFilters 'armeabi' //, 'x86', 'armeabi-v7a', 'x86_64', 'arm64-v8a'
}
}
}
示例三:依赖的版本信息
项目的build.gradle 定义版本号
ext {
compileSdkVersion = 27
buildToolsVersion = "27.0.3"
minSdkVersion = 16
targetSdkVersion = 27
supportLibraryVersion = "27.1.1"
}
module的build.gradle 引用
android {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
defaultConfig {
//...
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 1
versionName "1.0.0"
//...
}
}
ext {
arch = "1.1.1"
retrofit_version = "2.4.0"
}
dependencies {
implementation "com.android.support:appcompat-v7:$rootProject.ext.supportLibraryVersion"
implementation "com.android.support:design:$rootProject.ext.supportLibraryVersion"
implementation "com.android.support:cardview-v7:$rootProject.ext.supportLibraryVersion"
implementation "com.android.support:palette-v7:$rootProject.ext.supportLibraryVersion"
implementation "android.arch.lifecycle:runtime:$arch"
implementation "com.squareup.retrofit2:converter-gson:${retrofit_version}"
示例四: 打包时间
module的build.gradle中:
def releaseTime() {
return new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("UTC"))
}
android {
compileSdkVersion 27
buildToolsVersion '27.0.3'
defaultConfig {
minSdkVersion 16
targetSdkVersion 27
versionCode 13
versionName "1.3.1"
multiDexEnabled true
}
buildTypes {
release {
//混淆
minifyEnabled true
//Zipalign优化
zipAlignEnabled true
// 移除无用的resource文件
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
//apk命名
applicationVariants.all { variant ->
//variant.outputs.each { output -> //3.0以下
variant.outputs.all { output -> //3.0以上
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
// 输出apk名称为release_v0.1_2017-02-26.apk
def fileName = "release_v${defaultConfig.versionName}_${releaseTime()}.apk"
//output.outputFile = new File(outputFile.parent, fileName) //3.0以下
outputFileName = fileName //3.0以上
}
}
}
}
}
}