# HG changeset patch # User Da Risk # Date 1745429909 14400 # Node ID 246422783c0ceed482eb260f4d65a66b0e4c091b # Parent c40e90a1b0fa8ca214f01ba9f4df6f424cbac8aa sample: extract base of sample to common. start implementing desktop diff -r c40e90a1b0fa -r 246422783c0c gradle/libs.versions.toml --- a/gradle/libs.versions.toml Wed Apr 23 13:29:39 2025 -0400 +++ b/gradle/libs.versions.toml Wed Apr 23 13:38:29 2025 -0400 @@ -46,11 +46,13 @@ appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" } okio = { module = "com.squareup.okio:okio", version.ref = "okio"} kotlinx-coroutines = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "kotlinx-coroutines"} +kotlinx-coroutines-swing = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-swing", version.ref = "kotlinx-coroutines"} geekdroid = { module = "com.geekorum.geekdroid:geekdroid", version.ref = "geekdroid" } androidx-lifecycle-viewmodel = { module = "androidx.lifecycle:lifecycle-viewmodel-ktx", version.ref="androidx-lifecycle" } androidx-lifecycle-viewmodel-compose = { module = "androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "androidx-lifecycle" } org-jetbrains-androidx-lifecycle-viewmodel = { module = "org.jetbrains.androidx.lifecycle:lifecycle-viewmodel", version.ref = "org-jetbrains-androidx-lifecycle" } +org-jetbrains-androidx-lifecycle-viewmodel-compose = { module = "org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "org-jetbrains-androidx-lifecycle" } androidx-activity = { module = "androidx.activity:activity-ktx", version.ref="androidx-activity" } androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref="androidx-activity" } diff -r c40e90a1b0fa -r 246422783c0c sample/build.gradle.kts --- a/sample/build.gradle.kts Wed Apr 23 13:29:39 2025 -0400 +++ b/sample/build.gradle.kts Wed Apr 23 13:38:29 2025 -0400 @@ -45,7 +45,11 @@ } } - jvm("desktop") + jvm("desktop") { + mainRun { + mainClass = "com.geekorum.aboutoss.sampleapp.MainKt" + } + } listOf( iosX64(), @@ -67,6 +71,7 @@ implementation(compose.material3) implementation(compose.components.resources) implementation(compose.components.uiToolingPreview) + implementation(libs.org.jetbrains.androidx.lifecycle.viewmodel.compose) } androidMain.dependencies { @@ -74,12 +79,17 @@ implementation(dependencies.enforcedPlatform(libs.androidx.compose.bom)) implementation(libs.androidx.activity.compose) implementation(libs.geekdroid) - implementation(libs.androidx.lifecycle.viewmodel.compose) + } + + val desktopMain by getting { + dependencies { + implementation(compose.desktop.currentOs) + implementation(libs.kotlinx.coroutines.swing) + } } } } - android { namespace = "com.geekorum.aboutoss.sampleapp" compileSdk = 35 diff -r c40e90a1b0fa -r 246422783c0c sample/src/androidMain/kotlin/com/geekorum/aboutoss/sampleapp/CustomViewer.kt --- a/sample/src/androidMain/kotlin/com/geekorum/aboutoss/sampleapp/CustomViewer.kt Wed Apr 23 13:29:39 2025 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,113 +0,0 @@ -/* - * AboutOss is an utility library to retrieve and display - * opensource licenses in Android applications. - * - * Copyright (C) 2023-2025 by Frederic-Charles Barthelery. - * - * This file is part of AboutOss. - * - * AboutOss is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * AboutOss is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with AboutOss. If not, see . - */ -package com.geekorum.aboutoss.sampleapp - -import androidx.compose.foundation.layout.* -import androidx.compose.foundation.lazy.grid.GridCells -import androidx.compose.foundation.lazy.grid.LazyVerticalGrid -import androidx.compose.foundation.lazy.grid.itemsIndexed -import androidx.compose.material3.* -import androidx.compose.runtime.* -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.unit.dp -import androidx.lifecycle.viewmodel.compose.viewModel -import com.geekorum.aboutoss.ui.common.OpenSourceLicensesViewModel - -@Composable -fun CustomViewer( - viewModel: OpenSourceLicensesViewModel = viewModel( - initializer = { - createPrebuildOpenSourceLicensesViewModel() - } - ), - modifier: Modifier = Modifier -) { - Column(modifier = modifier) { - Text("This section shows our you can use a custom ui to display licenses") - DependenciesGrid(viewModel, Modifier.padding(top = 16.dp)) - } -} - -@Composable -private fun DependenciesGrid( - viewModel: OpenSourceLicensesViewModel, - modifier: Modifier = Modifier -) { - val dependencies by viewModel.dependenciesList.collectAsState(initial = emptyList()) - var selected by remember { mutableStateOf(-1) } - LazyVerticalGrid( - GridCells.Adaptive(150.dp), - horizontalArrangement = Arrangement.spacedBy(16.dp), - verticalArrangement = Arrangement.spacedBy(16.dp), - modifier = modifier - ) { - itemsIndexed(dependencies) { idx, dependency -> - if (idx == selected) { - val license by viewModel.getLicenseDependency(dependency) - .collectAsState(initial = "") - LicenseCard(license, onClick = { - selected = -1 - }) - } else { - DependencyCard(dependency, onClick = { - selected = idx - }) - } - } - } -} - -@OptIn(ExperimentalMaterial3Api::class) -@Composable -private fun LicenseCard(license: String, onClick: () -> Unit) { - Card(modifier = Modifier.size(150.dp), onClick = onClick, - colors = CardDefaults.cardColors(containerColor = MaterialTheme.colorScheme.primary) - ) { - Text( - license, style = MaterialTheme.typography.bodyMedium, - modifier = Modifier - .padding(16.dp) - .fillMaxSize() - .wrapContentSize( - Alignment.Center - ) - ) - } -} - -@OptIn(ExperimentalMaterial3Api::class) -@Composable -private fun DependencyCard(dependency: String, onClick: () -> Unit) { - Card(modifier = Modifier.size(150.dp), onClick = onClick) { - Text( - dependency, - style = MaterialTheme.typography.titleLarge, - modifier = Modifier - .padding(16.dp) - .fillMaxSize() - .wrapContentSize( - Alignment.Center - ) - ) - } -} diff -r c40e90a1b0fa -r 246422783c0c sample/src/androidMain/kotlin/com/geekorum/aboutoss/sampleapp/MainActivity.kt --- a/sample/src/androidMain/kotlin/com/geekorum/aboutoss/sampleapp/MainActivity.kt Wed Apr 23 13:29:39 2025 -0400 +++ b/sample/src/androidMain/kotlin/com/geekorum/aboutoss/sampleapp/MainActivity.kt Wed Apr 23 13:38:29 2025 -0400 @@ -25,15 +25,9 @@ import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent -import androidx.compose.foundation.layout.* -import androidx.compose.material3.* -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import androidx.compose.ui.unit.dp import com.geekorum.aboutoss.sampleapp.ui.theme.AboutOssTheme import com.geekorum.aboutoss.sampleapp.ui.theme.OpenSourceLicenseTheme import com.geekorum.aboutoss.ui.material3.OpenSourceLicensesActivity -import org.jetbrains.compose.ui.tooling.preview.Preview import com.geekorum.aboutoss.ui.material.OpenSourceLicensesActivity as Material2OpenSourceLicensesActivity class MainActivity : ComponentActivity() { @@ -41,7 +35,7 @@ super.onCreate(savedInstanceState) setContent { AboutOssTheme { - Sample( + SampleApp( onMaterial2Click = { startMaterial2LicenseActivity() }, @@ -79,76 +73,3 @@ startActivity(intent) } } - -@Composable -private fun Sample( - onMaterial2Click: () -> Unit, - onMaterial3Click: () -> Unit, -) { - Surface( - modifier = Modifier.fillMaxSize(), - color = MaterialTheme.colorScheme.background - ) { - Column(Modifier.fillMaxSize()) { - LaunchActivitySection(onMaterial2Click, onMaterial3Click) - CustomViewer(modifier = Modifier.padding(horizontal = 16.dp)) - } - } -} - -@Composable -private fun LaunchActivitySection( - onMaterial2Click: () -> Unit, - onMaterial3Click: () -> Unit, - modifier: Modifier = Modifier -) { - Column(modifier.padding(16.dp)) { - Text("This section launch a new activity to display licences information") - Row( - horizontalArrangement = Arrangement.SpaceAround, modifier = Modifier - .fillMaxWidth() - .padding(32.dp) - ) { - Material2Card(onClick = onMaterial2Click) - Material3Card(onClick = onMaterial3Click) - } - } -} - - -@Composable -@OptIn(ExperimentalMaterial3Api::class) -private fun Material2Card( - onClick: () -> Unit, - modifier: Modifier = Modifier -) { - Card(modifier = modifier, onClick = onClick) { - Column(Modifier.padding(16.dp)) { - Text("Material2 UI", style = MaterialTheme.typography.labelLarge) - } - } -} - -@Composable -@OptIn(ExperimentalMaterial3Api::class) -private fun Material3Card( - onClick: () -> Unit, - modifier: Modifier = Modifier -) { - Card(modifier = modifier, onClick = onClick) { - Column(Modifier.padding(16.dp)) { - Text("Material3 UI", style = MaterialTheme.typography.labelLarge) - } - } -} - - -@Preview -@Composable -fun LauncherActivitySectionPreview() { - AboutOssTheme { - Surface { - LaunchActivitySection(onMaterial2Click = {}, onMaterial3Click = {}) - } - } -} \ No newline at end of file diff -r c40e90a1b0fa -r 246422783c0c sample/src/androidMain/kotlin/com/geekorum/aboutoss/sampleapp/PrebuiltLicencesActivities.kt --- a/sample/src/androidMain/kotlin/com/geekorum/aboutoss/sampleapp/PrebuiltLicencesActivities.kt Wed Apr 23 13:29:39 2025 -0400 +++ b/sample/src/androidMain/kotlin/com/geekorum/aboutoss/sampleapp/PrebuiltLicencesActivities.kt Wed Apr 23 13:38:29 2025 -0400 @@ -32,6 +32,7 @@ import com.geekorum.aboutoss.ui.material3.OpenSourceLicensesActivity import com.geekorum.geekdroid.network.BrowserLauncher import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.IO import com.geekorum.aboutoss.ui.material.OpenSourceLicensesActivity as Material2OpenSourceLicensesActivity /** @@ -71,7 +72,7 @@ ) } -fun CreationExtras.createPrebuildOpenSourceLicensesViewModel(): OpenSourceLicensesViewModel { +actual fun CreationExtras.createPrebuildOpenSourceLicensesViewModel(): OpenSourceLicensesViewModel { val application = this[ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY]!! val licenseInfoRepository = GmsLicenseInfoRepository( diff -r c40e90a1b0fa -r 246422783c0c sample/src/androidMain/kotlin/com/geekorum/aboutoss/sampleapp/ui/theme/Color.kt --- a/sample/src/androidMain/kotlin/com/geekorum/aboutoss/sampleapp/ui/theme/Color.kt Wed Apr 23 13:29:39 2025 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,32 +0,0 @@ -/* - * AboutOss is an utility library to retrieve and display - * opensource licenses in Android applications. - * - * Copyright (C) 2023-2025 by Frederic-Charles Barthelery. - * - * This file is part of AboutOss. - * - * AboutOss is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * AboutOss is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with AboutOss. If not, see . - */ -package com.geekorum.aboutoss.sampleapp.ui.theme - -import androidx.compose.ui.graphics.Color - -val Purple80 = Color(0xFFD0BCFF) -val PurpleGrey80 = Color(0xFFCCC2DC) -val Pink80 = Color(0xFFEFB8C8) - -val Purple40 = Color(0xFF6650a4) -val PurpleGrey40 = Color(0xFF625b71) -val Pink40 = Color(0xFF7D5260) \ No newline at end of file diff -r c40e90a1b0fa -r 246422783c0c sample/src/androidMain/kotlin/com/geekorum/aboutoss/sampleapp/ui/theme/Theme.android.kt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sample/src/androidMain/kotlin/com/geekorum/aboutoss/sampleapp/ui/theme/Theme.android.kt Wed Apr 23 13:38:29 2025 -0400 @@ -0,0 +1,68 @@ +/* + * AboutOss is an utility library to retrieve and display + * opensource licenses in Android applications. + * + * Copyright (C) 2023-2025 by Frederic-Charles Barthelery. + * + * This file is part of AboutOss. + * + * AboutOss is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * AboutOss is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with AboutOss. If not, see . + */ +package com.geekorum.aboutoss.sampleapp.ui.theme + +import android.app.Activity +import android.os.Build +import androidx.compose.foundation.isSystemInDarkTheme +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.dynamicDarkColorScheme +import androidx.compose.material3.dynamicLightColorScheme +import androidx.compose.runtime.Composable +import androidx.compose.runtime.SideEffect +import androidx.compose.ui.graphics.toArgb +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.platform.LocalView +import androidx.core.view.WindowCompat + + +@Composable +fun AboutOssTheme( + darkTheme: Boolean = isSystemInDarkTheme(), + // Dynamic color is available on Android 12+ + dynamicColor: Boolean = true, + content: @Composable () -> Unit +) { + val colorScheme = when { + dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> { + val context = LocalContext.current + if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context) + } + + darkTheme -> DarkColorScheme + else -> LightColorScheme + } + val view = LocalView.current + if (!view.isInEditMode) { + SideEffect { + val window = (view.context as Activity).window + window.statusBarColor = colorScheme.primary.toArgb() + WindowCompat.getInsetsController(window, view).isAppearanceLightStatusBars = darkTheme + } + } + + MaterialTheme( + colorScheme = colorScheme, + typography = Typography, + content = content + ) +} \ No newline at end of file diff -r c40e90a1b0fa -r 246422783c0c sample/src/androidMain/kotlin/com/geekorum/aboutoss/sampleapp/ui/theme/Theme.kt --- a/sample/src/androidMain/kotlin/com/geekorum/aboutoss/sampleapp/ui/theme/Theme.kt Wed Apr 23 13:29:39 2025 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,108 +0,0 @@ -/* - * AboutOss is an utility library to retrieve and display - * opensource licenses in Android applications. - * - * Copyright (C) 2023-2025 by Frederic-Charles Barthelery. - * - * This file is part of AboutOss. - * - * AboutOss is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * AboutOss is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with AboutOss. If not, see . - */ -package com.geekorum.aboutoss.sampleapp.ui.theme - -import android.app.Activity -import android.os.Build -import androidx.compose.foundation.isSystemInDarkTheme -import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.darkColorScheme -import androidx.compose.material3.dynamicDarkColorScheme -import androidx.compose.material3.dynamicLightColorScheme -import androidx.compose.material3.lightColorScheme -import androidx.compose.runtime.Composable -import androidx.compose.runtime.SideEffect -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.toArgb -import androidx.compose.ui.platform.LocalContext -import androidx.compose.ui.platform.LocalView -import androidx.core.view.WindowCompat - -private val DarkColorScheme = darkColorScheme( - primary = Purple80, - secondary = PurpleGrey80, - tertiary = Pink80 -) - -private val LightColorScheme = lightColorScheme( - primary = Purple40, - secondary = PurpleGrey40, - tertiary = Pink40 - - /* Other default colors to override - background = Color(0xFFFFFBFE), - surface = Color(0xFFFFFBFE), - onPrimary = Color.White, - onSecondary = Color.White, - onTertiary = Color.White, - onBackground = Color(0xFF1C1B1F), - onSurface = Color(0xFF1C1B1F), - */ -) - -@Composable -fun AboutOssTheme( - darkTheme: Boolean = isSystemInDarkTheme(), - // Dynamic color is available on Android 12+ - dynamicColor: Boolean = true, - content: @Composable () -> Unit -) { - val colorScheme = when { - dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> { - val context = LocalContext.current - if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context) - } - - darkTheme -> DarkColorScheme - else -> LightColorScheme - } - val view = LocalView.current - if (!view.isInEditMode) { - SideEffect { - val window = (view.context as Activity).window - window.statusBarColor = colorScheme.primary.toArgb() - WindowCompat.getInsetsController(window, view).isAppearanceLightStatusBars = darkTheme - } - } - - MaterialTheme( - colorScheme = colorScheme, - typography = Typography, - content = content - ) -} - -private val OpenSourcesLightColorScheme = lightColorScheme( - primary = Color.Cyan, - secondary = PurpleGrey40, - tertiary = Pink40 -) - -@Composable -fun OpenSourceLicenseTheme( - content: @Composable () -> Unit -) { - MaterialTheme( - colorScheme = OpenSourcesLightColorScheme, - content = content - ) -} diff -r c40e90a1b0fa -r 246422783c0c sample/src/androidMain/kotlin/com/geekorum/aboutoss/sampleapp/ui/theme/Type.kt --- a/sample/src/androidMain/kotlin/com/geekorum/aboutoss/sampleapp/ui/theme/Type.kt Wed Apr 23 13:29:39 2025 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,55 +0,0 @@ -/* - * AboutOss is an utility library to retrieve and display - * opensource licenses in Android applications. - * - * Copyright (C) 2023-2025 by Frederic-Charles Barthelery. - * - * This file is part of AboutOss. - * - * AboutOss is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * AboutOss is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with AboutOss. If not, see . - */ -package com.geekorum.aboutoss.sampleapp.ui.theme - -import androidx.compose.material3.Typography -import androidx.compose.ui.text.TextStyle -import androidx.compose.ui.text.font.FontFamily -import androidx.compose.ui.text.font.FontWeight -import androidx.compose.ui.unit.sp - -// Set of Material typography styles to start with -val Typography = Typography( - bodyLarge = TextStyle( - fontFamily = FontFamily.Default, - fontWeight = FontWeight.Normal, - fontSize = 16.sp, - lineHeight = 24.sp, - letterSpacing = 0.5.sp - ) - /* Other default text styles to override - titleLarge = TextStyle( - fontFamily = FontFamily.Default, - fontWeight = FontWeight.Normal, - fontSize = 22.sp, - lineHeight = 28.sp, - letterSpacing = 0.sp - ), - labelSmall = TextStyle( - fontFamily = FontFamily.Default, - fontWeight = FontWeight.Medium, - fontSize = 11.sp, - lineHeight = 16.sp, - letterSpacing = 0.5.sp - ) - */ -) \ No newline at end of file diff -r c40e90a1b0fa -r 246422783c0c sample/src/appleMain/kotlin/PrebuiltLicensesViewModel.apple.kt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sample/src/appleMain/kotlin/PrebuiltLicensesViewModel.apple.kt Wed Apr 23 13:38:29 2025 -0400 @@ -0,0 +1,5 @@ +package com.geekorum.aboutoss.sampleapp + +actual fun androidx.lifecycle.viewmodel.CreationExtras.createPrebuildOpenSourceLicensesViewModel(): com.geekorum.aboutoss.ui.common.OpenSourceLicensesViewModel { + TODO("Not yet implemented") +} \ No newline at end of file diff -r c40e90a1b0fa -r 246422783c0c sample/src/commonMain/kotlin/CustomViewer.kt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sample/src/commonMain/kotlin/CustomViewer.kt Wed Apr 23 13:38:29 2025 -0400 @@ -0,0 +1,113 @@ +/* + * AboutOss is an utility library to retrieve and display + * opensource licenses in Android applications. + * + * Copyright (C) 2023-2025 by Frederic-Charles Barthelery. + * + * This file is part of AboutOss. + * + * AboutOss is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * AboutOss is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with AboutOss. If not, see . + */ +package com.geekorum.aboutoss.sampleapp + +import androidx.compose.foundation.layout.* +import androidx.compose.foundation.lazy.grid.GridCells +import androidx.compose.foundation.lazy.grid.LazyVerticalGrid +import androidx.compose.foundation.lazy.grid.itemsIndexed +import androidx.compose.material3.* +import androidx.compose.runtime.* +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import androidx.lifecycle.viewmodel.compose.viewModel +import com.geekorum.aboutoss.ui.common.OpenSourceLicensesViewModel + +@Composable +fun CustomViewer( + viewModel: OpenSourceLicensesViewModel = viewModel( + initializer = { + createPrebuildOpenSourceLicensesViewModel() + } + ), + modifier: Modifier = Modifier +) { + Column(modifier = modifier) { + Text("This section shows our you can use a custom ui to display licenses") + DependenciesGrid(viewModel, Modifier.padding(top = 16.dp)) + } +} + +@Composable +private fun DependenciesGrid( + viewModel: OpenSourceLicensesViewModel, + modifier: Modifier = Modifier +) { + val dependencies by viewModel.dependenciesList.collectAsState(initial = emptyList()) + var selected by remember { mutableStateOf(-1) } + LazyVerticalGrid( + GridCells.Adaptive(150.dp), + horizontalArrangement = Arrangement.spacedBy(16.dp), + verticalArrangement = Arrangement.spacedBy(16.dp), + modifier = modifier + ) { + itemsIndexed(dependencies) { idx, dependency -> + if (idx == selected) { + val license by viewModel.getLicenseDependency(dependency) + .collectAsState(initial = "") + LicenseCard(license, onClick = { + selected = -1 + }) + } else { + DependencyCard(dependency, onClick = { + selected = idx + }) + } + } + } +} + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +private fun LicenseCard(license: String, onClick: () -> Unit) { + Card(modifier = Modifier.size(150.dp), onClick = onClick, + colors = CardDefaults.cardColors(containerColor = MaterialTheme.colorScheme.primary) + ) { + Text( + license, style = MaterialTheme.typography.bodyMedium, + modifier = Modifier + .padding(16.dp) + .fillMaxSize() + .wrapContentSize( + Alignment.Center + ) + ) + } +} + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +private fun DependencyCard(dependency: String, onClick: () -> Unit) { + Card(modifier = Modifier.size(150.dp), onClick = onClick) { + Text( + dependency, + style = MaterialTheme.typography.titleLarge, + modifier = Modifier + .padding(16.dp) + .fillMaxSize() + .wrapContentSize( + Alignment.Center + ) + ) + } +} diff -r c40e90a1b0fa -r 246422783c0c sample/src/commonMain/kotlin/PrebuiltLicensesViewModel.kt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sample/src/commonMain/kotlin/PrebuiltLicensesViewModel.kt Wed Apr 23 13:38:29 2025 -0400 @@ -0,0 +1,27 @@ +/* + * AboutOss is an utility library to retrieve and display + * opensource licenses in Android applications. + * + * Copyright (C) 2023-2025 by Frederic-Charles Barthelery. + * + * This file is part of AboutOss. + * + * AboutOss is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * AboutOss is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with AboutOss. If not, see . + */ +package com.geekorum.aboutoss.sampleapp + +import androidx.lifecycle.viewmodel.CreationExtras +import com.geekorum.aboutoss.ui.common.OpenSourceLicensesViewModel + +expect fun CreationExtras.createPrebuildOpenSourceLicensesViewModel(): OpenSourceLicensesViewModel \ No newline at end of file diff -r c40e90a1b0fa -r 246422783c0c sample/src/commonMain/kotlin/SampleApp.kt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sample/src/commonMain/kotlin/SampleApp.kt Wed Apr 23 13:38:29 2025 -0400 @@ -0,0 +1,112 @@ +/* + * AboutOss is an utility library to retrieve and display + * opensource licenses in Android applications. + * + * Copyright (C) 2023-2025 by Frederic-Charles Barthelery. + * + * This file is part of AboutOss. + * + * AboutOss is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * AboutOss is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with AboutOss. If not, see . + */ +package com.geekorum.aboutoss.sampleapp + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.Card +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import com.geekorum.aboutoss.sampleapp.ui.theme.AboutOssTheme +import org.jetbrains.compose.ui.tooling.preview.Preview + +@Composable +fun SampleApp( + onMaterial2Click: () -> Unit, + onMaterial3Click: () -> Unit, +) { + Surface( + modifier = Modifier.fillMaxSize(), + color = MaterialTheme.colorScheme.background + ) { + Column(Modifier.fillMaxSize()) { + LaunchActivitySection(onMaterial2Click, onMaterial3Click) + CustomViewer(modifier = Modifier.padding(horizontal = 16.dp)) + } + } +} + +@Composable +private fun LaunchActivitySection( + onMaterial2Click: () -> Unit, + onMaterial3Click: () -> Unit, + modifier: Modifier = Modifier +) { + Column(modifier.padding(16.dp)) { + Text(text = "This section launch a new activity to display licences information") + Row( + horizontalArrangement = Arrangement.SpaceAround, modifier = Modifier + .fillMaxWidth() + .padding(32.dp) + ) { + Material2Card(onClick = onMaterial2Click) + Material3Card(onClick = onMaterial3Click) + } + } +} + + +@Composable +@OptIn(ExperimentalMaterial3Api::class) +private fun Material2Card( + onClick: () -> Unit, + modifier: Modifier = Modifier +) { + Card(modifier = modifier, onClick = onClick) { + Column(Modifier.padding(16.dp)) { + Text("Material2 UI", style = MaterialTheme.typography.labelLarge) + } + } +} + +@Composable +@OptIn(ExperimentalMaterial3Api::class) +private fun Material3Card( + onClick: () -> Unit, + modifier: Modifier = Modifier +) { + Card(modifier = modifier, onClick = onClick) { + Column(Modifier.padding(16.dp)) { + Text("Material3 UI", style = MaterialTheme.typography.labelLarge) + } + } +} + + +@Preview +@Composable +fun LauncherActivitySectionPreview() { + AboutOssTheme { + Surface { + LaunchActivitySection(onMaterial2Click = {}, onMaterial3Click = {}) + } + } +} \ No newline at end of file diff -r c40e90a1b0fa -r 246422783c0c sample/src/commonMain/kotlin/ui/theme/Color.kt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sample/src/commonMain/kotlin/ui/theme/Color.kt Wed Apr 23 13:38:29 2025 -0400 @@ -0,0 +1,32 @@ +/* + * AboutOss is an utility library to retrieve and display + * opensource licenses in Android applications. + * + * Copyright (C) 2023-2025 by Frederic-Charles Barthelery. + * + * This file is part of AboutOss. + * + * AboutOss is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * AboutOss is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with AboutOss. If not, see . + */ +package com.geekorum.aboutoss.sampleapp.ui.theme + +import androidx.compose.ui.graphics.Color + +val Purple80 = Color(0xFFD0BCFF) +val PurpleGrey80 = Color(0xFFCCC2DC) +val Pink80 = Color(0xFFEFB8C8) + +val Purple40 = Color(0xFF6650a4) +val PurpleGrey40 = Color(0xFF625b71) +val Pink40 = Color(0xFF7D5260) \ No newline at end of file diff -r c40e90a1b0fa -r 246422783c0c sample/src/commonMain/kotlin/ui/theme/Theme.kt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sample/src/commonMain/kotlin/ui/theme/Theme.kt Wed Apr 23 13:38:29 2025 -0400 @@ -0,0 +1,84 @@ +/* + * AboutOss is an utility library to retrieve and display + * opensource licenses in Android applications. + * + * Copyright (C) 2023-2025 by Frederic-Charles Barthelery. + * + * This file is part of AboutOss. + * + * AboutOss is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * AboutOss is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with AboutOss. If not, see . + */ +package com.geekorum.aboutoss.sampleapp.ui.theme + +import androidx.compose.foundation.isSystemInDarkTheme +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.darkColorScheme +import androidx.compose.material3.lightColorScheme +import androidx.compose.runtime.Composable +import androidx.compose.ui.graphics.Color + +internal val DarkColorScheme = darkColorScheme( + primary = Purple80, + secondary = PurpleGrey80, + tertiary = Pink80 +) + +internal val LightColorScheme = lightColorScheme( + primary = Purple40, + secondary = PurpleGrey40, + tertiary = Pink40 + + /* Other default colors to override + background = Color(0xFFFFFBFE), + surface = Color(0xFFFFFBFE), + onPrimary = Color.White, + onSecondary = Color.White, + onTertiary = Color.White, + onBackground = Color(0xFF1C1B1F), + onSurface = Color(0xFF1C1B1F), + */ +) + +@Composable +fun AboutOssTheme( + darkTheme: Boolean = isSystemInDarkTheme(), + content: @Composable () -> Unit +) { + val colorScheme = when { + darkTheme -> DarkColorScheme + else -> LightColorScheme + } + + MaterialTheme( + colorScheme = colorScheme, + typography = Typography, + content = content + ) +} + +private val OpenSourcesLightColorScheme = lightColorScheme( + primary = Color.Cyan, + secondary = PurpleGrey40, + tertiary = Pink40 +) + +@Composable +fun OpenSourceLicenseTheme( + content: @Composable () -> Unit +) { + MaterialTheme( + colorScheme = OpenSourcesLightColorScheme, + content = content + ) +} diff -r c40e90a1b0fa -r 246422783c0c sample/src/commonMain/kotlin/ui/theme/Type.kt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sample/src/commonMain/kotlin/ui/theme/Type.kt Wed Apr 23 13:38:29 2025 -0400 @@ -0,0 +1,55 @@ +/* + * AboutOss is an utility library to retrieve and display + * opensource licenses in Android applications. + * + * Copyright (C) 2023-2025 by Frederic-Charles Barthelery. + * + * This file is part of AboutOss. + * + * AboutOss is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * AboutOss is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with AboutOss. If not, see . + */ +package com.geekorum.aboutoss.sampleapp.ui.theme + +import androidx.compose.material3.Typography +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.sp + +// Set of Material typography styles to start with +val Typography = Typography( + bodyLarge = TextStyle( + fontFamily = FontFamily.Default, + fontWeight = FontWeight.Normal, + fontSize = 16.sp, + lineHeight = 24.sp, + letterSpacing = 0.5.sp + ) + /* Other default text styles to override + titleLarge = TextStyle( + fontFamily = FontFamily.Default, + fontWeight = FontWeight.Normal, + fontSize = 22.sp, + lineHeight = 28.sp, + letterSpacing = 0.sp + ), + labelSmall = TextStyle( + fontFamily = FontFamily.Default, + fontWeight = FontWeight.Medium, + fontSize = 11.sp, + lineHeight = 16.sp, + letterSpacing = 0.5.sp + ) + */ +) \ No newline at end of file diff -r c40e90a1b0fa -r 246422783c0c sample/src/commonMain/resources/app/cash/licensee/prebuilt_artifacts.json --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sample/src/commonMain/resources/app/cash/licensee/prebuilt_artifacts.json Wed Apr 23 13:38:29 2025 -0400 @@ -0,0 +1,5634 @@ +[ + { + "groupId": "androidx.activity", + "artifactId": "activity", + "version": "1.10.1", + "name": "Activity", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.activity", + "artifactId": "activity-compose", + "version": "1.10.1", + "name": "Activity Compose", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.activity", + "artifactId": "activity-ktx", + "version": "1.10.1", + "name": "Activity Kotlin Extensions", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.annotation", + "artifactId": "annotation", + "version": "1.9.1", + "name": "Annotation", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.annotation", + "artifactId": "annotation-experimental", + "version": "1.4.1", + "name": "Experimental annotation", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.annotation", + "artifactId": "annotation-jvm", + "version": "1.9.1", + "name": "Annotation", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.appcompat", + "artifactId": "appcompat", + "version": "1.7.0", + "name": "AppCompat", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.appcompat", + "artifactId": "appcompat-resources", + "version": "1.7.0", + "name": "AppCompat Resources", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.arch.core", + "artifactId": "core-common", + "version": "2.2.0", + "name": "Android Arch-Common", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.arch.core", + "artifactId": "core-runtime", + "version": "2.2.0", + "name": "Android Arch-Runtime", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.autofill", + "artifactId": "autofill", + "version": "1.0.0", + "name": "AndroidX Autofill", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "http://source.android.com" + } + }, + { + "groupId": "androidx.browser", + "artifactId": "browser", + "version": "1.8.0", + "name": "Browser", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.cardview", + "artifactId": "cardview", + "version": "1.0.0", + "name": "Android Support CardView v7", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "http://source.android.com" + } + }, + { + "groupId": "androidx.collection", + "artifactId": "collection", + "version": "1.4.4", + "name": "collections", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.collection", + "artifactId": "collection-jvm", + "version": "1.4.4", + "name": "collections", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.collection", + "artifactId": "collection-ktx", + "version": "1.4.4", + "name": "Collections Kotlin Extensions", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.compose.animation", + "artifactId": "animation", + "version": "1.7.8", + "name": "Compose Animation", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.compose.animation", + "artifactId": "animation-android", + "version": "1.7.8", + "name": "Compose Animation", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.compose.animation", + "artifactId": "animation-core", + "version": "1.7.8", + "name": "Compose Animation Core", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.compose.animation", + "artifactId": "animation-core-android", + "version": "1.7.8", + "name": "Compose Animation Core", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.compose.foundation", + "artifactId": "foundation", + "version": "1.7.8", + "name": "Compose Foundation", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.compose.foundation", + "artifactId": "foundation-android", + "version": "1.7.8", + "name": "Compose Foundation", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.compose.foundation", + "artifactId": "foundation-layout", + "version": "1.7.8", + "name": "Compose Layouts", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.compose.foundation", + "artifactId": "foundation-layout-android", + "version": "1.7.8", + "name": "Compose Layouts", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.compose.material", + "artifactId": "material", + "version": "1.7.8", + "name": "Compose Material Components", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.compose.material", + "artifactId": "material-android", + "version": "1.7.8", + "name": "Compose Material Components", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.compose.material", + "artifactId": "material-icons-core", + "version": "1.7.8", + "name": "Compose Material Icons Core", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.compose.material", + "artifactId": "material-icons-core-android", + "version": "1.7.8", + "name": "Compose Material Icons Core", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.compose.material", + "artifactId": "material-icons-extended", + "version": "1.7.8", + "name": "Compose Material Icons Extended", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.compose.material", + "artifactId": "material-icons-extended-android", + "version": "1.7.8", + "name": "Compose Material Icons Extended", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.compose.material", + "artifactId": "material-ripple", + "version": "1.7.8", + "name": "Compose Material Ripple", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.compose.material", + "artifactId": "material-ripple-android", + "version": "1.7.8", + "name": "Compose Material Ripple", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.compose.material3", + "artifactId": "material3", + "version": "1.3.1", + "name": "Compose Material3 Components", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.compose.material3", + "artifactId": "material3-android", + "version": "1.3.1", + "name": "Compose Material3 Components", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.compose.material3", + "artifactId": "material3-window-size-class", + "version": "1.3.1", + "name": "Compose Material 3 Window Size Class", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.compose.material3", + "artifactId": "material3-window-size-class-android", + "version": "1.3.1", + "name": "Compose Material 3 Window Size Class", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.compose.runtime", + "artifactId": "runtime", + "version": "1.7.8", + "name": "Compose Runtime", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.compose.runtime", + "artifactId": "runtime-android", + "version": "1.7.8", + "name": "Compose Runtime", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.compose.runtime", + "artifactId": "runtime-saveable", + "version": "1.7.8", + "name": "Compose Saveable", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.compose.runtime", + "artifactId": "runtime-saveable-android", + "version": "1.7.8", + "name": "Compose Saveable", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.compose.ui", + "artifactId": "ui", + "version": "1.7.8", + "name": "Compose UI", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.compose.ui", + "artifactId": "ui-android", + "version": "1.7.8", + "name": "Compose UI", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.compose.ui", + "artifactId": "ui-geometry", + "version": "1.7.8", + "name": "Compose Geometry", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.compose.ui", + "artifactId": "ui-geometry-android", + "version": "1.7.8", + "name": "Compose Geometry", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.compose.ui", + "artifactId": "ui-graphics", + "version": "1.7.8", + "name": "Compose Graphics", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.compose.ui", + "artifactId": "ui-graphics-android", + "version": "1.7.8", + "name": "Compose Graphics", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.compose.ui", + "artifactId": "ui-text", + "version": "1.7.8", + "name": "Compose UI Text", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.compose.ui", + "artifactId": "ui-text-android", + "version": "1.7.8", + "name": "Compose UI Text", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.compose.ui", + "artifactId": "ui-text-google-fonts", + "version": "1.7.8", + "name": "Compose Google Fonts integration", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.compose.ui", + "artifactId": "ui-tooling", + "version": "1.7.8", + "name": "Compose Tooling", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.compose.ui", + "artifactId": "ui-tooling-android", + "version": "1.7.8", + "name": "Compose Tooling", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.compose.ui", + "artifactId": "ui-tooling-data", + "version": "1.7.8", + "name": "Compose Tooling Data", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.compose.ui", + "artifactId": "ui-tooling-data-android", + "version": "1.7.8", + "name": "Compose Tooling Data", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.compose.ui", + "artifactId": "ui-tooling-preview", + "version": "1.7.8", + "name": "Compose UI Preview Tooling", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.compose.ui", + "artifactId": "ui-tooling-preview-android", + "version": "1.7.8", + "name": "Compose UI Preview Tooling", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.compose.ui", + "artifactId": "ui-unit", + "version": "1.7.8", + "name": "Compose Unit", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.compose.ui", + "artifactId": "ui-unit-android", + "version": "1.7.8", + "name": "Compose Unit", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.compose.ui", + "artifactId": "ui-util", + "version": "1.7.8", + "name": "Compose Util", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.compose.ui", + "artifactId": "ui-util-android", + "version": "1.7.8", + "name": "Compose Util", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.concurrent", + "artifactId": "concurrent-futures", + "version": "1.1.0", + "name": "AndroidX Futures", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "http://source.android.com" + } + }, + { + "groupId": "androidx.concurrent", + "artifactId": "concurrent-futures-ktx", + "version": "1.1.0", + "name": "AndroidX Futures Kotlin Extensions", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "http://source.android.com" + } + }, + { + "groupId": "androidx.constraintlayout", + "artifactId": "constraintlayout", + "version": "2.2.0", + "name": "ConstraintLayout", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.constraintlayout", + "artifactId": "constraintlayout-core", + "version": "1.1.0", + "name": "ConstraintLayout Core", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.coordinatorlayout", + "artifactId": "coordinatorlayout", + "version": "1.2.0", + "name": "Android Support Library Coordinator Layout", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.core", + "artifactId": "core", + "version": "1.15.0", + "name": "Core", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.core", + "artifactId": "core-ktx", + "version": "1.15.0", + "name": "Core Kotlin Extensions", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.core", + "artifactId": "core-viewtree", + "version": "1.0.0", + "name": "androidx.core:core-viewtree", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.cursoradapter", + "artifactId": "cursoradapter", + "version": "1.0.0", + "name": "Android Support Library Cursor Adapter", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "http://source.android.com" + } + }, + { + "groupId": "androidx.customview", + "artifactId": "customview", + "version": "1.1.0", + "name": "Android Support Library Custom View", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "http://source.android.com" + } + }, + { + "groupId": "androidx.customview", + "artifactId": "customview-poolingcontainer", + "version": "1.0.0", + "name": "androidx.customview:poolingcontainer", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.databinding", + "artifactId": "databinding-adapters", + "version": "8.9.0", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ] + }, + { + "groupId": "androidx.databinding", + "artifactId": "databinding-common", + "version": "8.9.0", + "name": "androidx.databinding.databinding-common", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ] + }, + { + "groupId": "androidx.databinding", + "artifactId": "databinding-ktx", + "version": "8.9.0", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ] + }, + { + "groupId": "androidx.databinding", + "artifactId": "databinding-runtime", + "version": "8.9.0", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ] + }, + { + "groupId": "androidx.databinding", + "artifactId": "viewbinding", + "version": "8.9.0", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ] + }, + { + "groupId": "androidx.datastore", + "artifactId": "datastore", + "version": "1.1.4", + "name": "DataStore", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.datastore", + "artifactId": "datastore-android", + "version": "1.1.4", + "name": "DataStore", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.datastore", + "artifactId": "datastore-core", + "version": "1.1.4", + "name": "DataStore Core", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.datastore", + "artifactId": "datastore-core-android", + "version": "1.1.4", + "name": "DataStore Core", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.datastore", + "artifactId": "datastore-core-okio", + "version": "1.1.4", + "name": "DataStore Core Okio", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.datastore", + "artifactId": "datastore-core-okio-jvm", + "version": "1.1.4", + "name": "DataStore Core Okio", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.datastore", + "artifactId": "datastore-preferences", + "version": "1.1.4", + "name": "Preferences DataStore", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.datastore", + "artifactId": "datastore-preferences-android", + "version": "1.1.4", + "name": "Preferences DataStore", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.datastore", + "artifactId": "datastore-preferences-core", + "version": "1.1.4", + "name": "Preferences DataStore Core", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.datastore", + "artifactId": "datastore-preferences-core-jvm", + "version": "1.1.4", + "name": "Preferences DataStore Core", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.datastore", + "artifactId": "datastore-preferences-external-protobuf", + "version": "1.1.4", + "name": "Preferences External Protobuf", + "spdxLicenses": [ + { + "identifier": "BSD-3-Clause", + "name": "BSD 3-Clause \"New\" or \"Revised\" License", + "url": "https://opensource.org/licenses/BSD-3-Clause" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.datastore", + "artifactId": "datastore-preferences-proto", + "version": "1.1.4", + "name": "Preferences DataStore Proto", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.documentfile", + "artifactId": "documentfile", + "version": "1.0.0", + "name": "Android Support Library Document File", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "http://source.android.com" + } + }, + { + "groupId": "androidx.drawerlayout", + "artifactId": "drawerlayout", + "version": "1.1.1", + "name": "Android Support Library Drawer Layout", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "http://source.android.com" + } + }, + { + "groupId": "androidx.dynamicanimation", + "artifactId": "dynamicanimation", + "version": "1.0.0", + "name": "Android Support DynamicAnimation", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "http://source.android.com" + } + }, + { + "groupId": "androidx.emoji2", + "artifactId": "emoji2", + "version": "1.3.0", + "name": "Android Emoji2 Compat", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.emoji2", + "artifactId": "emoji2-views-helper", + "version": "1.3.0", + "name": "Android Emoji2 Compat view helpers", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.exifinterface", + "artifactId": "exifinterface", + "version": "1.3.7", + "name": "Android Support ExifInterface", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.fragment", + "artifactId": "fragment", + "version": "1.8.6", + "name": "fragment", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.fragment", + "artifactId": "fragment-ktx", + "version": "1.8.6", + "name": "Fragment Kotlin Extensions", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.graphics", + "artifactId": "graphics-path", + "version": "1.0.1", + "name": "Android Graphics Path", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.hilt", + "artifactId": "hilt-navigation", + "version": "1.2.0", + "name": "Navigation Hilt Extension", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.hilt", + "artifactId": "hilt-navigation-compose", + "version": "1.2.0", + "name": "Navigation Compose Hilt Integration", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.interpolator", + "artifactId": "interpolator", + "version": "1.0.0", + "name": "Android Support Library Interpolators", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "http://source.android.com" + } + }, + { + "groupId": "androidx.legacy", + "artifactId": "legacy-support-core-utils", + "version": "1.0.0", + "name": "Android Support Library core utils", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "http://source.android.com" + } + }, + { + "groupId": "androidx.lifecycle", + "artifactId": "lifecycle-common", + "version": "2.9.0-alpha03", + "name": "Lifecycle-Common", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.lifecycle", + "artifactId": "lifecycle-common-java8", + "version": "2.9.0-alpha03", + "name": "Lifecycle-Common for Java 8", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.lifecycle", + "artifactId": "lifecycle-common-jvm", + "version": "2.9.0-alpha03", + "name": "Lifecycle-Common", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.lifecycle", + "artifactId": "lifecycle-livedata", + "version": "2.9.0-alpha03", + "name": "Lifecycle LiveData", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.lifecycle", + "artifactId": "lifecycle-livedata-core", + "version": "2.9.0-alpha03", + "name": "Lifecycle LiveData Core", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.lifecycle", + "artifactId": "lifecycle-livedata-core-ktx", + "version": "2.9.0-alpha03", + "name": "LiveData Core Kotlin Extensions", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.lifecycle", + "artifactId": "lifecycle-process", + "version": "2.9.0-alpha03", + "name": "Lifecycle Process", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.lifecycle", + "artifactId": "lifecycle-runtime", + "version": "2.9.0-alpha03", + "name": "Lifecycle Runtime", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.lifecycle", + "artifactId": "lifecycle-runtime-android", + "version": "2.9.0-alpha03", + "name": "Lifecycle Runtime", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.lifecycle", + "artifactId": "lifecycle-runtime-compose", + "version": "2.9.0-alpha03", + "name": "Lifecycle Runtime Compose", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.lifecycle", + "artifactId": "lifecycle-runtime-compose-android", + "version": "2.9.0-alpha03", + "name": "Lifecycle Runtime Compose", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.lifecycle", + "artifactId": "lifecycle-runtime-ktx", + "version": "2.9.0-alpha03", + "name": "Lifecycle Kotlin Extensions", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.lifecycle", + "artifactId": "lifecycle-runtime-ktx-android", + "version": "2.9.0-alpha03", + "name": "Lifecycle Kotlin Extensions", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.lifecycle", + "artifactId": "lifecycle-service", + "version": "2.9.0-alpha03", + "name": "Lifecycle Service", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.lifecycle", + "artifactId": "lifecycle-viewmodel", + "version": "2.9.0-alpha03", + "name": "Lifecycle ViewModel", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.lifecycle", + "artifactId": "lifecycle-viewmodel-android", + "version": "2.9.0-alpha03", + "name": "Lifecycle ViewModel", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.lifecycle", + "artifactId": "lifecycle-viewmodel-compose", + "version": "2.9.0-alpha03", + "name": "Lifecycle ViewModel Compose", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.lifecycle", + "artifactId": "lifecycle-viewmodel-compose-android", + "version": "2.9.0-alpha03", + "name": "Lifecycle ViewModel Compose", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.lifecycle", + "artifactId": "lifecycle-viewmodel-ktx", + "version": "2.9.0-alpha03", + "name": "Lifecycle ViewModel Kotlin Extensions", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.lifecycle", + "artifactId": "lifecycle-viewmodel-savedstate", + "version": "2.9.0-alpha03", + "name": "Lifecycle ViewModel with SavedState", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.loader", + "artifactId": "loader", + "version": "1.0.0", + "name": "Android Support Library loader", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "http://source.android.com" + } + }, + { + "groupId": "androidx.localbroadcastmanager", + "artifactId": "localbroadcastmanager", + "version": "1.0.0", + "name": "Android Support Library Local Broadcast Manager", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "http://source.android.com" + } + }, + { + "groupId": "androidx.media3", + "artifactId": "media3-common", + "version": "1.6.0", + "name": "Media3 common module", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/androidx/media" + } + }, + { + "groupId": "androidx.media3", + "artifactId": "media3-container", + "version": "1.6.0", + "name": "Media3 Container module", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/androidx/media" + } + }, + { + "groupId": "androidx.media3", + "artifactId": "media3-database", + "version": "1.6.0", + "name": "Media3 database module", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/androidx/media" + } + }, + { + "groupId": "androidx.media3", + "artifactId": "media3-datasource", + "version": "1.6.0", + "name": "Media3 DataSource module", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/androidx/media" + } + }, + { + "groupId": "androidx.media3", + "artifactId": "media3-datasource-okhttp", + "version": "1.6.0", + "name": "Media3 OkHttp DataSource module", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/androidx/media" + } + }, + { + "groupId": "androidx.media3", + "artifactId": "media3-decoder", + "version": "1.6.0", + "name": "Media3 decoder module", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/androidx/media" + } + }, + { + "groupId": "androidx.media3", + "artifactId": "media3-exoplayer", + "version": "1.6.0", + "name": "Media3 ExoPlayer module", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/androidx/media" + } + }, + { + "groupId": "androidx.media3", + "artifactId": "media3-extractor", + "version": "1.6.0", + "name": "Media3 Extractor module", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/androidx/media" + } + }, + { + "groupId": "androidx.media3", + "artifactId": "media3-ui", + "version": "1.6.0", + "name": "Media3 UI module", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/androidx/media" + } + }, + { + "groupId": "androidx.navigation", + "artifactId": "navigation-common", + "version": "2.8.9", + "name": "Navigation Common", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.navigation", + "artifactId": "navigation-common-ktx", + "version": "2.8.9", + "name": "Navigation Common Kotlin Extensions", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.navigation", + "artifactId": "navigation-compose", + "version": "2.8.9", + "name": "Compose Navigation", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.navigation", + "artifactId": "navigation-runtime", + "version": "2.8.9", + "name": "Navigation Runtime", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.navigation", + "artifactId": "navigation-runtime-ktx", + "version": "2.8.9", + "name": "Navigation Runtime Kotlin Extensions", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.preference", + "artifactId": "preference", + "version": "1.2.1", + "name": "AndroidX Preference", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.preference", + "artifactId": "preference-ktx", + "version": "1.2.1", + "name": "Android Preferences KTX", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.print", + "artifactId": "print", + "version": "1.0.0", + "name": "Android Support Library Print", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "http://source.android.com" + } + }, + { + "groupId": "androidx.privacysandbox.ads", + "artifactId": "ads-adservices", + "version": "1.1.0-beta11", + "name": "Privacy Sandbox for Ad Services", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.privacysandbox.ads", + "artifactId": "ads-adservices-java", + "version": "1.1.0-beta11", + "name": "androidx.privacysandbox.ads:ads-adservices-java", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.profileinstaller", + "artifactId": "profileinstaller", + "version": "1.4.1", + "name": "Profile Installer", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.recyclerview", + "artifactId": "recyclerview", + "version": "1.4.0", + "name": "RecyclerView", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.resourceinspection", + "artifactId": "resourceinspection-annotation", + "version": "1.0.1", + "name": "Android Resource Inspection - Annotations", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.room", + "artifactId": "room-common", + "version": "2.7.0-rc03", + "name": "Room-Common", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.room", + "artifactId": "room-common-jvm", + "version": "2.7.0-rc03", + "name": "Room-Common", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.room", + "artifactId": "room-ktx", + "version": "2.7.0-rc03", + "name": "Room Kotlin Extensions", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.room", + "artifactId": "room-runtime", + "version": "2.7.0-rc03", + "name": "Room-Runtime", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.room", + "artifactId": "room-runtime-android", + "version": "2.7.0-rc03", + "name": "Room-Runtime", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.savedstate", + "artifactId": "savedstate", + "version": "1.2.1", + "name": "Saved State", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.savedstate", + "artifactId": "savedstate-ktx", + "version": "1.2.1", + "name": "SavedState Kotlin Extensions", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.slidingpanelayout", + "artifactId": "slidingpanelayout", + "version": "1.2.0", + "name": "Android Support Library Sliding Pane Layout", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.sqlite", + "artifactId": "sqlite", + "version": "2.5.0-rc03", + "name": "SQLite", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.sqlite", + "artifactId": "sqlite-android", + "version": "2.5.0-rc03", + "name": "SQLite", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.sqlite", + "artifactId": "sqlite-bundled", + "version": "2.5.0-rc03", + "name": "SQLite Bundled Integration", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.sqlite", + "artifactId": "sqlite-bundled-android", + "version": "2.5.0-rc03", + "name": "SQLite Bundled Integration", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.sqlite", + "artifactId": "sqlite-framework", + "version": "2.5.0-rc03", + "name": "SQLite Framework Integration", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.sqlite", + "artifactId": "sqlite-framework-android", + "version": "2.5.0-rc03", + "name": "SQLite Framework Integration", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.startup", + "artifactId": "startup-runtime", + "version": "1.2.0", + "name": "Startup Runtime", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.tracing", + "artifactId": "tracing", + "version": "1.2.0", + "name": "Android Tracing", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.tracing", + "artifactId": "tracing-ktx", + "version": "1.2.0", + "name": "Android Tracing Runtime Kotlin Extensions", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.transition", + "artifactId": "transition", + "version": "1.5.0", + "name": "Transition", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.vectordrawable", + "artifactId": "vectordrawable", + "version": "1.1.0", + "name": "Android Support VectorDrawable", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "http://source.android.com" + } + }, + { + "groupId": "androidx.vectordrawable", + "artifactId": "vectordrawable-animated", + "version": "1.1.0", + "name": "Android Support AnimatedVectorDrawable", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "http://source.android.com" + } + }, + { + "groupId": "androidx.versionedparcelable", + "artifactId": "versionedparcelable", + "version": "1.1.1", + "name": "VersionedParcelable", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "http://source.android.com" + } + }, + { + "groupId": "androidx.viewpager", + "artifactId": "viewpager", + "version": "1.0.0", + "name": "Android Support Library View Pager", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "http://source.android.com" + } + }, + { + "groupId": "androidx.viewpager2", + "artifactId": "viewpager2", + "version": "1.1.0-beta02", + "name": "ViewPager2", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.webkit", + "artifactId": "webkit", + "version": "1.11.0-alpha02", + "name": "WebKit", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.window", + "artifactId": "window", + "version": "1.0.0", + "name": "Jetpack WindowManager Library", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "androidx.work", + "artifactId": "work-runtime", + "version": "2.10.0", + "name": "WorkManager Runtime", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://cs.android.com/androidx/platform/frameworks/support" + } + }, + { + "groupId": "co.touchlab.crashkios", + "artifactId": "core", + "version": "0.9.0", + "name": "CrashKios", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/touchlab/CrashKios" + } + }, + { + "groupId": "co.touchlab.crashkios", + "artifactId": "core-android", + "version": "0.9.0", + "name": "CrashKios", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/touchlab/CrashKios" + } + }, + { + "groupId": "co.touchlab.crashkios", + "artifactId": "crashlytics", + "version": "0.9.0", + "name": "CrashKios", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/touchlab/CrashKios" + } + }, + { + "groupId": "co.touchlab.crashkios", + "artifactId": "crashlytics-android", + "version": "0.9.0", + "name": "CrashKios", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/touchlab/CrashKios" + } + }, + { + "groupId": "com.eygraber", + "artifactId": "compose-placeholder", + "version": "1.0.10", + "name": "Compose Placeholder", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/eygraber/compose-placeholder/" + } + }, + { + "groupId": "com.eygraber", + "artifactId": "compose-placeholder-android", + "version": "1.0.10", + "name": "Compose Placeholder", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/eygraber/compose-placeholder/" + } + }, + { + "groupId": "com.eygraber", + "artifactId": "compose-placeholder-material3", + "version": "1.0.10", + "name": "Compose Placeholder Material3", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/eygraber/compose-placeholder/" + } + }, + { + "groupId": "com.eygraber", + "artifactId": "compose-placeholder-material3-android", + "version": "1.0.10", + "name": "Compose Placeholder Material3", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/eygraber/compose-placeholder/" + } + }, + { + "groupId": "com.google.accompanist", + "artifactId": "accompanist-drawablepainter", + "version": "0.36.0", + "name": "Accompanist Drawable Painter library", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/google/accompanist/" + } + }, + { + "groupId": "com.google.android.datatransport", + "artifactId": "transport-api", + "version": "3.2.0", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/firebase/firebase-android-sdk" + } + }, + { + "groupId": "com.google.android.datatransport", + "artifactId": "transport-backend-cct", + "version": "3.3.0", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/firebase/firebase-android-sdk" + } + }, + { + "groupId": "com.google.android.datatransport", + "artifactId": "transport-runtime", + "version": "3.3.0", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/firebase/firebase-android-sdk" + } + }, + { + "groupId": "com.google.android.gms", + "artifactId": "play-services-ads", + "version": "24.1.0", + "name": "play-services-ads", + "unknownLicenses": [ + { + "name": "Android Software Development Kit License", + "url": "https://developer.android.com/studio/terms.html" + } + ] + }, + { + "groupId": "com.google.android.gms", + "artifactId": "play-services-ads-api", + "version": "24.1.0", + "name": "play-services-ads-api", + "unknownLicenses": [ + { + "name": "Android Software Development Kit License", + "url": "https://developer.android.com/studio/terms.html" + } + ] + }, + { + "groupId": "com.google.android.gms", + "artifactId": "play-services-ads-base", + "version": "24.1.0", + "name": "play-services-ads-base", + "unknownLicenses": [ + { + "name": "Android Software Development Kit License", + "url": "https://developer.android.com/studio/terms.html" + } + ] + }, + { + "groupId": "com.google.android.gms", + "artifactId": "play-services-ads-identifier", + "version": "18.0.0", + "name": "play-services-ads-identifier", + "unknownLicenses": [ + { + "name": "Android Software Development Kit License", + "url": "https://developer.android.com/studio/terms.html" + } + ] + }, + { + "groupId": "com.google.android.gms", + "artifactId": "play-services-appset", + "version": "16.0.1", + "name": "play-services-appset", + "unknownLicenses": [ + { + "name": "Android Software Development Kit License", + "url": "https://developer.android.com/studio/terms.html" + } + ] + }, + { + "groupId": "com.google.android.gms", + "artifactId": "play-services-base", + "version": "18.5.0", + "name": "play-services-base", + "unknownLicenses": [ + { + "name": "Android Software Development Kit License", + "url": "https://developer.android.com/studio/terms.html" + } + ] + }, + { + "groupId": "com.google.android.gms", + "artifactId": "play-services-basement", + "version": "18.5.0", + "name": "play-services-basement", + "unknownLicenses": [ + { + "name": "Android Software Development Kit License", + "url": "https://developer.android.com/studio/terms.html" + } + ] + }, + { + "groupId": "com.google.android.gms", + "artifactId": "play-services-maps", + "version": "19.1.0", + "name": "play-services-maps", + "unknownLicenses": [ + { + "name": "Android Software Development Kit License", + "url": "https://developer.android.com/studio/terms.html" + } + ] + }, + { + "groupId": "com.google.android.gms", + "artifactId": "play-services-measurement", + "version": "22.4.0", + "name": "play-services-measurement", + "unknownLicenses": [ + { + "name": "Android Software Development Kit License", + "url": "https://developer.android.com/studio/terms.html" + } + ] + }, + { + "groupId": "com.google.android.gms", + "artifactId": "play-services-measurement-api", + "version": "22.4.0", + "name": "play-services-measurement-api", + "unknownLicenses": [ + { + "name": "Android Software Development Kit License", + "url": "https://developer.android.com/studio/terms.html" + } + ] + }, + { + "groupId": "com.google.android.gms", + "artifactId": "play-services-measurement-base", + "version": "22.4.0", + "name": "play-services-measurement-base", + "unknownLicenses": [ + { + "name": "Android Software Development Kit License", + "url": "https://developer.android.com/studio/terms.html" + } + ] + }, + { + "groupId": "com.google.android.gms", + "artifactId": "play-services-measurement-impl", + "version": "22.4.0", + "name": "play-services-measurement-impl", + "unknownLicenses": [ + { + "name": "Android Software Development Kit License", + "url": "https://developer.android.com/studio/terms.html" + } + ] + }, + { + "groupId": "com.google.android.gms", + "artifactId": "play-services-measurement-sdk", + "version": "22.4.0", + "name": "play-services-measurement-sdk", + "unknownLicenses": [ + { + "name": "Android Software Development Kit License", + "url": "https://developer.android.com/studio/terms.html" + } + ] + }, + { + "groupId": "com.google.android.gms", + "artifactId": "play-services-measurement-sdk-api", + "version": "22.4.0", + "name": "play-services-measurement-sdk-api", + "unknownLicenses": [ + { + "name": "Android Software Development Kit License", + "url": "https://developer.android.com/studio/terms.html" + } + ] + }, + { + "groupId": "com.google.android.gms", + "artifactId": "play-services-stats", + "version": "17.0.2", + "name": "play-services-stats", + "unknownLicenses": [ + { + "name": "Android Software Development Kit License", + "url": "https://developer.android.com/studio/terms.html" + } + ] + }, + { + "groupId": "com.google.android.gms", + "artifactId": "play-services-tasks", + "version": "18.2.0", + "name": "play-services-tasks", + "unknownLicenses": [ + { + "name": "Android Software Development Kit License", + "url": "https://developer.android.com/studio/terms.html" + } + ] + }, + { + "groupId": "com.google.android.material", + "artifactId": "material", + "version": "1.12.0", + "name": "Material Components for Android", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/material-components/material-components-android" + } + }, + { + "groupId": "com.google.android.play", + "artifactId": "core-common", + "version": "2.0.4", + "name": "core-common", + "unknownLicenses": [ + { + "name": "Play Core Software Development Kit Terms of Service", + "url": "https://developer.android.com/guide/playcore/license" + } + ] + }, + { + "groupId": "com.google.android.play", + "artifactId": "review", + "version": "2.0.2", + "name": "review", + "unknownLicenses": [ + { + "name": "Play Core Software Development Kit Terms of Service", + "url": "https://developer.android.com/guide/playcore/license" + } + ] + }, + { + "groupId": "com.google.android.play", + "artifactId": "review-ktx", + "version": "2.0.2", + "name": "review-ktx", + "unknownLicenses": [ + { + "name": "Play Core Software Development Kit Terms of Service", + "url": "https://developer.android.com/guide/playcore/license" + } + ] + }, + { + "groupId": "com.google.android.ump", + "artifactId": "user-messaging-platform", + "version": "3.1.0", + "name": "user-messaging-platform", + "unknownLicenses": [ + { + "name": "Android Software Development Kit License", + "url": "https://developer.android.com/studio/terms.html" + } + ] + }, + { + "groupId": "com.google.code.findbugs", + "artifactId": "jsr305", + "version": "3.0.2", + "name": "FindBugs-jsr305", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://code.google.com/p/jsr-305/" + } + }, + { + "groupId": "com.google.dagger", + "artifactId": "dagger", + "version": "2.56.1", + "name": "Dagger", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/google/dagger/" + } + }, + { + "groupId": "com.google.dagger", + "artifactId": "dagger-compiler", + "version": "2.56.1", + "name": "Dagger Compiler", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/google/dagger/" + } + }, + { + "groupId": "com.google.dagger", + "artifactId": "dagger-lint-aar", + "version": "2.56.1", + "name": "Dagger Lint Rules AAR Distribution", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/google/dagger/" + } + }, + { + "groupId": "com.google.dagger", + "artifactId": "dagger-spi", + "version": "2.56.1", + "name": "Dagger SPI", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/google/dagger/" + } + }, + { + "groupId": "com.google.dagger", + "artifactId": "hilt-android", + "version": "2.56.1", + "name": "Hilt Android", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/google/dagger/" + } + }, + { + "groupId": "com.google.dagger", + "artifactId": "hilt-core", + "version": "2.56.1", + "name": "Hilt Core", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/google/dagger/" + } + }, + { + "groupId": "com.google.devtools.ksp", + "artifactId": "symbol-processing-api", + "version": "2.1.10-1.0.31", + "name": "com.google.devtools.ksp:symbol-processing-api", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/google/ksp" + } + }, + { + "groupId": "com.google.errorprone", + "artifactId": "error_prone_annotations", + "version": "2.28.0", + "name": "error-prone annotations", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/google/error-prone" + } + }, + { + "groupId": "com.google.firebase", + "artifactId": "firebase-analytics", + "version": "22.4.0", + "name": "firebase-analytics", + "unknownLicenses": [ + { + "name": "Android Software Development Kit License", + "url": "https://developer.android.com/studio/terms.html" + } + ] + }, + { + "groupId": "com.google.firebase", + "artifactId": "firebase-analytics-ktx", + "version": "22.4.0", + "name": "firebase-analytics-ktx", + "unknownLicenses": [ + { + "name": "Android Software Development Kit License", + "url": "https://developer.android.com/studio/terms.html" + } + ] + }, + { + "groupId": "com.google.firebase", + "artifactId": "firebase-annotations", + "version": "16.2.0", + "name": "firebase-annotations", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ] + }, + { + "groupId": "com.google.firebase", + "artifactId": "firebase-common", + "version": "21.0.0", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/firebase/firebase-android-sdk" + } + }, + { + "groupId": "com.google.firebase", + "artifactId": "firebase-common-ktx", + "version": "21.0.0", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/firebase/firebase-android-sdk" + } + }, + { + "groupId": "com.google.firebase", + "artifactId": "firebase-components", + "version": "18.0.0", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/firebase/firebase-android-sdk" + } + }, + { + "groupId": "com.google.firebase", + "artifactId": "firebase-config-interop", + "version": "16.0.1", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/firebase/firebase-android-sdk" + } + }, + { + "groupId": "com.google.firebase", + "artifactId": "firebase-crashlytics", + "version": "19.4.2", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/firebase/firebase-android-sdk" + } + }, + { + "groupId": "com.google.firebase", + "artifactId": "firebase-datatransport", + "version": "19.0.0", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/firebase/firebase-android-sdk" + } + }, + { + "groupId": "com.google.firebase", + "artifactId": "firebase-encoders", + "version": "17.0.0", + "name": "firebase-encoders", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ] + }, + { + "groupId": "com.google.firebase", + "artifactId": "firebase-encoders-json", + "version": "18.0.1", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/firebase/firebase-android-sdk" + } + }, + { + "groupId": "com.google.firebase", + "artifactId": "firebase-encoders-proto", + "version": "16.0.0", + "name": "firebase-encoders-proto", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ] + }, + { + "groupId": "com.google.firebase", + "artifactId": "firebase-installations", + "version": "18.0.0", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/firebase/firebase-android-sdk" + } + }, + { + "groupId": "com.google.firebase", + "artifactId": "firebase-installations-interop", + "version": "17.2.0", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/firebase/firebase-android-sdk" + } + }, + { + "groupId": "com.google.firebase", + "artifactId": "firebase-measurement-connector", + "version": "20.0.1", + "name": "firebase-measurement-connector", + "unknownLicenses": [ + { + "name": "Android Software Development Kit License", + "url": "https://developer.android.com/studio/terms.html" + } + ] + }, + { + "groupId": "com.google.firebase", + "artifactId": "firebase-sessions", + "version": "2.1.0", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/firebase/firebase-android-sdk" + } + }, + { + "groupId": "com.google.googlejavaformat", + "artifactId": "google-java-format", + "version": "1.5", + "name": "Google Java Format", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "http://github.com/google/google-java-format/google-java-format/" + } + }, + { + "groupId": "com.google.guava", + "artifactId": "failureaccess", + "version": "1.0.2", + "name": "Guava InternalFutureFailureAccess and InternalFutures", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/google/guava" + } + }, + { + "groupId": "com.google.guava", + "artifactId": "guava", + "version": "33.3.1-jre", + "name": "Guava: Google Core Libraries for Java", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/google/guava" + } + }, + { + "groupId": "com.google.guava", + "artifactId": "listenablefuture", + "version": "9999.0-empty-to-avoid-conflict-with-guava", + "name": "Guava ListenableFuture only", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/google/guava" + } + }, + { + "groupId": "com.google.j2objc", + "artifactId": "j2objc-annotations", + "version": "3.0.0", + "name": "J2ObjC Annotations", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "http://github.com/google/j2objc" + } + }, + { + "groupId": "com.google.maps.android", + "artifactId": "maps-compose", + "version": "6.5.2", + "name": "maps-compose", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/googlemaps/android-maps-compose" + } + }, + { + "groupId": "com.google.maps.android", + "artifactId": "maps-ktx", + "version": "5.1.1", + "name": "maps-ktx", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/googlemaps/android-maps-ktx" + } + }, + { + "groupId": "com.squareup", + "artifactId": "javapoet", + "version": "1.13.0", + "name": "JavaPoet", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "http://github.com/square/javapoet/" + } + }, + { + "groupId": "com.squareup", + "artifactId": "kotlinpoet", + "version": "1.11.0", + "name": "KotlinPoet", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/square/kotlinpoet" + } + }, + { + "groupId": "com.squareup.okhttp3", + "artifactId": "okhttp", + "version": "4.12.0", + "name": "okhttp", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/square/okhttp" + } + }, + { + "groupId": "com.squareup.okhttp3", + "artifactId": "okhttp-sse", + "version": "4.12.0", + "name": "okhttp-sse", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/square/okhttp" + } + }, + { + "groupId": "com.squareup.okio", + "artifactId": "okio", + "version": "3.10.2", + "name": "okio", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/square/okio/" + } + }, + { + "groupId": "com.squareup.okio", + "artifactId": "okio-jvm", + "version": "3.10.2", + "name": "okio", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/square/okio/" + } + }, + { + "groupId": "de.jensklingenberg.ktorfit", + "artifactId": "ktorfit-annotations", + "version": "2.4.1", + "name": "Ktorfit", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/Foso/Ktorfit" + } + }, + { + "groupId": "de.jensklingenberg.ktorfit", + "artifactId": "ktorfit-annotations-android", + "version": "2.4.1", + "name": "Ktorfit", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/Foso/Ktorfit" + } + }, + { + "groupId": "de.jensklingenberg.ktorfit", + "artifactId": "ktorfit-lib", + "version": "2.4.1", + "name": "Ktorfit", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/Foso/Ktorfit" + } + }, + { + "groupId": "de.jensklingenberg.ktorfit", + "artifactId": "ktorfit-lib-android", + "version": "2.4.1", + "name": "Ktorfit", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/Foso/Ktorfit" + } + }, + { + "groupId": "de.jensklingenberg.ktorfit", + "artifactId": "ktorfit-lib-light", + "version": "2.4.1", + "name": "Ktorfit", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/Foso/Ktorfit" + } + }, + { + "groupId": "de.jensklingenberg.ktorfit", + "artifactId": "ktorfit-lib-light-android", + "version": "2.4.1", + "name": "Ktorfit", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/Foso/Ktorfit" + } + }, + { + "groupId": "io.coil-kt.coil3", + "artifactId": "coil", + "version": "3.1.0", + "name": "coil", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/coil-kt/coil" + } + }, + { + "groupId": "io.coil-kt.coil3", + "artifactId": "coil-android", + "version": "3.1.0", + "name": "coil", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/coil-kt/coil" + } + }, + { + "groupId": "io.coil-kt.coil3", + "artifactId": "coil-compose", + "version": "3.1.0", + "name": "coil-compose", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/coil-kt/coil" + } + }, + { + "groupId": "io.coil-kt.coil3", + "artifactId": "coil-compose-android", + "version": "3.1.0", + "name": "coil-compose", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/coil-kt/coil" + } + }, + { + "groupId": "io.coil-kt.coil3", + "artifactId": "coil-compose-core", + "version": "3.1.0", + "name": "coil-compose-core", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/coil-kt/coil" + } + }, + { + "groupId": "io.coil-kt.coil3", + "artifactId": "coil-compose-core-android", + "version": "3.1.0", + "name": "coil-compose-core", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/coil-kt/coil" + } + }, + { + "groupId": "io.coil-kt.coil3", + "artifactId": "coil-core", + "version": "3.1.0", + "name": "coil-core", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/coil-kt/coil" + } + }, + { + "groupId": "io.coil-kt.coil3", + "artifactId": "coil-core-android", + "version": "3.1.0", + "name": "coil-core", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/coil-kt/coil" + } + }, + { + "groupId": "io.coil-kt.coil3", + "artifactId": "coil-network-core", + "version": "3.1.0", + "name": "coil-network-core", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/coil-kt/coil" + } + }, + { + "groupId": "io.coil-kt.coil3", + "artifactId": "coil-network-core-android", + "version": "3.1.0", + "name": "coil-network-core", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/coil-kt/coil" + } + }, + { + "groupId": "io.coil-kt.coil3", + "artifactId": "coil-network-okhttp", + "version": "3.1.0", + "name": "coil-network-okhttp", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/coil-kt/coil" + } + }, + { + "groupId": "io.coil-kt.coil3", + "artifactId": "coil-network-okhttp-jvm", + "version": "3.1.0", + "name": "coil-network-okhttp", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/coil-kt/coil" + } + }, + { + "groupId": "io.github.aakira", + "artifactId": "napier", + "version": "2.7.1", + "name": "napier", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/aakira/Napier" + } + }, + { + "groupId": "io.github.aakira", + "artifactId": "napier-android", + "version": "2.7.1", + "name": "napier", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/aakira/Napier" + } + }, + { + "groupId": "io.ktor", + "artifactId": "ktor-client-content-negotiation", + "version": "3.1.1", + "name": "ktor-client-content-negotiation", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/ktorio/ktor.git" + } + }, + { + "groupId": "io.ktor", + "artifactId": "ktor-client-content-negotiation-jvm", + "version": "3.1.1", + "name": "ktor-client-content-negotiation", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/ktorio/ktor.git" + } + }, + { + "groupId": "io.ktor", + "artifactId": "ktor-client-core", + "version": "3.1.1", + "name": "ktor-client-core", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/ktorio/ktor.git" + } + }, + { + "groupId": "io.ktor", + "artifactId": "ktor-client-core-jvm", + "version": "3.1.1", + "name": "ktor-client-core", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/ktorio/ktor.git" + } + }, + { + "groupId": "io.ktor", + "artifactId": "ktor-client-okhttp", + "version": "3.1.1", + "name": "ktor-client-okhttp", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/ktorio/ktor.git" + } + }, + { + "groupId": "io.ktor", + "artifactId": "ktor-client-okhttp-jvm", + "version": "3.1.1", + "name": "ktor-client-okhttp", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/ktorio/ktor.git" + } + }, + { + "groupId": "io.ktor", + "artifactId": "ktor-events", + "version": "3.1.1", + "name": "ktor-events", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/ktorio/ktor.git" + } + }, + { + "groupId": "io.ktor", + "artifactId": "ktor-events-jvm", + "version": "3.1.1", + "name": "ktor-events", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/ktorio/ktor.git" + } + }, + { + "groupId": "io.ktor", + "artifactId": "ktor-http", + "version": "3.1.1", + "name": "ktor-http", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/ktorio/ktor.git" + } + }, + { + "groupId": "io.ktor", + "artifactId": "ktor-http-cio", + "version": "3.1.1", + "name": "ktor-http-cio", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/ktorio/ktor.git" + } + }, + { + "groupId": "io.ktor", + "artifactId": "ktor-http-cio-jvm", + "version": "3.1.1", + "name": "ktor-http-cio", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/ktorio/ktor.git" + } + }, + { + "groupId": "io.ktor", + "artifactId": "ktor-http-jvm", + "version": "3.1.1", + "name": "ktor-http", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/ktorio/ktor.git" + } + }, + { + "groupId": "io.ktor", + "artifactId": "ktor-io", + "version": "3.1.1", + "name": "ktor-io", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/ktorio/ktor.git" + } + }, + { + "groupId": "io.ktor", + "artifactId": "ktor-io-jvm", + "version": "3.1.1", + "name": "ktor-io", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/ktorio/ktor.git" + } + }, + { + "groupId": "io.ktor", + "artifactId": "ktor-network", + "version": "3.1.1", + "name": "ktor-network", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/ktorio/ktor.git" + } + }, + { + "groupId": "io.ktor", + "artifactId": "ktor-network-jvm", + "version": "3.1.1", + "name": "ktor-network", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/ktorio/ktor.git" + } + }, + { + "groupId": "io.ktor", + "artifactId": "ktor-serialization", + "version": "3.1.1", + "name": "ktor-serialization", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/ktorio/ktor.git" + } + }, + { + "groupId": "io.ktor", + "artifactId": "ktor-serialization-jvm", + "version": "3.1.1", + "name": "ktor-serialization", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/ktorio/ktor.git" + } + }, + { + "groupId": "io.ktor", + "artifactId": "ktor-serialization-kotlinx", + "version": "3.1.1", + "name": "ktor-serialization-kotlinx", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/ktorio/ktor.git" + } + }, + { + "groupId": "io.ktor", + "artifactId": "ktor-serialization-kotlinx-json", + "version": "3.1.1", + "name": "ktor-serialization-kotlinx-json", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/ktorio/ktor.git" + } + }, + { + "groupId": "io.ktor", + "artifactId": "ktor-serialization-kotlinx-json-jvm", + "version": "3.1.1", + "name": "ktor-serialization-kotlinx-json", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/ktorio/ktor.git" + } + }, + { + "groupId": "io.ktor", + "artifactId": "ktor-serialization-kotlinx-jvm", + "version": "3.1.1", + "name": "ktor-serialization-kotlinx", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/ktorio/ktor.git" + } + }, + { + "groupId": "io.ktor", + "artifactId": "ktor-sse", + "version": "3.1.1", + "name": "ktor-sse", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/ktorio/ktor.git" + } + }, + { + "groupId": "io.ktor", + "artifactId": "ktor-sse-jvm", + "version": "3.1.1", + "name": "ktor-sse", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/ktorio/ktor.git" + } + }, + { + "groupId": "io.ktor", + "artifactId": "ktor-utils", + "version": "3.1.1", + "name": "ktor-utils", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/ktorio/ktor.git" + } + }, + { + "groupId": "io.ktor", + "artifactId": "ktor-utils-jvm", + "version": "3.1.1", + "name": "ktor-utils", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/ktorio/ktor.git" + } + }, + { + "groupId": "io.ktor", + "artifactId": "ktor-websocket-serialization", + "version": "3.1.1", + "name": "ktor-websocket-serialization", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/ktorio/ktor.git" + } + }, + { + "groupId": "io.ktor", + "artifactId": "ktor-websocket-serialization-jvm", + "version": "3.1.1", + "name": "ktor-websocket-serialization", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/ktorio/ktor.git" + } + }, + { + "groupId": "io.ktor", + "artifactId": "ktor-websockets", + "version": "3.1.1", + "name": "ktor-websockets", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/ktorio/ktor.git" + } + }, + { + "groupId": "io.ktor", + "artifactId": "ktor-websockets-jvm", + "version": "3.1.1", + "name": "ktor-websockets", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/ktorio/ktor.git" + } + }, + { + "groupId": "jakarta.inject", + "artifactId": "jakarta.inject-api", + "version": "2.0.1", + "name": "Jakarta Dependency Injection", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/eclipse-ee4j/injection-api" + } + }, + { + "groupId": "javax.inject", + "artifactId": "javax.inject", + "version": "1", + "name": "javax.inject", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "http://code.google.com/p/atinject/source/checkout" + } + }, + { + "groupId": "net.ltgt.gradle.incap", + "artifactId": "incap", + "version": "0.2", + "name": "net.ltgt.gradle.incap:incap", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/tbroyer/gradle-incap-helper" + } + }, + { + "groupId": "org.checkerframework", + "artifactId": "checker-compat-qual", + "version": "2.5.3", + "name": "Checker Qual", + "spdxLicenses": [ + { + "identifier": "GPL-2.0-with-classpath-exception", + "name": "GNU General Public License v2.0 w/Classpath exception", + "url": "https://www.gnu.org/software/classpath/license.html" + }, + { + "identifier": "MIT", + "name": "MIT License", + "url": "https://opensource.org/license/mit/" + } + ], + "scm": { + "url": "https://github.com/typetools/checker-framework.git" + } + }, + { + "groupId": "org.checkerframework", + "artifactId": "checker-qual", + "version": "3.43.0", + "name": "Checker Qual", + "spdxLicenses": [ + { + "identifier": "MIT", + "name": "MIT License", + "url": "https://opensource.org/license/mit/" + } + ], + "scm": { + "url": "https://github.com/typetools/checker-framework.git" + } + }, + { + "groupId": "org.jetbrains", + "artifactId": "annotations", + "version": "23.0.0", + "name": "JetBrains Java Annotations", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/JetBrains/java-annotations" + } + }, + { + "groupId": "org.jetbrains.androidx.core", + "artifactId": "core-bundle", + "version": "1.1.0-alpha01", + "name": "androidx.core:core-bundle", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/JetBrains/compose-jb" + } + }, + { + "groupId": "org.jetbrains.androidx.core", + "artifactId": "core-bundle-android", + "version": "1.1.0-alpha01", + "name": "androidx.core:core-bundle", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/JetBrains/compose-jb" + } + }, + { + "groupId": "org.jetbrains.androidx.core", + "artifactId": "core-uri", + "version": "1.0.0-alpha01", + "name": "androidx.core:core-uri", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/JetBrains/compose-jb" + } + }, + { + "groupId": "org.jetbrains.androidx.core", + "artifactId": "core-uri-android", + "version": "1.0.0-alpha01", + "name": "androidx.core:core-uri", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/JetBrains/compose-jb" + } + }, + { + "groupId": "org.jetbrains.androidx.lifecycle", + "artifactId": "lifecycle-common", + "version": "2.9.0-alpha01", + "name": "Lifecycle-Common", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/JetBrains/compose-jb" + } + }, + { + "groupId": "org.jetbrains.androidx.lifecycle", + "artifactId": "lifecycle-runtime", + "version": "2.9.0-alpha01", + "name": "Lifecycle Runtime", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/JetBrains/compose-jb" + } + }, + { + "groupId": "org.jetbrains.androidx.lifecycle", + "artifactId": "lifecycle-runtime-compose", + "version": "2.8.4", + "name": "Lifecycle Runtime Compose", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/JetBrains/compose-jb" + } + }, + { + "groupId": "org.jetbrains.androidx.lifecycle", + "artifactId": "lifecycle-viewmodel", + "version": "2.9.0-alpha01", + "name": "Lifecycle ViewModel", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/JetBrains/compose-jb" + } + }, + { + "groupId": "org.jetbrains.androidx.lifecycle", + "artifactId": "lifecycle-viewmodel-compose", + "version": "2.8.4", + "name": "Lifecycle ViewModel Compose", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/JetBrains/compose-jb" + } + }, + { + "groupId": "org.jetbrains.androidx.lifecycle", + "artifactId": "lifecycle-viewmodel-savedstate", + "version": "2.9.0-alpha01", + "name": "Lifecycle ViewModel with SavedState", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/JetBrains/compose-jb" + } + }, + { + "groupId": "org.jetbrains.androidx.navigation", + "artifactId": "navigation-common", + "version": "2.8.0-alpha11", + "name": "Navigation Common", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/JetBrains/compose-jb" + } + }, + { + "groupId": "org.jetbrains.androidx.navigation", + "artifactId": "navigation-compose", + "version": "2.8.0-alpha11", + "name": "Compose Navigation", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/JetBrains/compose-jb" + } + }, + { + "groupId": "org.jetbrains.androidx.navigation", + "artifactId": "navigation-runtime", + "version": "2.8.0-alpha11", + "name": "Navigation Runtime", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/JetBrains/compose-jb" + } + }, + { + "groupId": "org.jetbrains.androidx.savedstate", + "artifactId": "savedstate", + "version": "1.2.2", + "name": "Saved State", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/JetBrains/compose-jb" + } + }, + { + "groupId": "org.jetbrains.compose.animation", + "artifactId": "animation", + "version": "1.7.3", + "name": "Compose Animation", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/JetBrains/compose-jb" + } + }, + { + "groupId": "org.jetbrains.compose.animation", + "artifactId": "animation-core", + "version": "1.7.3", + "name": "Compose Animation Core", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/JetBrains/compose-jb" + } + }, + { + "groupId": "org.jetbrains.compose.annotation-internal", + "artifactId": "annotation", + "version": "1.7.3", + "name": "Annotation", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/JetBrains/compose-jb" + } + }, + { + "groupId": "org.jetbrains.compose.collection-internal", + "artifactId": "collection", + "version": "1.7.3", + "name": "collections", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/JetBrains/compose-jb" + } + }, + { + "groupId": "org.jetbrains.compose.components", + "artifactId": "components-resources", + "version": "1.7.3", + "name": "Resources for Compose JB", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/JetBrains/compose-jb" + } + }, + { + "groupId": "org.jetbrains.compose.components", + "artifactId": "components-resources-android", + "version": "1.7.3", + "name": "Resources for Compose JB", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/JetBrains/compose-jb" + } + }, + { + "groupId": "org.jetbrains.compose.foundation", + "artifactId": "foundation", + "version": "1.7.3", + "name": "Compose Foundation", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/JetBrains/compose-jb" + } + }, + { + "groupId": "org.jetbrains.compose.foundation", + "artifactId": "foundation-layout", + "version": "1.7.3", + "name": "Compose Layouts", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/JetBrains/compose-jb" + } + }, + { + "groupId": "org.jetbrains.compose.material", + "artifactId": "material-icons-core", + "version": "1.7.3", + "name": "Compose Material Icons Core", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/JetBrains/compose-jb" + } + }, + { + "groupId": "org.jetbrains.compose.material", + "artifactId": "material-icons-extended", + "version": "1.7.3", + "name": "Compose Material Icons Extended", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/JetBrains/compose-jb" + } + }, + { + "groupId": "org.jetbrains.compose.material", + "artifactId": "material-ripple", + "version": "1.7.3", + "name": "Compose Material Ripple", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/JetBrains/compose-jb" + } + }, + { + "groupId": "org.jetbrains.compose.material3", + "artifactId": "material3", + "version": "1.7.3", + "name": "Compose Material3 Components", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/JetBrains/compose-jb" + } + }, + { + "groupId": "org.jetbrains.compose.material3", + "artifactId": "material3-window-size-class", + "version": "1.7.3", + "name": "Compose Material 3 Window Size Class", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/JetBrains/compose-jb" + } + }, + { + "groupId": "org.jetbrains.compose.runtime", + "artifactId": "runtime", + "version": "1.7.3", + "name": "Compose Runtime", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/JetBrains/compose-jb" + } + }, + { + "groupId": "org.jetbrains.compose.runtime", + "artifactId": "runtime-saveable", + "version": "1.7.3", + "name": "Compose Saveable", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/JetBrains/compose-jb" + } + }, + { + "groupId": "org.jetbrains.compose.ui", + "artifactId": "ui", + "version": "1.7.3", + "name": "Compose UI primitives", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/JetBrains/compose-jb" + } + }, + { + "groupId": "org.jetbrains.compose.ui", + "artifactId": "ui-geometry", + "version": "1.7.3", + "name": "Compose Geometry", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/JetBrains/compose-jb" + } + }, + { + "groupId": "org.jetbrains.compose.ui", + "artifactId": "ui-graphics", + "version": "1.7.3", + "name": "Compose Graphics", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/JetBrains/compose-jb" + } + }, + { + "groupId": "org.jetbrains.compose.ui", + "artifactId": "ui-text", + "version": "1.7.3", + "name": "Compose UI Text", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/JetBrains/compose-jb" + } + }, + { + "groupId": "org.jetbrains.compose.ui", + "artifactId": "ui-unit", + "version": "1.7.3", + "name": "Compose Unit", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/JetBrains/compose-jb" + } + }, + { + "groupId": "org.jetbrains.compose.ui", + "artifactId": "ui-util", + "version": "1.7.3", + "name": "Compose Util", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/JetBrains/compose-jb" + } + }, + { + "groupId": "org.jetbrains.kotlin", + "artifactId": "kotlin-android-extensions-runtime", + "version": "1.9.22", + "name": "Kotlin Android Extensions Runtime", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/JetBrains/kotlin" + } + }, + { + "groupId": "org.jetbrains.kotlin", + "artifactId": "kotlin-parcelize-runtime", + "version": "1.9.22", + "name": "Parcelize Runtime", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/JetBrains/kotlin" + } + }, + { + "groupId": "org.jetbrains.kotlin", + "artifactId": "kotlin-reflect", + "version": "1.8.22", + "name": "Kotlin Reflect", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/JetBrains/kotlin" + } + }, + { + "groupId": "org.jetbrains.kotlin", + "artifactId": "kotlin-stdlib", + "version": "2.1.20", + "name": "Kotlin Stdlib", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/JetBrains/kotlin" + } + }, + { + "groupId": "org.jetbrains.kotlin", + "artifactId": "kotlin-stdlib-common", + "version": "2.1.20", + "name": "Kotlin Stdlib Common", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/JetBrains/kotlin" + } + }, + { + "groupId": "org.jetbrains.kotlin", + "artifactId": "kotlin-stdlib-jdk7", + "version": "2.1.0", + "name": "Kotlin Stdlib Jdk7", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/JetBrains/kotlin" + } + }, + { + "groupId": "org.jetbrains.kotlin", + "artifactId": "kotlin-stdlib-jdk8", + "version": "2.1.0", + "name": "Kotlin Stdlib Jdk8", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/JetBrains/kotlin" + } + }, + { + "groupId": "org.jetbrains.kotlinx", + "artifactId": "atomicfu", + "version": "0.23.2", + "name": "atomicfu", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/Kotlin/kotlinx.atomicfu" + } + }, + { + "groupId": "org.jetbrains.kotlinx", + "artifactId": "atomicfu-jvm", + "version": "0.23.2", + "name": "atomicfu", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/Kotlin/kotlinx.atomicfu" + } + }, + { + "groupId": "org.jetbrains.kotlinx", + "artifactId": "kotlinx-coroutines-android", + "version": "1.10.1", + "name": "kotlinx-coroutines-android", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/Kotlin/kotlinx.coroutines" + } + }, + { + "groupId": "org.jetbrains.kotlinx", + "artifactId": "kotlinx-coroutines-core", + "version": "1.10.1", + "name": "kotlinx-coroutines-core", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/Kotlin/kotlinx.coroutines" + } + }, + { + "groupId": "org.jetbrains.kotlinx", + "artifactId": "kotlinx-coroutines-core-jvm", + "version": "1.10.1", + "name": "kotlinx-coroutines-core", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/Kotlin/kotlinx.coroutines" + } + }, + { + "groupId": "org.jetbrains.kotlinx", + "artifactId": "kotlinx-coroutines-play-services", + "version": "1.10.1", + "name": "kotlinx-coroutines-play-services", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/Kotlin/kotlinx.coroutines" + } + }, + { + "groupId": "org.jetbrains.kotlinx", + "artifactId": "kotlinx-coroutines-slf4j", + "version": "1.10.1", + "name": "kotlinx-coroutines-slf4j", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/Kotlin/kotlinx.coroutines" + } + }, + { + "groupId": "org.jetbrains.kotlinx", + "artifactId": "kotlinx-datetime", + "version": "0.6.2", + "name": "kotlinx-datetime", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/Kotlin/kotlinx-datetime" + } + }, + { + "groupId": "org.jetbrains.kotlinx", + "artifactId": "kotlinx-datetime-jvm", + "version": "0.6.2", + "name": "kotlinx-datetime", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/Kotlin/kotlinx-datetime" + } + }, + { + "groupId": "org.jetbrains.kotlinx", + "artifactId": "kotlinx-io-bytestring", + "version": "0.6.0", + "name": "kotlinx-io-bytestring", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/Kotlin/kotlinx-io" + } + }, + { + "groupId": "org.jetbrains.kotlinx", + "artifactId": "kotlinx-io-bytestring-jvm", + "version": "0.6.0", + "name": "kotlinx-io-bytestring", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/Kotlin/kotlinx-io" + } + }, + { + "groupId": "org.jetbrains.kotlinx", + "artifactId": "kotlinx-io-core", + "version": "0.6.0", + "name": "kotlinx-io-core", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/Kotlin/kotlinx-io" + } + }, + { + "groupId": "org.jetbrains.kotlinx", + "artifactId": "kotlinx-io-core-jvm", + "version": "0.6.0", + "name": "kotlinx-io-core", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/Kotlin/kotlinx-io" + } + }, + { + "groupId": "org.jetbrains.kotlinx", + "artifactId": "kotlinx-serialization-core", + "version": "1.8.0", + "name": "kotlinx-serialization-core", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/Kotlin/kotlinx.serialization" + } + }, + { + "groupId": "org.jetbrains.kotlinx", + "artifactId": "kotlinx-serialization-core-jvm", + "version": "1.8.0", + "name": "kotlinx-serialization-core", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/Kotlin/kotlinx.serialization" + } + }, + { + "groupId": "org.jetbrains.kotlinx", + "artifactId": "kotlinx-serialization-json", + "version": "1.8.0", + "name": "kotlinx-serialization-json", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/Kotlin/kotlinx.serialization" + } + }, + { + "groupId": "org.jetbrains.kotlinx", + "artifactId": "kotlinx-serialization-json-io", + "version": "1.8.0", + "name": "kotlinx-serialization-json-io", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/Kotlin/kotlinx.serialization" + } + }, + { + "groupId": "org.jetbrains.kotlinx", + "artifactId": "kotlinx-serialization-json-io-jvm", + "version": "1.8.0", + "name": "kotlinx-serialization-json-io", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/Kotlin/kotlinx.serialization" + } + }, + { + "groupId": "org.jetbrains.kotlinx", + "artifactId": "kotlinx-serialization-json-jvm", + "version": "1.8.0", + "name": "kotlinx-serialization-json", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/Kotlin/kotlinx.serialization" + } + }, + { + "groupId": "org.jspecify", + "artifactId": "jspecify", + "version": "1.0.0", + "name": "JSpecify annotations", + "spdxLicenses": [ + { + "identifier": "Apache-2.0", + "name": "Apache License 2.0", + "url": "https://www.apache.org/licenses/LICENSE-2.0" + } + ], + "scm": { + "url": "https://github.com/jspecify/jspecify/" + } + }, + { + "groupId": "org.slf4j", + "artifactId": "slf4j-api", + "version": "2.0.16", + "name": "SLF4J API Module", + "spdxLicenses": [ + { + "identifier": "MIT", + "name": "MIT License", + "url": "https://opensource.org/license/mit/" + } + ], + "scm": { + "url": "https://github.com/qos-ch/slf4j/slf4j-parent" + } + } +] diff -r c40e90a1b0fa -r 246422783c0c sample/src/desktopMain/kotlin/PrebuiltLicensesViewModel.desktop.kt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sample/src/desktopMain/kotlin/PrebuiltLicensesViewModel.desktop.kt Wed Apr 23 13:38:29 2025 -0400 @@ -0,0 +1,57 @@ +/* + * AboutOss is an utility library to retrieve and display + * opensource licenses in Android applications. + * + * Copyright (C) 2023-2025 by Frederic-Charles Barthelery. + * + * This file is part of AboutOss. + * + * AboutOss is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * AboutOss is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with AboutOss. If not, see . + */ +package com.geekorum.aboutoss.sampleapp + +import androidx.lifecycle.viewmodel.CreationExtras +import com.geekorum.aboutoss.core.licensee.LicenseeLicenseInfoRepository +import com.geekorum.aboutoss.ui.common.BrowserLauncher +import com.geekorum.aboutoss.ui.common.OpenSourceLicensesViewModel +import kotlinx.coroutines.Dispatchers +import org.jetbrains.compose.resources.ExperimentalResourceApi + +@OptIn(ExperimentalResourceApi::class) +actual fun CreationExtras.createPrebuildOpenSourceLicensesViewModel(): OpenSourceLicensesViewModel { + val licenseInfoRepository = LicenseeLicenseInfoRepository( + mainCoroutineDispatcher = Dispatchers.Main, + ioCoroutineDispatcher = Dispatchers.IO, + licenseeResourcePath = "app/cash/licensee/prebuilt_artifacts.json", + ) + + return OpenSourceLicensesViewModel( + licenseInfoRepository, + object : BrowserLauncher { + override fun warmUp() { + } + + override fun launchUrl(link: String) { + TODO("Not yet implemented") + } + + override fun mayLaunchUrl(vararg uris: String) { + TODO("Not yet implemented") + } + + override fun shutdown() { + } + } + ) +} \ No newline at end of file diff -r c40e90a1b0fa -r 246422783c0c sample/src/desktopMain/kotlin/main.kt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sample/src/desktopMain/kotlin/main.kt Wed Apr 23 13:38:29 2025 -0400 @@ -0,0 +1,40 @@ +/* + * AboutOss is an utility library to retrieve and display + * opensource licenses in Android applications. + * + * Copyright (C) 2023-2025 by Frederic-Charles Barthelery. + * + * This file is part of AboutOss. + * + * AboutOss is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * AboutOss is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with AboutOss. If not, see . + */ +package com.geekorum.aboutoss.sampleapp + +import androidx.compose.runtime.Composable +import androidx.compose.ui.window.Window +import androidx.compose.ui.window.application +import org.jetbrains.compose.ui.tooling.preview.Preview + +@Composable +@Preview +fun SampleAppDesktop() { + SampleApp(onMaterial2Click = {}, + onMaterial3Click = {}) +} + +fun main() = application { + Window(onCloseRequest = ::exitApplication) { + SampleAppDesktop() + } +}