apply plugin: 'com.android.application'
android {
compileSdkVersion 26
defaultConfig {
applicationId "com.example.soolife_js.demoproject"
minSdkVersion 19
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled = true//突破65535限制
flavorDimensions "3.0.1" // 多渠道打包时,确保风味的一致性
}
lintOptions {
// 移除lint检查的error 应该是?
abortOnError false
// 不清楚什么意思?
checkReleaseBuilds false
}
dexOptions {
javaMaxHeapSize "4g"
preDexLibraries = false
}
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
android {
productFlavors {
kuan {
// manifestPlaceholders = [app_name: "kuan", icon: "@drawable/temp_tuwen"]
// android:label="${app_name}" 配合清单文件
resValue "string", "app_name", "线上测试" // gradle自动生成的参数,String里面不能存在
// applicationId "getui.permission.GetuiService.package_name_debug"
resValue "string", "applicationId", "getui.permission.GetuiService.package_name_debug"
}
xiaomi {
}
baidu {
}
}
productFlavors.all {
flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}
}
// 自动多渠道打包时,调用该代码??
signingConfigs {
release {
storeFile file('D:/Android/AndroidStudioProjects/mxg.keystore')
keyPassword '123456'
keyAlias 'mxg'
keyPassword '123456'
// keyPassword KEY_PASSWORD
}
config {
}
}
buildTypes {
// 这里的名字自定义,不要求大小写
debug {
// 这里的作用是选择是否混淆代码
minifyEnabled false
// signingConfig signingConfigs.release
buildConfigField "String", "BASE_URL", "\"https://debug.api/\"" // BuildConfig.BASE_URL
// resValue "string","app_name","线上测试" // getResources().getString(R.string.app_name)
// 这里是在 applicationId 中添加了一个后缀。所以『.』要加上
applicationIdSuffix ".debug"
// applicationId "getui.permission.GetuiService.package_name_debug"
}
develop.initWith(buildTypes.debug)
develop {
minifyEnabled false
signingConfig signingConfigs.release
buildConfigField "String", "BASE_URL", "\"https://develop.api/\""
// 可以修改applicationId的名字
applicationIdSuffix ".develop"
buildConfigField "String","tag","\"debug\""
buildConfigField "boolean","isDebug","true"
// resValue "String","app_name","\"Demo_debug\"" // 修改系统参数
manifestPlaceholders = [
appName : "HelloWorld",
dbVersion: 101
]
/*
*
在代码中使用: String tag = BuildConfig.tag;
在manifest中引用变量
<meta-data
android:name="app_name"
android:value="${appName}" />
* */
}
release {
buildConfigField "String", "BASE_URL", "\"https://release.api/\""
//是否开启代码混淆
minifyEnabled true
//是否移除无用资源
zipAlignEnabled true
signingConfig signingConfigs.release
//混淆的配置文件
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
//压缩对齐生成的apk包
zipAlignEnabled true
//资源压缩只与代码压缩协同工作。
shrinkResources true
minifyEnabled true
}
}
android.applicationVariants.all { variant ->
variant.outputs.all {
if (variant.buildType.name == "release") {
outputFileName = "小袋快借${defaultConfig.versionName}_${releaseTime()}_${variant.productFlavors[0].name}.apk"
} else {
// outputFileName = "小袋快借${defaultConfig.versionName}_${releaseTime()}_${variant.productFlavors[0].name}_debug.apk"
// 小袋快借1.0_2018-03-08_baidu_debug.apk
// Soolife_1.0_1_baidu
outputFileName = "DemoProject_${versionName}_${versionCode}_${variant.productFlavors[0].name}.apk"
}
}
}
}
// 获取当前系统时间
def releaseTime() {
return new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("UTC"))
}
// 获取程序名称
def getProductName() {
return "gradlesample"
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:26.1.0'
compile 'com.android.support:design:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
// 遇到dex超出方法数的问题,采用android.support-multidex进行解决
compile 'com.android.support:multidex:1.0.1'
// 阿里SopHix热修复框架操作实践
compile 'com.aliyun.ams:alicloud-android-hotfix:3.0.2'
}