diff --git a/LICENSE b/LICENSE index 48fbc0f..613662e 100644 --- a/LICENSE +++ b/LICENSE @@ -2,6 +2,8 @@ MIT License Copyright (c) 2022 premex-byggappen +Copyright (c) 2023 developers at @usefulness + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights @@ -18,4 +20,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file +SOFTWARE. diff --git a/README.md b/README.md index 98e2aa4..2917611 100644 --- a/README.md +++ b/README.md @@ -1,56 +1,47 @@ -# Gross +# lincesee-for-android +___ -Gradle Open Source Software +Turn raw [cashapp/licensee](https://github.com/cashapp/licensee) report into assets/Kotlin code that can be easily consumed from an Android app -## Plugin can be found at: -https://plugins.gradle.org/plugin/se.premex.gross +### Installation -### Getting started -Gross uses the output of another plugin which figures out all your dependencies: https://github.com/cashapp/licensee +Available on: -Add licensee and gross to your root project / module. We need both mavenCentral and gradle plugin portal for plugin resolution: +- [Gradle Plugin Portal](https://plugins.gradle.org/plugin/io.github.usefulness.licensee-for-android) +- [Maven Central](https://mvnrepository.com/artifact/io.github.usefulness/licensee-for-android) -settings.gradle.kts -```kotlin -pluginManagement { - repositories { - gradlePluginPortal() - } -} +#### Apply the plugin -dependencyResolutionManagement { - repositories { - mavenCentral() - } +```groovy +plugins { + id("app.cash.licensee") version "x.y.z" + id("io.github.usefulness.licensee-for-android") version "{{version}}" } ``` -build.gradle.kts -```kotlin -buildscript { - repositories { - mavenCentral() - } - dependencies { - classpath("app.cash.licensee:licensee-gradle-plugin:1.7.0") - } -} -plugins { - id("app.cash.licensee") - id("se.premex.gross") version "0.1.0" +### Features +- Access licenses report directly by a generated Kotlin code (accessible via static `io.github.usefulness.licensee.Licensee` object) +- Read _licensee_ report copied to projects assets directory in runtime (via `assetManager.open("licensee_artifacts.json")`) + +### Configuration + +Options can be configured in the `licenseeForAndroid` extension: + +```groovy +licenseeForAndroid { + enableKotlinCodeGeneration = false + enableAndroidAssetGeneration = true + androidAssetFileName = "licensee_artifacts.json" + singularVariantName = null } ``` -### Gradle dsl: -gross { - enableKotlinCodeGeneration.set(true) - enableAndroidAssetGeneration.set(true) -} +- `enableKotlinCodeGeneration` - Generates a static list of open source assets +- `enableAndroidAssetGeneration` - Enable asset generation. Will copy licensee report to android asset directory making it available as `androidAssetFileName` +- `androidAssetFileName` - The name of the asset file the licensee report gets copied to. +- `singularVariantName` - The name of the build variant that all variants will use to have always the same licensed, regardless of app variant. (i.e. "productionRelease") -## enableKotlinCodeGeneration -Generates a static list of open source assets in Gross.artifacts. -## enableAndroidAssetGeneration -Saves licensee report as an android asset. Default name is 'artifacts.json' but can be configured -using androidAssetFileName. Check out AssetLicenseParser for an example of how to consume the file. +### Credits +Huge thanks to [premex-ab/gross](https://github.com/premex-ab/gross) which this plugin forked from. diff --git a/app/.gitignore b/app/.gitignore deleted file mode 100644 index 42afabf..0000000 --- a/app/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/build \ No newline at end of file diff --git a/app/build.gradle.kts b/app/build.gradle.kts deleted file mode 100644 index 46e0eb8..0000000 --- a/app/build.gradle.kts +++ /dev/null @@ -1,93 +0,0 @@ -plugins { - alias(libs.plugins.com.android.application) - alias(libs.plugins.org.jetbrains.kotlin.android) - alias(libs.plugins.app.cash.licensee) - id("se.premex.gross") -} - -licensee { - allow("Apache-2.0") -} - -gross { - enableKotlinCodeGeneration.set(true) - enableAndroidAssetGeneration.set(true) -} -android { - namespace = "se.premex.gross" - compileSdk = 33 - - defaultConfig { - applicationId = "se.premex.gross" - minSdk = 24 - targetSdk = 33 - versionCode = 1 - versionName = "1.0" - - testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" - vectorDrawables { - useSupportLibrary = true - } - } - - buildTypes { - release { - isMinifyEnabled = false - proguardFiles( - getDefaultProguardFile("proguard-android-optimize.txt"), - "proguard-rules.pro" - ) - } - } - compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 - } - kotlinOptions { - jvmTarget = "1.8" - } - buildFeatures { - compose = true - } - composeOptions { - kotlinCompilerExtensionVersion = libs.versions.androidx.compose.compiler.get() - } - packagingOptions { - resources { - excludes += "/META-INF/{AL2.0,LGPL2.1}" - } - } -} - -java { - toolchain { - languageVersion.set(JavaLanguageVersion.of(17)) - vendor.set(JvmVendorSpec.AZUL) - } -} - -dependencies { - - implementation(libs.core.ktx) - implementation(libs.lifecycle.runtime.ktx) - implementation(libs.activity.compose) - implementation(platform(libs.androidx.compose.bom)) - implementation(libs.ui) - implementation(libs.ui.graphics) - implementation(libs.ui.tooling.preview) - implementation(libs.material3) - - // In theory we should be able to refer to "se.premex.gross:ui-oss" here and set a mapping up - // in the includeBuild like this - // dependencySubstitution { substitute(module("se.premex.gross:ui-oss")).using(project(":oss")) } - // Unfortunately this does not work - maybe same issue as https://youtrack.jetbrains.com/issue/KTIJ-13435 - implementation("se.premex.gross:ui:1.0") - - testImplementation(libs.junit) - androidTestImplementation(libs.androidx.test.ext.junit) - androidTestImplementation(libs.espresso.core) - androidTestImplementation(platform(libs.androidx.compose.bom)) - androidTestImplementation(libs.ui.test.junit4) - debugImplementation(libs.ui.tooling) - debugImplementation(libs.ui.test.manifest) -} \ No newline at end of file diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro deleted file mode 100644 index 481bb43..0000000 --- a/app/proguard-rules.pro +++ /dev/null @@ -1,21 +0,0 @@ -# Add project specific ProGuard rules here. -# You can control the set of applied configuration files using the -# proguardFiles setting in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} - -# Uncomment this to preserve the line number information for -# debugging stack traces. -#-keepattributes SourceFile,LineNumberTable - -# If you keep the line number information, uncomment this to -# hide the original source file name. -#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/app/src/androidTest/java/se/premex/gross/ExampleInstrumentedTest.kt b/app/src/androidTest/java/se/premex/gross/ExampleInstrumentedTest.kt deleted file mode 100644 index 32c4448..0000000 --- a/app/src/androidTest/java/se/premex/gross/ExampleInstrumentedTest.kt +++ /dev/null @@ -1,24 +0,0 @@ -package se.premex.gross - -import androidx.test.platform.app.InstrumentationRegistry -import androidx.test.ext.junit.runners.AndroidJUnit4 - -import org.junit.Test -import org.junit.runner.RunWith - -import org.junit.Assert.* - -/** - * Instrumented test, which will execute on an Android device. - * - * See [testing documentation](http://d.android.com/tools/testing). - */ -@RunWith(AndroidJUnit4::class) -class ExampleInstrumentedTest { - @Test - fun useAppContext() { - // Context of the app under test. - val appContext = InstrumentationRegistry.getInstrumentation().targetContext - assertEquals("se.premex.gross", appContext.packageName) - } -} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml deleted file mode 100644 index c2a6060..0000000 --- a/app/src/main/AndroidManifest.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/java/se/premex/gross/MainActivity.kt b/app/src/main/java/se/premex/gross/MainActivity.kt deleted file mode 100644 index 5e1f438..0000000 --- a/app/src/main/java/se/premex/gross/MainActivity.kt +++ /dev/null @@ -1,78 +0,0 @@ -package se.premex.gross - -import android.os.Bundle -import androidx.activity.ComponentActivity -import androidx.activity.compose.setContent -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.padding -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.rounded.AddCircle -import androidx.compose.material.icons.rounded.Create -import androidx.compose.material3.BottomAppBar -import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.material3.Icon -import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.NavigationBarItem -import androidx.compose.material3.Scaffold -import androidx.compose.material3.Surface -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.ui.Modifier -import androidx.compose.ui.res.stringResource -import se.premex.gross.ui.theme.GrossTheme - -enum class Views { - Programmatic, AssetBased -} - -class MainActivity : ComponentActivity() { - @OptIn(ExperimentalMaterial3Api::class) - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContent { - val selectedView = remember { mutableStateOf(Views.Programmatic) } - GrossTheme { - Scaffold( - bottomBar = { - BottomAppBar { - NavigationBarItem( - selected = false, - onClick = { - selectedView.value = Views.Programmatic - }, - icon = { - Icon( - imageVector = Icons.Rounded.Create, - contentDescription = stringResource(id = R.string.programmatic) - ) - }) - NavigationBarItem( - selected = false, - onClick = { - selectedView.value = Views.AssetBased - }, - icon = { - Icon( - imageVector = Icons.Rounded.AddCircle, - contentDescription = stringResource(id = R.string.assetBased) - ) - }) - } - } - ) { paddingValues -> - Surface( - modifier = Modifier - .fillMaxSize() - .padding(paddingValues), - color = MaterialTheme.colorScheme.background - ) { - when (selectedView.value) { - Views.Programmatic -> ProgrammaticOssView() - Views.AssetBased -> AssetsOssView() - } - } - } - } - } - } -} \ No newline at end of file diff --git a/app/src/main/java/se/premex/gross/OssArtifactView.kt b/app/src/main/java/se/premex/gross/OssArtifactView.kt deleted file mode 100644 index b20f015..0000000 --- a/app/src/main/java/se/premex/gross/OssArtifactView.kt +++ /dev/null @@ -1,53 +0,0 @@ -package se.premex.gross - -import androidx.compose.foundation.layout.Column -import androidx.compose.material3.Text -import androidx.compose.runtime.Composable -import androidx.compose.runtime.LaunchedEffect -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.ui.platform.LocalContext -import androidx.compose.ui.res.stringResource -import se.premex.gross.oss.R -import se.premex.gross.ui.AssetLicenseParser -import se.premex.gross.ui.ErrorView -import se.premex.gross.ui.LoadingView -import se.premex.gross.ui.OssView -import se.premex.gross.ui.OssViewState -import se.premex.gross.ui.State -import java.io.IOException - -@Composable -fun AssetsOssView() { - val assetManager = LocalContext.current.assets - - val licenseParser = remember { AssetLicenseParser(assetManager) } - - val uiState = remember { mutableStateOf(OssViewState()) } - - LaunchedEffect(key1 = assetManager) { - try { - uiState.value = - OssViewState(viewState = State.Success(data = licenseParser.readFromAssets())) - } catch (ioException: IOException) { - uiState.value = - OssViewState( - viewState = State.Failed( - errorMessage = ioException.localizedMessage ?: "" - ) - ) - } - } - - when (val state = uiState.value.viewState) { - is State.Failed -> ErrorView(stringResource(id = R.string.error), state.errorMessage) - is State.Loading -> LoadingView(stringResource(id = R.string.loading)) - is State.Success -> { - Column { - Text(text = stringResource(id = se.premex.gross.R.string.assetBased)) - - OssView(state.data) - } - } - } -} \ No newline at end of file diff --git a/app/src/main/java/se/premex/gross/OssKotlinCodeView.kt b/app/src/main/java/se/premex/gross/OssKotlinCodeView.kt deleted file mode 100644 index d800ee4..0000000 --- a/app/src/main/java/se/premex/gross/OssKotlinCodeView.kt +++ /dev/null @@ -1,39 +0,0 @@ -package se.premex.gross - -import androidx.compose.foundation.layout.Column -import androidx.compose.material3.Text -import androidx.compose.runtime.Composable -import androidx.compose.ui.res.stringResource -import se.premex.gross.core.Artifact -import se.premex.gross.core.Scm -import se.premex.gross.core.SpdxLicenses -import se.premex.gross.core.UnknownLicenses -import se.premex.gross.ui.OssView - -@Composable -fun ProgrammaticOssView() { - Column { - Text(text = stringResource(id = R.string.programmatic)) - OssView(Gross.artifacts.map { artifact -> - Artifact( - name = artifact.name, - groupId = artifact.groupId, - artifactId = artifact.artifactId, - version = artifact.version, - scm = if (artifact.scm?.url != null) { - Scm(artifact.scm.url) - } else { - null - }, - spdxLicenses = artifact.spdxLicenses.map { - SpdxLicenses( - identifier = it.identifier, - name = it.name, - url = it.url - ) - }, unknownLicenses = artifact.unknownLicenses.map { - UnknownLicenses(name = it.name, url = it.url) - }) - }) - } -} \ No newline at end of file diff --git a/app/src/main/java/se/premex/gross/ui/theme/Color.kt b/app/src/main/java/se/premex/gross/ui/theme/Color.kt deleted file mode 100644 index d1dda7a..0000000 --- a/app/src/main/java/se/premex/gross/ui/theme/Color.kt +++ /dev/null @@ -1,11 +0,0 @@ -package se.premex.gross.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 --git a/app/src/main/java/se/premex/gross/ui/theme/Theme.kt b/app/src/main/java/se/premex/gross/ui/theme/Theme.kt deleted file mode 100644 index 9266d67..0000000 --- a/app/src/main/java/se/premex/gross/ui/theme/Theme.kt +++ /dev/null @@ -1,70 +0,0 @@ -package se.premex.gross.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.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 GrossTheme( - 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 --git a/app/src/main/java/se/premex/gross/ui/theme/Type.kt b/app/src/main/java/se/premex/gross/ui/theme/Type.kt deleted file mode 100644 index c78bce2..0000000 --- a/app/src/main/java/se/premex/gross/ui/theme/Type.kt +++ /dev/null @@ -1,34 +0,0 @@ -package se.premex.gross.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 --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml deleted file mode 100644 index 07d5da9..0000000 --- a/app/src/main/res/drawable/ic_launcher_background.xml +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/drawable/ic_launcher_foreground.xml b/app/src/main/res/drawable/ic_launcher_foreground.xml deleted file mode 100644 index 2b068d1..0000000 --- a/app/src/main/res/drawable/ic_launcher_foreground.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml deleted file mode 100644 index 6f3b755..0000000 --- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml deleted file mode 100644 index 6f3b755..0000000 --- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/app/src/main/res/mipmap-hdpi/ic_launcher.webp deleted file mode 100644 index c209e78..0000000 Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp deleted file mode 100644 index b2dfe3d..0000000 Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/app/src/main/res/mipmap-mdpi/ic_launcher.webp deleted file mode 100644 index 4f0f1d6..0000000 Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp deleted file mode 100644 index 62b611d..0000000 Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp deleted file mode 100644 index 948a307..0000000 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp deleted file mode 100644 index 1b9a695..0000000 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp deleted file mode 100644 index 28d4b77..0000000 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp deleted file mode 100644 index 9287f50..0000000 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp deleted file mode 100644 index aa7d642..0000000 Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp deleted file mode 100644 index 9126ae3..0000000 Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp and /dev/null differ diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml deleted file mode 100644 index f8c6127..0000000 --- a/app/src/main/res/values/colors.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - #FFBB86FC - #FF6200EE - #FF3700B3 - #FF03DAC5 - #FF018786 - #FF000000 - #FFFFFFFF - \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml deleted file mode 100644 index ed25f78..0000000 --- a/app/src/main/res/values/strings.xml +++ /dev/null @@ -1,7 +0,0 @@ - - Gross - Programmatic oss view - Asset baset oss view - Error - Loading - \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml deleted file mode 100644 index b8582c9..0000000 --- a/app/src/main/res/values/themes.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - -