From f363d13707c2d9794d7d4b9e78e02b6458a07ea5 Mon Sep 17 00:00:00 2001 From: Zion Huang Date: Mon, 7 Aug 2023 17:01:26 +0800 Subject: [PATCH] Add full and foss product flavors --- .github/workflows/build.yml | 4 +-- .github/workflows/build_pr.yml | 4 +-- app/build.gradle.kts | 29 +++++++++++------ .../java/com/zionhuang/music/utils/Utils.kt | 5 +++ .../java/com/zionhuang/music/utils/Utils.kt | 31 +++++++++++++++++++ .../java/com/zionhuang/music/MainActivity.kt | 31 ++----------------- 6 files changed, 61 insertions(+), 43 deletions(-) create mode 100644 app/src/foss/java/com/zionhuang/music/utils/Utils.kt create mode 100644 app/src/full/java/com/zionhuang/music/utils/Utils.kt diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9a63af9a4..98d6bce68 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -32,7 +32,7 @@ jobs: cache: 'gradle' - name: Build debug APK and run jvm tests - run: ./gradlew assembleDebug lintDebug testDebugUnitTest --stacktrace -DskipFormatKtlint + run: ./gradlew assembleDebug lintFullDebug testFullDebugUnitTest --stacktrace -DskipFormatKtlint env: MUSIC_DEBUG_KEYSTORE_FILE: 'music-debug.jks' MUSIC_DEBUG_SIGNING_STORE_PASSWORD: ${{ secrets.SIGNING_KEY_PASSWORD }} @@ -42,4 +42,4 @@ jobs: uses: actions/upload-artifact@v3 with: name: app - path: app/build/outputs/apk/debug/*.apk + path: app/build/outputs/apk/full/debug/*.apk \ No newline at end of file diff --git a/.github/workflows/build_pr.yml b/.github/workflows/build_pr.yml index 6fafe23f7..86e12b112 100644 --- a/.github/workflows/build_pr.yml +++ b/.github/workflows/build_pr.yml @@ -18,7 +18,7 @@ jobs: cache: 'gradle' - name: Build debug APK and run jvm tests - run: ./gradlew assembleDebug lintDebug testDebugUnitTest --stacktrace -DskipFormatKtlint + run: ./gradlew assembleDebug lintFullDebug testFullDebugUnitTest --stacktrace -DskipFormatKtlint env: PULL_REQUEST: 'true' @@ -26,4 +26,4 @@ jobs: uses: actions/upload-artifact@v3 with: name: app - path: app/build/outputs/apk/debug/*.apk + path: app/build/outputs/apk/full/debug/*.apk diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 5b368d687..7b8008169 100755 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -6,11 +6,6 @@ plugins { kotlin("kapt") id("com.google.dagger.hilt.android") id("com.google.devtools.ksp") - if (System.getenv("PULL_REQUEST") == null) { - id("com.google.gms.google-services") - id("com.google.firebase.crashlytics") - id("com.google.firebase.firebase-perf") - } } android { @@ -37,6 +32,20 @@ android { resValue("string", "app_name", "InnerTune Debug") } } + flavorDimensions += "version" + productFlavors { + create("full") { + dimension = "version" + if (System.getenv("PULL_REQUEST") == null) { + apply(plugin = "com.google.gms.google-services") + apply(plugin = "com.google.firebase.crashlytics") + apply(plugin = "com.google.firebase.firebase-perf") + } + } + create("foss") { + dimension = "version" + } + } signingConfigs { getByName("debug") { if (System.getenv("MUSIC_DEBUG_SIGNING_STORE_PASSWORD") != null) { @@ -126,11 +135,11 @@ dependencies { coreLibraryDesugaring(libs.desugaring) - implementation(platform(libs.firebase.bom)) - implementation(libs.firebase.analytics) - implementation(libs.firebase.crashlytics) - implementation(libs.firebase.config) - implementation(libs.firebase.perf) + "fullImplementation"(platform(libs.firebase.bom)) + "fullImplementation"(libs.firebase.analytics) + "fullImplementation"(libs.firebase.crashlytics) + "fullImplementation"(libs.firebase.config) + "fullImplementation"(libs.firebase.perf) implementation(libs.timber) } diff --git a/app/src/foss/java/com/zionhuang/music/utils/Utils.kt b/app/src/foss/java/com/zionhuang/music/utils/Utils.kt new file mode 100644 index 000000000..ec31f5774 --- /dev/null +++ b/app/src/foss/java/com/zionhuang/music/utils/Utils.kt @@ -0,0 +1,5 @@ +package com.zionhuang.music.utils + +import com.zionhuang.music.MainActivity + +fun MainActivity.setupRemoteConfig() {} \ No newline at end of file diff --git a/app/src/full/java/com/zionhuang/music/utils/Utils.kt b/app/src/full/java/com/zionhuang/music/utils/Utils.kt new file mode 100644 index 000000000..5da4df6ee --- /dev/null +++ b/app/src/full/java/com/zionhuang/music/utils/Utils.kt @@ -0,0 +1,31 @@ +package com.zionhuang.music.utils + +import com.google.firebase.ktx.Firebase +import com.google.firebase.remoteconfig.ConfigUpdate +import com.google.firebase.remoteconfig.ConfigUpdateListener +import com.google.firebase.remoteconfig.FirebaseRemoteConfigException +import com.google.firebase.remoteconfig.ktx.remoteConfig +import com.google.firebase.remoteconfig.ktx.remoteConfigSettings +import com.zionhuang.music.MainActivity +import kotlin.time.Duration.Companion.hours + +fun MainActivity.setupRemoteConfig() { + val remoteConfig = Firebase.remoteConfig + remoteConfig.setConfigSettingsAsync(remoteConfigSettings { + minimumFetchIntervalInSeconds = 12.hours.inWholeSeconds + }) + remoteConfig.fetchAndActivate() + .addOnCompleteListener(this) { task -> + if (task.isSuccessful) { + latestVersion = remoteConfig.getLong("latest_version") + } + } + remoteConfig.addOnConfigUpdateListener(object : ConfigUpdateListener { + override fun onError(error: FirebaseRemoteConfigException) {} + override fun onUpdate(configUpdate: ConfigUpdate) { + remoteConfig.activate().addOnCompleteListener { + latestVersion = remoteConfig.getLong("latest_version") + } + } + }) +} \ No newline at end of file diff --git a/app/src/main/java/com/zionhuang/music/MainActivity.kt b/app/src/main/java/com/zionhuang/music/MainActivity.kt index 26fefd7ee..9c604a894 100644 --- a/app/src/main/java/com/zionhuang/music/MainActivity.kt +++ b/app/src/main/java/com/zionhuang/music/MainActivity.kt @@ -64,12 +64,6 @@ import androidx.navigation.navArgument import coil.imageLoader import coil.request.ImageRequest import com.google.common.util.concurrent.MoreExecutors -import com.google.firebase.ktx.Firebase -import com.google.firebase.remoteconfig.ConfigUpdate -import com.google.firebase.remoteconfig.ConfigUpdateListener -import com.google.firebase.remoteconfig.FirebaseRemoteConfigException -import com.google.firebase.remoteconfig.ktx.remoteConfig -import com.google.firebase.remoteconfig.ktx.remoteConfigSettings import com.valentinilk.shimmer.LocalShimmerTheme import com.zionhuang.innertube.YouTube import com.zionhuang.innertube.models.SongItem @@ -107,6 +101,7 @@ import com.zionhuang.music.utils.dataStore import com.zionhuang.music.utils.get import com.zionhuang.music.utils.rememberEnumPreference import com.zionhuang.music.utils.rememberPreference +import com.zionhuang.music.utils.setupRemoteConfig import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.collectLatest @@ -115,7 +110,6 @@ import kotlinx.coroutines.withContext import java.net.URLDecoder import java.net.URLEncoder import javax.inject.Inject -import kotlin.time.Duration.Companion.hours @AndroidEntryPoint class MainActivity : ComponentActivity() { @@ -139,7 +133,7 @@ class MainActivity : ComponentActivity() { playerConnection = null } } - private var latestVersion by mutableStateOf(BuildConfig.VERSION_CODE.toLong()) + var latestVersion by mutableStateOf(BuildConfig.VERSION_CODE.toLong()) override fun onStart() { super.onStart() @@ -835,27 +829,6 @@ class MainActivity : ComponentActivity() { } } - private fun setupRemoteConfig() { - val remoteConfig = Firebase.remoteConfig - remoteConfig.setConfigSettingsAsync(remoteConfigSettings { - minimumFetchIntervalInSeconds = 12.hours.inWholeSeconds - }) - remoteConfig.fetchAndActivate() - .addOnCompleteListener(this) { task -> - if (task.isSuccessful) { - latestVersion = remoteConfig.getLong("latest_version") - } - } - remoteConfig.addOnConfigUpdateListener(object : ConfigUpdateListener { - override fun onError(error: FirebaseRemoteConfigException) {} - override fun onUpdate(configUpdate: ConfigUpdate) { - remoteConfig.activate().addOnCompleteListener { - latestVersion = remoteConfig.getLong("latest_version") - } - } - }) - } - companion object { const val ACTION_SEARCH = "com.zionhuang.music.action.SEARCH" const val ACTION_SONGS = "com.zionhuang.music.action.SONGS"