Skip to content

Commit

Permalink
Configure ComposeStabilityPath for Kotlin compiler and mark unstable …
Browse files Browse the repository at this point in the history
…parameters to stable (#996)

* Implement configureComposeStabilityPath for koltin compiler option

* Add compose_compiler_config.conf and marks unstable parameters to stable
  • Loading branch information
skydoves authored Jan 25, 2024
1 parent b0cdd26 commit 2eae1a4
Show file tree
Hide file tree
Showing 6 changed files with 37 additions and 8 deletions.
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package io.getstream.video

import com.android.build.api.dsl.CommonExtension
import java.io.File
import org.gradle.api.Project
import org.gradle.api.artifacts.VersionCatalogsExtension
import org.gradle.kotlin.dsl.dependencies
import org.gradle.kotlin.dsl.getByType
import java.io.File

/**
* Configure Compose-specific options
Expand All @@ -26,7 +26,7 @@ internal fun Project.configureAndroidCompose(
}

kotlinOptions {
freeCompilerArgs = freeCompilerArgs + buildComposeMetricsParameters()
freeCompilerArgs += buildComposeMetricsParameters() + configureComposeStabilityPath()
}
}

Expand All @@ -40,9 +40,11 @@ internal fun Project.configureAndroidCompose(
private fun Project.buildComposeMetricsParameters(): List<String> {
val metricParameters = mutableListOf<String>()
val enableMetricsProvider = project.providers.gradleProperty("enableComposeCompilerMetrics")
val relativePath = projectDir.relativeTo(rootDir)
val buildDir = layout.buildDirectory.get().asFile
val enableMetrics = (enableMetricsProvider.orNull == "true")
if (enableMetrics) {
val metricsFolder = File(project.buildDir, "compose-metrics")
val metricsFolder = buildDir.resolve("compose-metrics").resolve(relativePath)
metricParameters.add("-P")
metricParameters.add(
"plugin:androidx.compose.compiler.plugins.kotlin:metricsDestination=" + metricsFolder.absolutePath
Expand All @@ -52,11 +54,21 @@ private fun Project.buildComposeMetricsParameters(): List<String> {
val enableReportsProvider = project.providers.gradleProperty("enableComposeCompilerReports")
val enableReports = (enableReportsProvider.orNull == "true")
if (enableReports) {
val reportsFolder = File(project.buildDir, "compose-reports")
val reportsFolder = buildDir.resolve("compose-reports").resolve(relativePath)
metricParameters.add("-P")
metricParameters.add(
"plugin:androidx.compose.compiler.plugins.kotlin:reportsDestination=" + reportsFolder.absolutePath
)
}
return metricParameters.toList()
}

private fun Project.configureComposeStabilityPath(): List<String> {
val metricParameters = mutableListOf<String>()
val stabilityConfigurationFile = rootDir.resolve("compose_compiler_config.conf")
metricParameters.add("-P")
metricParameters.add(
"plugin:androidx.compose.compiler.plugins.kotlin:stabilityConfigurationPath=" + stabilityConfigurationFile.absolutePath
)
return metricParameters.toList()
}
3 changes: 3 additions & 0 deletions compose_compiler_config.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
kotlin.collections.List
org.threeten.bp.OffsetDateTime
org.threeten.bp.LocalDateTime
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,9 @@ import android.os.Bundle
import android.util.Log
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import com.google.firebase.analytics.FirebaseAnalytics
import dagger.hilt.android.AndroidEntryPoint
import io.getstream.video.android.analytics.FirebaseEvents
Expand All @@ -37,7 +39,8 @@ import javax.inject.Inject

@AndroidEntryPoint
class MainActivity : ComponentActivity() {
@Inject lateinit var dataStore: StreamUserDataStore
@Inject
lateinit var dataStore: StreamUserDataStore
private val firebaseAnalytics by lazy { FirebaseAnalytics.getInstance(this) }

override fun onCreate(savedInstanceState: Bundle?) {
Expand All @@ -55,8 +58,10 @@ class MainActivity : ComponentActivity() {
}
}

lifecycleScope.launchWhenCreated {
InAppUpdateHelper(this@MainActivity).checkForAppUpdates()
lifecycleScope.launch {
repeatOnLifecycle(Lifecycle.State.CREATED) {
InAppUpdateHelper(this@MainActivity).checkForAppUpdates()
}
}

lifecycleScope.launch {
Expand Down
6 changes: 5 additions & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -37,4 +37,8 @@ android.defaults.buildfeatures.shaders=false
android.nonTransitiveRClass=true

# Disabled R8 full mode
android.suppressUnsupportedCompileSdk=34
android.suppressUnsupportedCompileSdk=34

# Build Compose Compiler metrics
enableComposeCompilerMetrics=true
enableComposeCompilerReports=true
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,10 @@

package io.getstream.video.android.core

import androidx.compose.runtime.Immutable
import io.getstream.video.android.model.User

@Immutable
public data class MemberState(
val user: User,
val custom: Map<String, Any?>,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@

package io.getstream.video.android.core.call.stats.model

import androidx.compose.runtime.Immutable

@Immutable
data class RtcIceCandidateStats(
override val id: String?,
override val type: String?,
Expand Down

0 comments on commit 2eae1a4

Please sign in to comment.