diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d5f5466e..e2a0da98 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,4 +1,4 @@ -image: registry.gitlab.com/fdroid/ci-images-client +image: registry.gitlab.com/fdroid/fdroidserver:buildserver-bullseye variables: GIT_SUBMODULE_STRATEGY: recursive @@ -6,16 +6,42 @@ variables: before_script: - export GRADLE_USER_HOME=`pwd`/.gradle +.base: + before_script: + - test -e /etc/apt/sources.list.d/bullseye-backports.list + || echo "deb http://deb.debian.org/debian bullseye-backports main" >> /etc/apt/sources.list + - apt update + - apt-get -qy install -t bullseye-backports --no-install-recommends git sdkmanager + + - test -n "$ANDROID_HOME" || source /etc/profile.d/bsenv.sh + + - export cmdline_tools_latest="$ANDROID_HOME/cmdline-tools/latest/bin" + - test -e $cmdline_tools_latest && export PATH="$cmdline_tools_latest:$PATH" + + - export GRADLE_USER_HOME=$PWD/.gradle + - export ANDROID_COMPILE_SDK=`sed -n 's,.*compileSdkVersion\s*\([0-9][0-9]*\).*,\1,p' app/build.gradle` + - echo y | sdkmanager "platforms;android-${ANDROID_COMPILE_SDK}" > /dev/null + + - apt-get update || apt-get update + - apt-get install -y openjdk-17-jdk-headless + - update-alternatives --auto java + after_script: + # this file changes every time but should not be cached + - rm -f $GRADLE_USER_HOME/caches/modules-2/modules-2.lock + - rm -fr $GRADLE_USER_HOME/caches/*/plugin-resolution/ + cache: + paths: + - .gradle/wrapper + - .gradle/caches + + # Basic android and gradle stuff # Check linting lintDebug: + extends: .base interruptible: true stage: build script: - - apt-get update || apt-get update - - apt-get install -y openjdk-11-jdk-headless - - update-alternatives --auto java - - ./gradlew checkLicenses - ./gradlew -Pci --console=plain :app:lintDebug -PbuildDir=lint --write-verification-metadata sha256 - git diff --quiet gradle/verification-metadata.xml || (echo 'Verification of dependencies failed!' && exit 1) artifacts: @@ -26,14 +52,12 @@ lintDebug: # Make Project assembleDebug: + extends: .base interruptible: true stage: build tags: - server_artectrex script: - - apt-get update || apt-get update - - apt-get install -y openjdk-11-jdk-headless - - update-alternatives --auto java - ./gradlew assembleDebug artifacts: paths: @@ -41,15 +65,14 @@ assembleDebug: # Run all tests, if any fails, interrupt the pipeline (fail it) debugTests: + extends: .base interruptible: true stage: test script: - - apt-get update || apt-get update - - apt-get install -y openjdk-11-jdk-headless - - update-alternatives --auto java - ./gradlew -Pci --console=plain :app:testDebug -x lint .connected-template: &connected-template + extends: .base allow_failure: true stage: test script: @@ -58,9 +81,6 @@ debugTests: - adb devices - adb shell input keyevent 82 & # Switch to right java version for building the app - - apt-get update || apt-get update - - apt-get install -y openjdk-11-jdk-headless - - update-alternatives --auto java - ./gradlew connectedStagingAndroidTest --info || (adb -e logcat -d > logcat.txt; exit 1) artifacts: paths: diff --git a/app/build.gradle b/app/build.gradle index 65495e19..6113e9d3 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,16 +1,18 @@ import com.android.build.api.dsl.ManagedVirtualDevice plugins { - id "com.cookpad.android.plugin.license-tools" version "1.2.8" + id "com.mikepenz.aboutlibraries.plugin" version "10.5.2" } apply plugin: 'com.android.application' apply plugin: 'kotlin-android' +apply plugin: 'com.mikepenz.aboutlibraries.plugin' apply plugin: 'kotlin-kapt' apply plugin: 'jacoco' apply plugin: "kotlin-parcelize" + // Force latest version of Jacoco, initially done to resolve https://github.com/jacoco/jacoco/issues/1155 jacoco.toolVersion = "0.8.7" @@ -25,6 +27,7 @@ android { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } + kotlinOptions { jvmTarget = JavaVersion.VERSION_1_8 freeCompilerArgs += ["-opt-in=kotlin.RequiresOptIn"] @@ -236,6 +239,8 @@ dependencies { implementation 'me.relex:circleindicator:2.1.6' + implementation "com.mikepenz:aboutlibraries-core:10.5.2" + /** * Not in release, so not mentioned in licenses list */ diff --git a/app/src/main/assets/licenses.json b/app/src/main/assets/licenses.json deleted file mode 100644 index 099d62fd..00000000 --- a/app/src/main/assets/licenses.json +++ /dev/null @@ -1 +0,0 @@ -{"libraries":[{"artifactId":{"name":"materialdrawer-nav","group":"com.mikepenz","version":"+"},"copyrightHolder":"Mike Penz and contributors","copyrightStatement":"Copyright © Mike Penz and contributors. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://github.com/mikepenz/MaterialDrawer","libraryName":"materialdrawer-nav"},{"artifactId":{"name":"materialdrawer-iconics","group":"com.mikepenz","version":"+"},"copyrightHolder":"Mike Penz and contributors","copyrightStatement":"Copyright © Mike Penz and contributors. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://github.com/mikepenz/MaterialDrawer","libraryName":"materialdrawer-iconics"},{"artifactId":{"name":"materialdrawer","group":"com.mikepenz","version":"+"},"copyrightHolder":"Mike Penz and contributors","copyrightStatement":"Copyright © Mike Penz and contributors. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://github.com/mikepenz/MaterialDrawer","libraryName":"materialdrawer"},{"artifactId":{"name":"startup-runtime","group":"androidx.startup","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/jetpack/androidx/releases/startup#1.0.0","libraryName":"startup-runtime"},{"artifactId":{"name":"iconics-views","group":"com.mikepenz","version":"+"},"copyrightHolder":"Mike Penz and contributors","copyrightStatement":"Copyright © Mike Penz and contributors. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://github.com/mikepenz/Android-Iconics","libraryName":"iconics-views"},{"artifactId":{"name":"iconics-core","group":"com.mikepenz","version":"+"},"copyrightHolder":"Mike Penz and contributors","copyrightStatement":"Copyright © Mike Penz and contributors. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://github.com/mikepenz/Android-Iconics","libraryName":"iconics-core"},{"artifactId":{"name":"iconics-typeface-api","group":"com.mikepenz","version":"+"},"copyrightHolder":"Mike Penz and contributors","copyrightStatement":"Copyright © Mike Penz and contributors. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://github.com/mikepenz/Android-Iconics","libraryName":"iconics-typeface-api"},{"artifactId":{"name":"kotlin-stdlib-jdk8","group":"org.jetbrains.kotlin","version":"+"},"copyrightHolder":"JetBrains s.r.o. and contributors","copyrightStatement":"Copyright © JetBrains s.r.o. and contributors. All rights reserved.","license":"The Apache License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://kotlinlang.org/","libraryName":"kotlin-stdlib-jdk8"},{"artifactId":{"name":"kotlin-stdlib-jdk7","group":"org.jetbrains.kotlin","version":"+"},"copyrightHolder":"JetBrains s.r.o. and contributors","copyrightStatement":"Copyright © JetBrains s.r.o. and contributors. All rights reserved.","license":"The Apache License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://kotlinlang.org/","libraryName":"kotlin-stdlib-jdk7"},{"artifactId":{"name":"preference","group":"androidx.preference","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/jetpack/androidx","libraryName":"preference"},{"artifactId":{"name":"constraintlayout","group":"androidx.constraintlayout","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"http://tools.android.com","libraryName":"constraintlayout"},{"artifactId":{"name":"camera-view","group":"androidx.camera","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/jetpack/androidx/releases/camera#1.0.0-alpha15","libraryName":"camera-view"},{"artifactId":{"name":"navigation-ui-ktx","group":"androidx.navigation","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/topic/libraries/architecture/index.html","libraryName":"navigation-ui-ktx"},{"artifactId":{"name":"navigation-ui","group":"androidx.navigation","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/topic/libraries/architecture/index.html","libraryName":"navigation-ui"},{"artifactId":{"name":"dexter","group":"com.karumi","version":"+"},"copyrightHolder":"Karumi and contributors","copyrightStatement":"Copyright © Karumi and contributors. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://github.com/karumi/Dexter","libraryName":"dexter"},{"artifactId":{"name":"material","group":"com.google.android.material","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://github.com/material-components/material-components-android","libraryName":"material"},{"artifactId":{"name":"dagger-android-support","group":"com.google.dagger","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"Apache 2.0","licenseUrl":"https://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://github.com/google/dagger","libraryName":"dagger-android-support"},{"artifactId":{"name":"imagefilters","group":"info.androidhive","version":"+"},"copyrightHolder":"Zomato and ravi8x","copyrightStatement":"Copyright © Zomato and ravi8x. All rights reserved.","license":"The Apache Software License, Version 2.0","normalizedLicense":"apache2","libraryName":"imagefilters"},{"artifactId":{"name":"ucrop","group":"com.github.yalantis","version":"+"},"copyrightHolder":"Yalantis","copyrightStatement":"Copyright © Yalantis. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0","normalizedLicense":"apache2","url":"https://github.com/Yalantis/uCrop","libraryName":"ucrop"},{"artifactId":{"name":"tracedroid","group":"com.github.ligi","version":"+"},"copyrightHolder":"ligi","copyrightStatement":"Copyright © ligi. All rights reserved.","license":"The Apache Software License, Version 2.0","normalizedLicense":"apache2","url":"https://github.com/ligi/tracedroid","libraryName":"tracedroid"},{"artifactId":{"name":"supportemail","group":"com.github.ligi.tracedroid","version":"+"},"copyrightHolder":"ligi","copyrightStatement":"Copyright © ligi. All rights reserved.","license":"The Apache Software License, Version 2.0","normalizedLicense":"apache2","url":"https://github.com/ligi/tracedroid","libraryName":"supportemail"},{"artifactId":{"name":"lib","group":"com.github.ligi.tracedroid","version":"+"},"copyrightHolder":"ligi","copyrightStatement":"Copyright © ligi. All rights reserved.","license":"The Apache Software License, Version 2.0","normalizedLicense":"apache2","url":"https://github.com/ligi/tracedroid","libraryName":"lib"},{"artifactId":{"name":"timber","group":"com.jakewharton.timber","version":"+"},"copyrightHolder":"Jake Wharton and contributors","copyrightStatement":"Copyright © Jake Wharton and contributors. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://github.com/JakeWharton/timber","libraryName":"timber"},{"artifactId":{"name":"fastadapter-extensions-expandable","group":"com.mikepenz","version":"+"},"copyrightHolder":"Mike Penz and contributors","copyrightStatement":"Copyright © Mike Penz and contributors. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://github.com/mikepenz/FastAdapter","libraryName":"fastadapter-extensions-expandable"},{"artifactId":{"name":"fastadapter","group":"com.mikepenz","version":"+"},"copyrightHolder":"Mike Penz and contributors","copyrightStatement":"Copyright © Mike Penz and contributors. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://github.com/mikepenz/FastAdapter","libraryName":"fastadapter"},{"artifactId":{"name":"appcompat","group":"androidx.appcompat","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/jetpack/androidx","libraryName":"appcompat"},{"artifactId":{"name":"navigation-fragment-ktx","group":"androidx.navigation","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/topic/libraries/architecture/index.html","libraryName":"navigation-fragment-ktx"},{"artifactId":{"name":"fragment-ktx","group":"androidx.fragment","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/jetpack/androidx","libraryName":"fragment-ktx"},{"artifactId":{"name":"navigation-runtime-ktx","group":"androidx.navigation","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/topic/libraries/architecture/index.html","libraryName":"navigation-runtime-ktx"},{"artifactId":{"name":"navigation-common-ktx","group":"androidx.navigation","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/topic/libraries/architecture/index.html","libraryName":"navigation-common-ktx"},{"artifactId":{"name":"activity-ktx","group":"androidx.activity","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/jetpack/androidx","libraryName":"activity-ktx"},{"artifactId":{"name":"core-ktx","group":"androidx.core","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/jetpack/androidx","libraryName":"core-ktx"},{"artifactId":{"name":"navigation-fragment","group":"androidx.navigation","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/topic/libraries/architecture/index.html","libraryName":"navigation-fragment"},{"artifactId":{"name":"browser","group":"androidx.browser","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/jetpack/androidx","libraryName":"browser"},{"artifactId":{"name":"paging-runtime-ktx","group":"androidx.paging","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"http://developer.android.com/tools/extras/support-library.html","libraryName":"paging-runtime-ktx"},{"artifactId":{"name":"paging-runtime","group":"androidx.paging","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/topic/libraries/architecture/index.html","libraryName":"paging-runtime"},{"artifactId":{"name":"viewpager2","group":"androidx.viewpager2","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/jetpack/androidx","libraryName":"viewpager2"},{"artifactId":{"name":"recyclerview","group":"androidx.recyclerview","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/jetpack/androidx","libraryName":"recyclerview"},{"artifactId":{"name":"legacy-support-v4","group":"androidx.legacy","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"http://developer.android.com/tools/extras/support-library.html","libraryName":"legacy-support-v4"},{"artifactId":{"name":"legacy-support-core-ui","group":"androidx.legacy","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"http://developer.android.com/tools/extras/support-library.html","libraryName":"legacy-support-core-ui"},{"artifactId":{"name":"swiperefreshlayout","group":"androidx.swiperefreshlayout","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/jetpack/androidx","libraryName":"swiperefreshlayout"},{"artifactId":{"name":"lifecycle-livedata-ktx","group":"androidx.lifecycle","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/jetpack/androidx","libraryName":"lifecycle-livedata-ktx"},{"artifactId":{"name":"glide","group":"com.github.bumptech.glide","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"Simplified BSD License","licenseUrl":"http://www.opensource.org/licenses/bsd-license","normalizedLicense":"bsd_2_clauses","url":"https://github.com/bumptech/glide","libraryName":"glide"},{"artifactId":{"name":"fragment","group":"androidx.fragment","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/jetpack/androidx","libraryName":"fragment"},{"artifactId":{"name":"navigation-runtime","group":"androidx.navigation","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/topic/libraries/architecture/index.html","libraryName":"navigation-runtime"},{"artifactId":{"name":"activity","group":"androidx.activity","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/jetpack/androidx","libraryName":"activity"},{"artifactId":{"name":"lifecycle-viewmodel-savedstate","group":"androidx.lifecycle","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/topic/libraries/architecture/index.html","libraryName":"lifecycle-viewmodel-savedstate"},{"artifactId":{"name":"lifecycle-runtime-ktx","group":"androidx.lifecycle","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/jetpack/androidx","libraryName":"lifecycle-runtime-ktx"},{"artifactId":{"name":"camera-camera2","group":"androidx.camera","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/jetpack/androidx/releases/camera#1.0.0-beta08","libraryName":"camera-camera2"},{"artifactId":{"name":"camera-lifecycle","group":"androidx.camera","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/jetpack/androidx/releases/camera#1.0.0-beta08","libraryName":"camera-lifecycle"},{"artifactId":{"name":"camera-core","group":"androidx.camera","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/jetpack/androidx/releases/camera#1.0.0-beta08","libraryName":"camera-core"},{"artifactId":{"name":"dagger-android","group":"com.google.dagger","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"Apache 2.0","licenseUrl":"https://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://github.com/google/dagger","libraryName":"dagger-android"},{"artifactId":{"name":"cursoradapter","group":"androidx.cursoradapter","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"http://developer.android.com/tools/extras/support-library.html","libraryName":"cursoradapter"},{"artifactId":{"name":"appcompat-resources","group":"androidx.appcompat","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/jetpack/androidx","libraryName":"appcompat-resources"},{"artifactId":{"name":"drawerlayout","group":"androidx.drawerlayout","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/jetpack/androidx","libraryName":"drawerlayout"},{"artifactId":{"name":"coordinatorlayout","group":"androidx.coordinatorlayout","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/jetpack/androidx","libraryName":"coordinatorlayout"},{"artifactId":{"name":"viewpager","group":"androidx.viewpager","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"http://developer.android.com/tools/extras/support-library.html","libraryName":"viewpager"},{"artifactId":{"name":"slidingpanelayout","group":"androidx.slidingpanelayout","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"http://developer.android.com/tools/extras/support-library.html","libraryName":"slidingpanelayout"},{"artifactId":{"name":"customview","group":"androidx.customview","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/jetpack/androidx","libraryName":"customview"},{"artifactId":{"name":"transition","group":"androidx.transition","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/jetpack/androidx","libraryName":"transition"},{"artifactId":{"name":"vectordrawable-animated","group":"androidx.vectordrawable","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/jetpack/androidx","libraryName":"vectordrawable-animated"},{"artifactId":{"name":"vectordrawable","group":"androidx.vectordrawable","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/jetpack/androidx","libraryName":"vectordrawable"},{"artifactId":{"name":"media","group":"androidx.media","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"http://developer.android.com/tools/extras/support-library.html","libraryName":"media"},{"artifactId":{"name":"legacy-support-core-utils","group":"androidx.legacy","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"http://developer.android.com/tools/extras/support-library.html","libraryName":"legacy-support-core-utils"},{"artifactId":{"name":"loader","group":"androidx.loader","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"http://developer.android.com/tools/extras/support-library.html","libraryName":"loader"},{"artifactId":{"name":"navigation-common","group":"androidx.navigation","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/topic/libraries/architecture/index.html","libraryName":"navigation-common"},{"artifactId":{"name":"asynclayoutinflater","group":"androidx.asynclayoutinflater","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"http://developer.android.com/tools/extras/support-library.html","libraryName":"asynclayoutinflater"},{"artifactId":{"name":"core","group":"androidx.core","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/jetpack/androidx","libraryName":"core"},{"artifactId":{"name":"versionedparcelable","group":"androidx.versionedparcelable","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"http://developer.android.com/tools/extras/support-library.html","libraryName":"versionedparcelable"},{"artifactId":{"name":"collection-ktx","group":"androidx.collection","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"http://developer.android.com/tools/extras/support-library.html","libraryName":"collection-ktx"},{"artifactId":{"name":"collection","group":"androidx.collection","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"http://developer.android.com/tools/extras/support-library.html","libraryName":"collection"},{"artifactId":{"name":"concurrent-futures","group":"androidx.concurrent","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/topic/libraries/architecture/index.html","libraryName":"concurrent-futures"},{"artifactId":{"name":"interpolator","group":"androidx.interpolator","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"http://developer.android.com/tools/extras/support-library.html","libraryName":"interpolator"},{"artifactId":{"name":"savedstate","group":"androidx.savedstate","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/jetpack/androidx","libraryName":"savedstate"},{"artifactId":{"name":"lifecycle-viewmodel-ktx","group":"androidx.lifecycle","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/jetpack/androidx","libraryName":"lifecycle-viewmodel-ktx"},{"artifactId":{"name":"lifecycle-viewmodel","group":"androidx.lifecycle","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/topic/libraries/architecture/index.html","libraryName":"lifecycle-viewmodel"},{"artifactId":{"name":"lifecycle-runtime","group":"androidx.lifecycle","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/topic/libraries/architecture/index.html","libraryName":"lifecycle-runtime"},{"artifactId":{"name":"room-ktx","group":"androidx.room","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/topic/libraries/architecture/index.html","libraryName":"room-ktx"},{"artifactId":{"name":"room-runtime","group":"androidx.room","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/topic/libraries/architecture/index.html","libraryName":"room-runtime"},{"artifactId":{"name":"room-common","group":"androidx.room","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/topic/libraries/architecture/index.html","libraryName":"room-common"},{"artifactId":{"name":"sqlite-framework","group":"androidx.sqlite","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/topic/libraries/architecture/index.html","libraryName":"sqlite-framework"},{"artifactId":{"name":"sqlite","group":"androidx.sqlite","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/topic/libraries/architecture/index.html","libraryName":"sqlite"},{"artifactId":{"name":"cardview","group":"androidx.cardview","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"http://developer.android.com/tools/extras/support-library.html","libraryName":"cardview"},{"artifactId":{"name":"exifinterface","group":"androidx.exifinterface","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/jetpack/androidx","libraryName":"exifinterface"},{"artifactId":{"name":"gifdecoder","group":"com.github.bumptech.glide","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"Simplified BSD License","licenseUrl":"http://www.opensource.org/licenses/bsd-license","normalizedLicense":"bsd_2_clauses","url":"https://github.com/bumptech/glide","libraryName":"gifdecoder"},{"artifactId":{"name":"paging-common-ktx","group":"androidx.paging","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"http://developer.android.com/tools/extras/support-library.html","libraryName":"paging-common-ktx"},{"artifactId":{"name":"constraintlayout-core","group":"androidx.constraintlayout","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"http://tools.android.com","libraryName":"constraintlayout-core"},{"artifactId":{"name":"lifecycle-process","group":"androidx.lifecycle","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/topic/libraries/architecture/index.html","libraryName":"lifecycle-process"},{"artifactId":{"name":"lifecycle-service","group":"androidx.lifecycle","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/topic/libraries/architecture/index.html","libraryName":"lifecycle-service"},{"artifactId":{"name":"work-runtime-ktx","group":"androidx.work","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/jetpack/androidx/releases/work#2.5.0","libraryName":"work-runtime-ktx"},{"artifactId":{"name":"work-runtime","group":"androidx.work","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/jetpack/androidx/releases/work#2.5.0","libraryName":"work-runtime"},{"artifactId":{"name":"paging-common","group":"androidx.paging","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/topic/libraries/architecture/index.html","libraryName":"paging-common"},{"artifactId":{"name":"lifecycle-livedata","group":"androidx.lifecycle","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/topic/libraries/architecture/index.html","libraryName":"lifecycle-livedata"},{"artifactId":{"name":"lifecycle-livedata-core-ktx","group":"androidx.lifecycle","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/jetpack/androidx","libraryName":"lifecycle-livedata-core-ktx"},{"artifactId":{"name":"lifecycle-livedata-core","group":"androidx.lifecycle","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/topic/libraries/architecture/index.html","libraryName":"lifecycle-livedata-core"},{"artifactId":{"name":"core-runtime","group":"androidx.arch.core","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/topic/libraries/architecture/index.html","libraryName":"core-runtime"},{"artifactId":{"name":"core-common","group":"androidx.arch.core","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/topic/libraries/architecture/index.html","libraryName":"core-common"},{"artifactId":{"name":"lifecycle-common","group":"androidx.lifecycle","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/topic/libraries/architecture/index.html","libraryName":"lifecycle-common"},{"artifactId":{"name":"documentfile","group":"androidx.documentfile","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"http://developer.android.com/tools/extras/support-library.html","libraryName":"documentfile"},{"artifactId":{"name":"localbroadcastmanager","group":"androidx.localbroadcastmanager","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"http://developer.android.com/tools/extras/support-library.html","libraryName":"localbroadcastmanager"},{"artifactId":{"name":"print","group":"androidx.print","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"http://developer.android.com/tools/extras/support-library.html","libraryName":"print"},{"artifactId":{"name":"annotation","group":"androidx.annotation","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"http://developer.android.com/tools/extras/support-library.html","libraryName":"annotation"},{"artifactId":{"name":"converter-gson","group":"com.squareup.retrofit2","version":"+"},"copyrightHolder":"Square, Inc.","copyrightStatement":"Copyright © Square, Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://github.com/square/retrofit","libraryName":"converter-gson"},{"artifactId":{"name":"adapter-rxjava3","group":"com.squareup.retrofit2","version":"+"},"copyrightHolder":"Square, Inc.","copyrightStatement":"Copyright © Square, Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://github.com/square/retrofit","libraryName":"adapter-rxjava3"},{"artifactId":{"name":"retrofit","group":"com.squareup.retrofit2","version":"+"},"copyrightHolder":"Square, Inc.","copyrightStatement":"Copyright © Square, Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://github.com/square/retrofit","libraryName":"retrofit"},{"artifactId":{"name":"okhttp","group":"com.squareup.okhttp3","version":"+"},"copyrightHolder":"Square, Inc.","copyrightStatement":"Copyright © Square, Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://square.github.io/okhttp/","libraryName":"okhttp"},{"artifactId":{"name":"rxandroid","group":"io.reactivex.rxjava3","version":"+"},"copyrightHolder":"Netflix, Inc","copyrightStatement":"Copyright © Netflix, Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://github.com/ReactiveX/RxAndroid","libraryName":"rxandroid"},{"artifactId":{"name":"rxjava","group":"io.reactivex.rxjava3","version":"+"},"copyrightHolder":"Netflix, Inc.","copyrightStatement":"Copyright © Netflix, Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://github.com/ReactiveX/RxJava","libraryName":"rxjava"},{"artifactId":{"name":"sparkbutton","group":"com.github.connyduck","version":"+"},"copyrightHolder":"varunest and ConnyDuck","copyrightStatement":"Copyright © varunest and ConnyDuck. All rights reserved.","license":"The Apache License, Version 2.0","licenseUrl":"https://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://github.com/connyduck/sparkbutton","libraryName":"sparkbutton"},{"artifactId":{"name":"recyclerview-integration","group":"com.github.bumptech.glide","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"Simplified BSD License","licenseUrl":"http://www.opensource.org/licenses/bsd-license","normalizedLicense":"bsd_2_clauses","url":"https://github.com/bumptech/glide","libraryName":"recyclerview-integration"},{"artifactId":{"name":"google-material-typeface","group":"com.mikepenz","version":"+"},"copyrightHolder":"Mike Penz and contributors","copyrightStatement":"Copyright © Mike Penz and contributors. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://github.com/mikepenz/Android-Iconics","libraryName":"google-material-typeface"},{"artifactId":{"name":"kotlinx-coroutines-android","group":"org.jetbrains.kotlinx","version":"+"},"copyrightHolder":"JetBrains s.r.o. and contributors","copyrightStatement":"Copyright © JetBrains s.r.o. and contributors. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"https://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://github.com/Kotlin/kotlinx.coroutines","libraryName":"kotlinx-coroutines-android"},{"artifactId":{"name":"kotlinx-coroutines-core-jvm","group":"org.jetbrains.kotlinx","version":"+"},"copyrightHolder":"JetBrains s.r.o. and contributors","copyrightStatement":"Copyright © JetBrains s.r.o. and contributors. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"https://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://github.com/Kotlin/kotlinx.coroutines","libraryName":"kotlinx-coroutines-core-jvm"},{"artifactId":{"name":"okio","group":"com.squareup.okio","version":"+"},"copyrightHolder":"Square, Inc.","copyrightStatement":"Copyright © Square, Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://github.com/square/okio/","libraryName":"okio"},{"artifactId":{"name":"kotlin-stdlib","group":"org.jetbrains.kotlin","version":"+"},"copyrightHolder":"JetBrains s.r.o. and contributors","copyrightStatement":"Copyright © JetBrains s.r.o. and contributors. All rights reserved.","license":"The Apache License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://kotlinlang.org/","libraryName":"kotlin-stdlib"},{"artifactId":{"name":"listenablefuture","group":"com.google.guava","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","normalizedLicense":"apache2","libraryName":"listenablefuture"},{"artifactId":{"name":"annotation-experimental","group":"androidx.annotation","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/jetpack/androidx","libraryName":"annotation-experimental"},{"artifactId":{"name":"auto-value-annotations","group":"com.google.auto.value","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","normalizedLicense":"apache2","libraryName":"auto-value-annotations"},{"artifactId":{"name":"dagger","group":"com.google.dagger","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"Apache 2.0","licenseUrl":"https://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://github.com/google/dagger","libraryName":"dagger"},{"artifactId":{"name":"dagger-lint-aar","group":"com.google.dagger","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"Apache 2.0","licenseUrl":"https://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://github.com/google/dagger","libraryName":"dagger-lint-aar"},{"artifactId":{"name":"javax.inject","group":"javax.inject","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"http://code.google.com/p/atinject/","libraryName":"javax.inject"},{"artifactId":{"name":"gson","group":"com.google.code.gson","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","normalizedLicense":"apache2","libraryName":"gson"},{"artifactId":{"name":"disklrucache","group":"com.github.bumptech.glide","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"Simplified BSD License","licenseUrl":"http://www.opensource.org/licenses/bsd-license","normalizedLicense":"bsd_2_clauses","url":"https://github.com/bumptech/glide","libraryName":"disklrucache"},{"artifactId":{"name":"annotations","group":"com.github.bumptech.glide","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"Simplified BSD License","licenseUrl":"http://www.opensource.org/licenses/bsd-license","normalizedLicense":"bsd_2_clauses","url":"https://github.com/bumptech/glide","libraryName":"annotations"},{"artifactId":{"name":"kotlin-stdlib-common","group":"org.jetbrains.kotlin","version":"+"},"copyrightHolder":"JetBrains s.r.o. and contributors","copyrightStatement":"Copyright © JetBrains s.r.o. and contributors. All rights reserved.","license":"The Apache License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://kotlinlang.org/","libraryName":"kotlin-stdlib-common"},{"artifactId":{"name":"annotations","group":"org.jetbrains","version":"+"},"copyrightHolder":"JetBrains s.r.o. and contributors","copyrightStatement":"Copyright © JetBrains s.r.o. and contributors. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"http://www.jetbrains.org","libraryName":"annotations"},{"artifactId":{"name":"gridlayout","group":"androidx.gridlayout","version":"+"},"copyrightHolder":"Google Inc","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"http://developer.android.com/tools/extras/support-library.html","libraryName":"gridlayout"},{"artifactId":{"name":"preference-ktx","group":"androidx.preference","version":"+"},"copyrightHolder":"Google Inc","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/jetpack/androidx","libraryName":"preference-ktx"},{"artifactId":{"name":"databinding-common","group":"androidx.databinding","version":"+"},"copyrightHolder":"Google Inc","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/studio","libraryName":"databinding-common"},{"artifactId":{"name":"lifecycle-common-java8","group":"androidx.lifecycle","version":"+"},"copyrightHolder":"Google Inc","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/topic/libraries/architecture/index.html","libraryName":"lifecycle-common-java8"},{"artifactId":{"name":"circleindicator","group":"me.relex","version":"+"},"copyrightHolder":"relex and contributors","copyrightStatement":"Copyright © relex and contributors. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://github.com/ongakuer/CircleIndicator","libraryName":"circleindicator"},{"artifactId":{"name":"dynamicanimation","group":"androidx.dynamicanimation","version":"+"},"copyrightHolder":"Google Inc","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"http://developer.android.com/tools/extras/support-library.html","libraryName":"dynamicanimation"},{"artifactId":{"name":"savedstate-ktx","group":"androidx.savedstate","version":"+"},"copyrightHolder":"Google Inc","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/jetpack/androidx/releases/savedstate#1.1.0","libraryName":"savedstate-ktx"},{"artifactId":{"name":"tracing","group":"androidx.tracing","version":"+"},"copyrightHolder":"Google Inc","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/jetpack/androidx/releases/tracing#1.0.0","libraryName":"tracing"},{"artifactId":{"name":"emoji2-views-helper","group":"androidx.emoji2","version":"+"},"copyrightHolder":"Google Inc","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/jetpack/androidx/releases/emoji2#1.0.0","libraryName":"emoji2-views-helper"},{"artifactId":{"name":"emoji2","group":"androidx.emoji2","version":"+"},"copyrightHolder":"Google Inc","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/jetpack/androidx/releases/emoji2#1.0.0","libraryName":"emoji2"},{"artifactId":{"name":"resourceinspection-annotation","group":"androidx.resourceinspection","version":"+"},"copyrightHolder":"Google Inc","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/jetpack/androidx/releases/resourceinspection#1.0.0","libraryName":"resourceinspection-annotation"},{"artifactId":{"name":"room-paging","group":"androidx.room","version":"+"},"copyrightHolder":"Google Inc","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/jetpack/androidx/releases/room#2.4.1","libraryName":"room-paging"},{"artifactId":{"name":"window","group":"androidx.window","version":"+"},"copyrightHolder":"Google Inc","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/jetpack/androidx/releases/window#1.0.0","libraryName":"window"},{"artifactId":{"name":"animated-vector-drawable","group":"com.android.support","version":"+"},"copyrightHolder":"Google Inc","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"http://developer.android.com/tools/extras/support-library.html","libraryName":"animated-vector-drawable"},{"artifactId":{"name":"appcompat-v7","group":"com.android.support","version":"+"},"copyrightHolder":"Google Inc","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"http://developer.android.com/tools/extras/support-library.html","libraryName":"appcompat-v7"},{"artifactId":{"name":"support-annotations","group":"com.android.support","version":"+"},"copyrightHolder":"Google Inc","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"http://developer.android.com/tools/extras/support-library.html","libraryName":"support-annotations"},{"artifactId":{"name":"support-compat","group":"com.android.support","version":"+"},"copyrightHolder":"Google Inc","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"http://developer.android.com/tools/extras/support-library.html","libraryName":"support-compat"},{"artifactId":{"name":"support-core-ui","group":"com.android.support","version":"+"},"copyrightHolder":"Google Inc","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"http://developer.android.com/tools/extras/support-library.html","libraryName":"support-core-ui"},{"artifactId":{"name":"support-core-utils","group":"com.android.support","version":"+"},"copyrightHolder":"Google Inc","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"http://developer.android.com/tools/extras/support-library.html","libraryName":"support-core-utils"},{"artifactId":{"name":"support-fragment","group":"com.android.support","version":"+"},"copyrightHolder":"Google Inc","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"http://developer.android.com/tools/extras/support-library.html","libraryName":"support-fragment"},{"artifactId":{"name":"support-media-compat","group":"com.android.support","version":"+"},"copyrightHolder":"Google Inc","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"http://developer.android.com/tools/extras/support-library.html","libraryName":"support-media-compat"},{"artifactId":{"name":"support-v4","group":"com.android.support","version":"+"},"copyrightHolder":"Google Inc","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"http://developer.android.com/tools/extras/support-library.html","libraryName":"support-v4"},{"artifactId":{"name":"support-vector-drawable","group":"com.android.support","version":"+"},"copyrightHolder":"Google Inc","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"http://developer.android.com/tools/extras/support-library.html","libraryName":"support-vector-drawable"},{"artifactId":{"name":"media2-widget","group":"androidx.media2","version":"+"},"copyrightHolder":"Google Inc","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/jetpack/androidx/releases/media2","libraryName":"media2-widget"},{"artifactId":{"name":"palette","group":"androidx.palette","version":"+"},"copyrightHolder":"Google Inc","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"http://developer.android.com/tools/extras/support-library.html","libraryName":"palette"},{"artifactId":{"name":"media2-player","group":"androidx.media2","version":"+"},"copyrightHolder":"Google Inc","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/jetpack/androidx/releases/media2","libraryName":"media2-player"},{"artifactId":{"name":"media2-session","group":"androidx.media2","version":"+"},"copyrightHolder":"Google Inc","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/jetpack/androidx/releases/media2","libraryName":"media2-session"},{"artifactId":{"name":"media2-common","group":"androidx.media2","version":"+"},"copyrightHolder":"Google Inc","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/jetpack/androidx/releases/media2","libraryName":"media2-common"},{"artifactId":{"name":"media2-exoplayer","group":"androidx.media2","version":"+"},"copyrightHolder":"Google Inc","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://developer.android.com/jetpack/androidx/releases/media2","libraryName":"media2-exoplayer"},{"artifactId":{"name":"subsampling-scale-image-view-androidx","group":"com.davemorrissey.labs","version":"+"},"copyrightHolder":"David Morrissey and contributors","copyrightStatement":"Copyright © David Morrissey and contributors. All rights reserved.","license":"The Apache Software License, Version 2.0","licenseUrl":"http://www.apache.org/licenses/LICENSE-2.0.txt","normalizedLicense":"apache2","url":"https://github.com/davemorrissey/subsampling-scale-image-view","libraryName":"subsampling-scale-image-view-androidx"},{"artifactId":{"name":"ffmpeg-kit-min","group":"com.arthenica","version":"+"},"copyrightHolder":"Taner Şener","copyrightStatement":"Copyright © Taner Şener. All rights reserved.","license":"GNU Lesser General Public License, Version 3","licenseUrl":"https://www.gnu.org/licenses/lgpl-3.0.txt","normalizedLicense":"lgpl3","url":"https://github.com/tanersener/ffmpeg-kit","libraryName":"ffmpeg-kit-min"},{"artifactId":{"name":"smart-exception-java","group":"com.arthenica","version":"+"},"copyrightHolder":"Taner Şener","copyrightStatement":"Copyright © Taner Şener. All rights reserved.","license":"The 3-Clause BSD License","licenseUrl":"https://opensource.org/licenses/BSD-3-Clause","normalizedLicense":"bsd_3_clauses","url":"https://github.com/tanersener/smart-exception","libraryName":"smart-exception-java"},{"artifactId":{"name":"smart-exception-common","group":"com.arthenica","version":"+"},"copyrightHolder":"Taner Şener","copyrightStatement":"Copyright © Taner Şener. All rights reserved.","license":"The 3-Clause BSD License","licenseUrl":"https://opensource.org/licenses/BSD-3-Clause","normalizedLicense":"bsd_3_clauses","url":"https://github.com/tanersener/smart-exception","libraryName":"smart-exception-common"},{"artifactId":{"name":"okhttp3-integration","group":"com.github.bumptech.glide","version":"+"},"copyrightHolder":"Google Inc.","copyrightStatement":"Copyright © Google Inc. All rights reserved.","license":"Simplified BSD License","licenseUrl":"http://www.opensource.org/licenses/bsd-license","normalizedLicense":"bsd_2_clauses","url":"https://github.com/bumptech/glide","libraryName":"okhttp3-integration"}]} \ No newline at end of file diff --git a/app/src/main/java/org/pixeldroid/app/settings/LicenseActivity.kt b/app/src/main/java/org/pixeldroid/app/settings/LicenseActivity.kt index af686dbd..ead657e0 100644 --- a/app/src/main/java/org/pixeldroid/app/settings/LicenseActivity.kt +++ b/app/src/main/java/org/pixeldroid/app/settings/LicenseActivity.kt @@ -1,11 +1,9 @@ package org.pixeldroid.app.settings import android.os.Bundle -import com.google.gson.Gson +import com.mikepenz.aboutlibraries.Libs import org.pixeldroid.app.R import org.pixeldroid.app.databinding.OpenSourceLicenseBinding -import org.pixeldroid.app.settings.licenseObjects.Libraries -import org.pixeldroid.app.settings.licenseObjects.OpenSourceItem import org.pixeldroid.app.utils.BaseThemedWithBarActivity /** @@ -30,12 +28,14 @@ class LicenseActivity: BaseThemedWithBarActivity() { } private fun setupRecyclerView() { - val text: String = applicationContext.assets.open("licenses.json") + val aboutLibsJson: String = applicationContext.resources.openRawResource(R.raw.aboutlibraries) .bufferedReader().use { it.readText() } - val listObj: List = Gson().fromJson(text, Libraries::class.java).libraries + val libs = Libs.Builder() + .withJson(aboutLibsJson) + .build() - val adapter = OpenSourceLicenseAdapter(listObj) + val adapter = OpenSourceLicenseAdapter(libs) binding.openSourceLicenseRecyclerView.adapter = adapter } } \ No newline at end of file diff --git a/app/src/main/java/org/pixeldroid/app/settings/OpenSourceLicenseAdapter.kt b/app/src/main/java/org/pixeldroid/app/settings/OpenSourceLicenseAdapter.kt index c474ab17..ca485669 100644 --- a/app/src/main/java/org/pixeldroid/app/settings/OpenSourceLicenseAdapter.kt +++ b/app/src/main/java/org/pixeldroid/app/settings/OpenSourceLicenseAdapter.kt @@ -6,10 +6,11 @@ import android.view.LayoutInflater import android.view.ViewGroup import androidx.core.view.isVisible import androidx.recyclerview.widget.RecyclerView +import com.mikepenz.aboutlibraries.Libs +import com.mikepenz.aboutlibraries.entity.Library import org.pixeldroid.app.databinding.OpenSourceItemBinding -import org.pixeldroid.app.settings.licenseObjects.OpenSourceItem -class OpenSourceLicenseAdapter(private val openSourceItems: List) : +class OpenSourceLicenseAdapter(private val openSourceItems: Libs) : RecyclerView.Adapter() { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): OpenSourceLicenceViewHolder @@ -19,43 +20,35 @@ class OpenSourceLicenseAdapter(private val openSourceItems: List } override fun onBindViewHolder(holder: OpenSourceLicenceViewHolder, position: Int) { - val item = openSourceItems[position] + val item = openSourceItems.libraries[position] holder.bind(item) } - override fun getItemCount(): Int = openSourceItems.size + override fun getItemCount(): Int = openSourceItems.libraries.size class OpenSourceLicenceViewHolder(val binding: OpenSourceItemBinding) : RecyclerView.ViewHolder(binding.root) { @SuppressLint("SetTextI18n") - fun bind(item: OpenSourceItem) { + fun bind(item: Library) { with(binding) { - if (!item.libraryName.isNullOrEmpty()) { + if (item.name.isNotEmpty()) { title.isVisible = true - title.text = "${item.libraryName}" + title.text = item.name } else { title.isVisible = false } - val license = item.license - if (license != null) { - val licenseUrl = item.licenseUrl?.let { " (${it} )" } ?: "" - copyright.isVisible = true - copyright.apply { - text = "$license$licenseUrl" - movementMethod = LinkMovementMethod.getInstance() - } - } else { - copyright.isVisible = false + val license = item.licenses.firstOrNull() + val licenseName = license?.name ?: "" + val licenseUrl = license?.url?.let { " (${it} )" } ?: "" + copyright.isVisible = true + copyright.apply { + text = "$licenseName$licenseUrl" + movementMethod = LinkMovementMethod.getInstance() } - if (item.url != null || item.copyrightHolder != null) { - val licenseUrl = item.url?.let { " (${it} )" } ?: "" - url.isVisible = true - url.apply { - text = "${item.copyrightHolder ?: ""}$licenseUrl" - movementMethod = LinkMovementMethod.getInstance() - } - } else { - url.isVisible = false + url.isVisible = true + url.apply { + text = "${item.developers.firstOrNull()?.name ?: ""} ${item.website}" + movementMethod = LinkMovementMethod.getInstance() } } } diff --git a/app/src/main/java/org/pixeldroid/app/settings/licenseObjects/Libraries.kt b/app/src/main/java/org/pixeldroid/app/settings/licenseObjects/Libraries.kt deleted file mode 100644 index 2695456a..00000000 --- a/app/src/main/java/org/pixeldroid/app/settings/licenseObjects/Libraries.kt +++ /dev/null @@ -1,5 +0,0 @@ -package org.pixeldroid.app.settings.licenseObjects - -data class Libraries( - val libraries: List -) \ No newline at end of file diff --git a/app/src/main/java/org/pixeldroid/app/settings/licenseObjects/OpenSourceItem.kt b/app/src/main/java/org/pixeldroid/app/settings/licenseObjects/OpenSourceItem.kt deleted file mode 100644 index 4bcb0223..00000000 --- a/app/src/main/java/org/pixeldroid/app/settings/licenseObjects/OpenSourceItem.kt +++ /dev/null @@ -1,10 +0,0 @@ -package org.pixeldroid.app.settings.licenseObjects - - -data class OpenSourceItem( - val libraryName: String?, - val copyrightHolder: String?, - val url: String?, - val license: String?, - val licenseUrl: String?, -) \ No newline at end of file diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml index 57c89346..6995f42a 100644 --- a/gradle/verification-metadata.xml +++ b/gradle/verification-metadata.xml @@ -235,6 +235,9 @@ + + + @@ -254,6 +257,9 @@ + + + @@ -273,6 +279,9 @@ + + + @@ -292,6 +301,9 @@ + + + @@ -534,6 +546,9 @@ + + + @@ -700,6 +715,9 @@ + + + @@ -746,6 +764,9 @@ + + + @@ -792,6 +813,9 @@ + + + @@ -936,6 +960,9 @@ + + + @@ -955,6 +982,9 @@ + + + @@ -4882,6 +4912,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -4981,6 +5038,19 @@ + + + + + + + + + + + + + @@ -5865,6 +5935,11 @@ + + + + + @@ -6030,6 +6105,14 @@ + + + + + + + + @@ -7094,6 +7177,22 @@ + + + + + + + + + + + + + + + + @@ -7274,6 +7373,9 @@ + + +