chore: 重构项目版本状态逻辑,更改为打包时自动修改

This commit is contained in:
Quyunshuo
2021-07-18 23:18:12 +08:00
parent ba2604353d
commit 7223cf1e3c
8 changed files with 66 additions and 38 deletions

View File

@ -374,7 +374,7 @@ fun test() {
### Coil ### Coil
**Coil **是一个 Android 图片加载库,通过 Kotlin 协程的方式加载图片。特点如下: **Coil** 是一个 Android 图片加载库,通过 Kotlin 协程的方式加载图片。特点如下:
- **更快**: Coil 在性能上有很多优化,包括内存缓存和磁盘缓存,把缩略图存保存在内存中,循环利用 bitmap自动暂停和取消图片网络请求等。 - **更快**: Coil 在性能上有很多优化,包括内存缓存和磁盘缓存,把缩略图存保存在内存中,循环利用 bitmap自动暂停和取消图片网络请求等。
- **更轻量级**: Coil 只有2000个方法前提是你的 APP 里面集成了 OkHttp 和 CoroutinesCoil 和 Picasso 的方法数差不多,相比 Glide 和 Fresco 要轻量很多。 - **更轻量级**: Coil 只有2000个方法前提是你的 APP 里面集成了 OkHttp 和 CoroutinesCoil 和 Picasso 的方法数差不多,相比 Glide 和 Fresco 要轻量很多。

View File

@ -40,35 +40,36 @@ android {
// } // }
buildTypes { buildTypes {
release { // 对应 ALPHA 版本
debug {
buildConfigField "String", "VERSION_TYPE", "\"${ProjectBuildConfig.Version.ALPHA}\""
// signingConfig signingConfigs.releaseConfig // signingConfig signingConfigs.releaseConfig
minifyEnabled false minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
applicationVariants.all { variant ->
variant.outputs.all { output ->
if (outputFileName != null
&& outputFileName.endsWith('.apk')
&& 'release' == variant.buildType.name) {
outputFileName = "${ProjectBuildConfig.applicationId}" +
"_${ProjectBuildConfig.versionCode}" +
"(${ProjectBuildConfig.versionName}).apk"
}
}
}
} }
debug { beta {
buildConfigField "String", "VERSION_TYPE", "\"${ProjectBuildConfig.Version.BETA}\""
// signingConfig signingConfigs.releaseConfig
minifyEnabled false minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
applicationVariants.all { variant -> }
variant.outputs.all { output -> release {
if (outputFileName != null buildConfigField "String", "VERSION_TYPE", "\"${ProjectBuildConfig.Version.RELEASE}\""
&& outputFileName.endsWith('.apk') // signingConfig signingConfigs.releaseConfig
&& 'debug' == variant.buildType.name) { minifyEnabled false
outputFileName = "${ProjectBuildConfig.applicationId}" + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
"_${ProjectBuildConfig.versionCode}" + }
"(${ProjectBuildConfig.versionName}).apk" }
}
} // 自定义打包apk的文件名
android.applicationVariants.all { variant ->
variant.outputs.all { output ->
if (outputFileName != null && outputFileName.endsWith('.apk')) {
outputFileName = "${ProjectBuildConfig.applicationId}" +
"_${ProjectBuildConfig.versionCode}" +
"(${ProjectBuildConfig.versionName})" +
"_${variant.buildType.name}" +
".apk"
} }
} }
} }

View File

@ -36,6 +36,25 @@ android {
kotlinOptions { kotlinOptions {
jvmTarget = JavaVersion.VERSION_1_8.toString() jvmTarget = JavaVersion.VERSION_1_8.toString()
} }
buildTypes {
// 对应 ALPHA 版本
debug {
buildConfigField "String", "VERSION_TYPE", "\"${ProjectBuildConfig.Version.ALPHA}\""
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
beta {
buildConfigField "String", "VERSION_TYPE", "\"${ProjectBuildConfig.Version.BETA}\""
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
release {
buildConfigField "String", "VERSION_TYPE", "\"${ProjectBuildConfig.Version.RELEASE}\""
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
} }
kapt { kapt {

View File

@ -56,11 +56,19 @@ android {
} }
buildTypes { buildTypes {
release { // 对应 ALPHA 版本
debug {
buildConfigField "String", "VERSION_TYPE", "\"${ProjectBuildConfig.Version.ALPHA}\""
minifyEnabled false minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
} }
debug { beta {
buildConfigField "String", "VERSION_TYPE", "\"${ProjectBuildConfig.Version.BETA}\""
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
release {
buildConfigField "String", "VERSION_TYPE", "\"${ProjectBuildConfig.Version.RELEASE}\""
minifyEnabled false minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
} }

View File

@ -19,8 +19,14 @@ object ProjectBuildConfig {
/** /**
* 项目当前的版本状态 * 项目当前的版本状态
* 该状态直接反映当前App是测试版 还是正式版 或者预览版 * 该状态直接反映当前App是测试版 还是正式版 或者预览版
* 打包前记得修改该状态
* 正式版:RELEASE、预览版(α)-内部测试版:ALPHA、测试版(β)-公开测试版:BETA * 正式版:RELEASE、预览版(α)-内部测试版:ALPHA、测试版(β)-公开测试版:BETA
*/ */
const val versionStatus = /*"VERSION_STATUS_RELEASE"*/ "VERSION_STATUS_ALPHA" /*"VERSION_STATUS_BETA"*/ object Version {
const val RELEASE = "VERSION_STATUS_RELEASE"
const val ALPHA = "VERSION_STATUS_ALPHA"
const val BETA = "VERSION_STATUS_BETA"
}
} }

View File

@ -9,8 +9,6 @@ import com.quyunshuo.androidbaseframemvvm.buildsrc.*
android { android {
defaultConfig { defaultConfig {
// 相关自定义配置
resValue "string", "VERSION_STATUS", ProjectBuildConfig.versionStatus
resValue "string", "BUGLY_APP_ID", SDKKeyConfig.BUGLY_APP_ID resValue "string", "BUGLY_APP_ID", SDKKeyConfig.BUGLY_APP_ID
} }

View File

@ -27,11 +27,6 @@ import com.tencent.smtt.sdk.QbSdk.PreInitCallback
@AutoService(ApplicationLifecycle::class) @AutoService(ApplicationLifecycle::class)
class CommonApplication : ApplicationLifecycle { class CommonApplication : ApplicationLifecycle {
/**
* 项目当前的版本状态
*/
val versionStatus: String by lazy { BaseApplication.context.getString(R.string.VERSION_STATUS) }
companion object { companion object {
// 全局CommonApplication // 全局CommonApplication
@SuppressLint("StaticFieldLeak") @SuppressLint("StaticFieldLeak")
@ -132,7 +127,7 @@ class CommonApplication : ApplicationLifecycle {
*/ */
private fun initARouter(): String { private fun initARouter(): String {
// 测试环境下打开ARouter的日志和调试模式 正式环境需要关闭 // 测试环境下打开ARouter的日志和调试模式 正式环境需要关闭
if (versionStatus == VersionStatus.ALPHA || versionStatus == VersionStatus.BETA) { if (BuildConfig.VERSION_TYPE != VersionStatus.RELEASE) {
ARouter.openLog() // 打印日志 ARouter.openLog() // 打印日志
ARouter.openDebug() // 开启调试模式(如果在InstantRun模式下运行必须开启调试模式线上版本需要关闭,否则有安全风险) ARouter.openDebug() // 开启调试模式(如果在InstantRun模式下运行必须开启调试模式线上版本需要关闭,否则有安全风险)
} }
@ -150,7 +145,7 @@ class CommonApplication : ApplicationLifecycle {
CrashReport.initCrashReport( CrashReport.initCrashReport(
BaseApplication.context, BaseApplication.context,
BaseApplication.context.getString(R.string.BUGLY_APP_ID), BaseApplication.context.getString(R.string.BUGLY_APP_ID),
versionStatus == VersionStatus.ALPHA || versionStatus == VersionStatus.BETA BuildConfig.VERSION_TYPE != VersionStatus.RELEASE
) )
return "Bugly -->> init complete" return "Bugly -->> init complete"
} }

View File

@ -1,6 +1,7 @@
package com.quyunshuo.androidbaseframemvvm.common.di package com.quyunshuo.androidbaseframemvvm.common.di
import com.quyunshuo.androidbaseframemvvm.base.BuildConfig import com.quyunshuo.androidbaseframemvvm.base.BuildConfig
import com.quyunshuo.androidbaseframemvvm.base.constant.VersionStatus
import com.quyunshuo.androidbaseframemvvm.common.constant.NetBaseUrlConstant import com.quyunshuo.androidbaseframemvvm.common.constant.NetBaseUrlConstant
import dagger.Module import dagger.Module
import dagger.Provides import dagger.Provides
@ -34,7 +35,7 @@ class DINetworkModule {
@Provides @Provides
fun provideOkHttpClient(): OkHttpClient { fun provideOkHttpClient(): OkHttpClient {
// 日志拦截器部分 // 日志拦截器部分
val level = if (BuildConfig.DEBUG) BODY else NONE val level = if (BuildConfig.VERSION_TYPE != VersionStatus.RELEASE) BODY else NONE
val logInterceptor = HttpLoggingInterceptor().setLevel(level) val logInterceptor = HttpLoggingInterceptor().setLevel(level)
return OkHttpClient.Builder() return OkHttpClient.Builder()