Sample android setup for deploying libraries on maven central

Overview

Perfect-android-library-template

This is how I prefer my android setup. This setup has a sample app and a deployable library that deploys to maven central once released. It uses detekt and lint and uses github actions to verify code in pull requests

Features:

  • Detekt
  • Lint
  • Deploy to maven central
  • Verify PR (github actions)
  • Deployment using github releases
  • Auto versioning based on GIT tags
  • Issue templates
  • Funding
  • CI configurations (ci-gradle.properties)
  • Dependabot
  • PR templates
  • Release management
  • KTS gradle files

How to use this repo as a template

  1. Press "use this template" above or go to https://github.com/warting/Perfect-android-library-template/generate
  2. Make an awesome library
  3. Feel free to change from MIT License to whatever you want!
  4. Create a sonatype account (https://getstream.io/blog/publishing-libraries-to-mavencentral-2021/)
  5. Setup github secrets.
    1. OSSRH_USERNAME
    2. OSSRH_PASSWORD
    3. SONATYPE_STAGING_PROFILE_ID
    4. SIGNING_KEY_ID
    5. SIGNING_PASSWORD
    6. SIGNING_KEY
  6. Deploy your lib using github release functionality

Delete everything above this and change everything below

Maven Central

Title of library

Describe your project here

How to include in your project

The library is available via MavenCentral:

allprojects {
    repositories {
        // ...
        mavenCentral()
    }
}

Add it to your module dependencies:

") } ">
dependencies {
    implementation("se.warting.perfect-android-library:template:
   
    ")
}

   

How to use

All you need to do is to call SampleThingie:

    SampleThingie()

For a full implementation see: Full sample

Notes

Some notes

Comments
  • Bump gradle from 7.1.3 to 7.2.0

    Bump gradle from 7.1.3 to 7.2.0

    Bumps gradle from 7.1.3 to 7.2.0.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies java 
    opened by dependabot[bot] 43
  • Bump composeVersion from 1.1.1 to 1.3.0

    Bump composeVersion from 1.1.1 to 1.3.0

    Bumps composeVersion from 1.1.1 to 1.3.0. Updates ui from 1.1.1 to 1.3.0

    Updates material from 1.1.1 to 1.3.0

    Updates ui-tooling-preview from 1.1.1 to 1.3.0

    Updates ui-test-junit4 from 1.1.1 to 1.3.0

    Updates ui-tooling from 1.1.1 to 1.3.0

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies java 
    opened by dependabot[bot] 37
  • Bump gradle from 7.1.3 to 7.2.1

    Bump gradle from 7.1.3 to 7.2.1

    Bumps gradle from 7.1.3 to 7.2.1.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies java 
    opened by dependabot[bot] 36
  • Bump kotlin-gradle-plugin from 1.6.10 to 1.6.20

    Bump kotlin-gradle-plugin from 1.6.10 to 1.6.20

    Bumps kotlin-gradle-plugin from 1.6.10 to 1.6.20.

    Release notes

    Sourced from kotlin-gradle-plugin's releases.

    Kotlin 1.6.20-RC2

    Changelog

    Compiler

    Fixes

    • KT-51352 "ClassCastException: class ScopeCoroutine cannot be cast to class Iterable" caused by coroutines and context receivers
    • KT-51271 "ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3" with inlining of context function
    • KT-50520 "NPE: containingDeclaration.ac…lDeclarationType.REGULAR) must not be null" with implicit type on self-referencing lambda in a builder
    • KT-51471 Native: incorrect debug information when inheriting suspend fun invoke implementation
    • KT-51353 IncompatibleClassChangeError: Expected non-static field com.soywiz.korim.color.Colors.BLACK

    Native

    • KT-37368 Native compiler fails to compile big projects

    Native. Runtime

    Tools. JPS

    • KT-51434 Language version 1.7 is absent in Kotlin Compiler settings

    Tools. Gradle

    • KT-51588 Restoring from build cache breaks Kotlin incremental compilation

    Checksums

    File Sha256
    kotlin-compiler-1.6.20-RC2.zip 038da980d17432a44c41299b528b81040ca2578b634b0fd066661b45871711f2
    kotlin-native-linux-x86_64-1.6.20-RC2.tar.gz d8ada91551ad425697966c128725757d6c032eb25f0c58e737783d20914751c4
    kotlin-native-macos-x86_64-1.6.20-RC2.tar.gz a6e85afd0a920ab7d1c5dea6e5153515ecf98aafbbe60e6151e181455e6583d7
    kotlin-native-macos-aarch64-1.6.20-RC2.tar.gz 60d9b37177180997e2c42a26214b36242ccace62fa3af08091c8ed7df80410e0
    kotlin-native-windows-x86_64-1.6.20-RC2.zip 57da7b6e3438ffc44fe0e99846efa7fed1c458d74cf00d504f2583c4d99c41c8

    Kotlin 1.6.20-RC

    Changelog

    Compiler

    • KT-51302 Kotlin/Native 1.6.20-M1 compiler fails because of assertion in NativeAnnotationImplementationTransformer
    • KT-51148 "AssertionError: At this stage there should be no remaining variables with proper constraints" caused by two type parameters
    • KT-50970 Kotlin/Native: use arm instruction set instead of thumb-2 for iosArm32 and watchosArm32 targets
    • KT-50843 Kotlin/Native: LLVM constant merge pass does not work for Kotlin constants
    • KT-51157 JVM / IR: "IndexOutOfBoundsException: Index: 1, Size: 1" caused by interface hierarchy and UInt method parameter

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies java 
    opened by dependabot[bot] 16
  • Bump composeVersion from 1.1.1 to 1.3.1

    Bump composeVersion from 1.1.1 to 1.3.1

    Bumps composeVersion from 1.1.1 to 1.3.1. Updates ui from 1.1.1 to 1.3.1

    Updates material from 1.1.1 to 1.3.1

    Updates ui-tooling-preview from 1.1.1 to 1.3.1

    Updates ui-test-junit4 from 1.1.1 to 1.3.1

    Updates ui-tooling from 1.1.1 to 1.3.1

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies java 
    opened by dependabot[bot] 13
  • Bump firebase-bom from 28.4.1 to 29.0.0

    Bump firebase-bom from 28.4.1 to 29.0.0

    Bumps firebase-bom from 28.4.1 to 29.0.0.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies java 
    opened by dependabot[bot] 4
  • Bump org.jetbrains.kotlinx.binary-compatibility-validator from 0.10.1 to 0.12.0

    Bump org.jetbrains.kotlinx.binary-compatibility-validator from 0.10.1 to 0.12.0

    Bumps org.jetbrains.kotlinx.binary-compatibility-validator from 0.10.1 to 0.12.0.

    Release notes

    Sourced from org.jetbrains.kotlinx.binary-compatibility-validator's releases.

    0.12.0

    • Support of API dump and comparison directly from JAR (#99)
    • Support of Android Library Plugin (#94). Thanks @​realbarisbasturk for the contribution!

    0.11.1

    • Fixed compatibility with Gradle configuration cache (#95). Thanks @​3flex!

    0.11.0

    Commits
    • 3f37b63 AndroidLibrarySupport: Add functional tests for Kotlin Android libraries (#102)
    • 89c1b22 Minor improvements (#101)
    • 661e03c Document inputJar feature in README
    • c5408ed Test inputJar property overriding inputClassesDirs
    • ea76222 Make inputJar source override inputClassesDirs
    • 6414bee KotlinApiBuildTask finds extension by itself looking up in the project hierarchy
    • 37c8cec Support reading classes from resulting jar and allow configuring tasks withou...
    • 7d29849 Explicitly mention JVM ABI in the README
    • 5770215 Version 0.11.1
    • b569f24 Restore compatibility with Gradle's configuration cache (#96)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies java 
    opened by dependabot[bot] 2
  • Bump activity-compose from 1.4.0 to 1.6.0

    Bump activity-compose from 1.4.0 to 1.6.0

    Bumps activity-compose from 1.4.0 to 1.6.0.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies java 
    opened by dependabot[bot] 2
  • Bump gradle from 7.1.3 to 7.3.0

    Bump gradle from 7.1.3 to 7.3.0

    Bumps gradle from 7.1.3 to 7.3.0.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies java 
    opened by dependabot[bot] 2
  • Bump appcompat from 1.4.2 to 1.5.0

    Bump appcompat from 1.4.2 to 1.5.0

    Bumps appcompat from 1.4.2 to 1.5.0.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies java 
    opened by dependabot[bot] 2
  • Bump composeVersion from 1.1.1 to 1.2.1

    Bump composeVersion from 1.1.1 to 1.2.1

    Bumps composeVersion from 1.1.1 to 1.2.1. Updates ui from 1.1.1 to 1.2.1

    Updates material from 1.1.1 to 1.2.1

    Updates ui-tooling-preview from 1.1.1 to 1.2.1

    Updates ui-test-junit4 from 1.1.1 to 1.2.1

    Updates ui-tooling from 1.1.1 to 1.2.1

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies java 
    opened by dependabot[bot] 2
  • Bump activity-compose from 1.4.0 to 1.6.1

    Bump activity-compose from 1.4.0 to 1.6.1

    Bumps activity-compose from 1.4.0 to 1.6.1.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies java 
    opened by dependabot[bot] 45
  • Bump material from 1.6.1 to 1.7.0

    Bump material from 1.6.1 to 1.7.0

    Bumps material from 1.6.1 to 1.7.0.

    Release notes

    Sourced from material's releases.

    1.7.0

    What's new since 1.6.1

    • All new Switch component with a new look! Check out the updated documentation for details.
    • New Shape system that is now being used by all components. Learn about the shape system and see how its used in the Material3 theme and components by checking out the updated documentation
    • Checkbox has been redesigned and now supports indeterminate and error states! Check out the updated documentation.
    • BottomAppBar has been redesigned! Check out the updated documentation
    • New Icon Button support has been added including outlined, tonal, and filled variants!

    New minimum requirements for your app's project:

    Dependency Updates

    Dependency Previous version New version
    androidx.appcompat 1.5.0-beta01 1.5.0
    androidx.core 1.5.0 1.6.0
    androidx.test 1.1.0 1.4.0
    Android Gradle Plugin (AGP) 4.0.0 7.2.0
    Gradle 6.1.1 7.3.3
    Java Version 1.7 (7) 1.8 (8)

    Other highlights

    • MaterialButton
      • Added methods to not toggle checked state on buttons on click (a6011078689521cf0c042e7444c36b6607cedcf9)
      • Updated M3 button style to add outlined icon button style (467a2c9f7314cdfd5300594b4e66a70657d5d702)
      • Updated M3 button style to add filled tonal icon button style (14578ed68cb296080d511ceb502469903c0ef5d7)
      • Updated M3 button style to add filled icon button style (25606cf34addae1420eeba24eec0f90aef06d0d2)
      • Fix icon textStart/End alignment with multiline text (b6b895a1e40efbf2e36b2ea5e91bae7bcd0bdb8c)
      • Fix icon position with multiline text (19d05000bcc273f781a85ce41530f604fead268e)
    • Documentation
      • Updated typography guidelines to M3 (104a342307c31170494c3dcd2011ca63b182e4b5)
      • Added an example to demonstrate how to make bottom sheet dialog in edge-to-edge mode (57a3c989ffdaee252fa00bbe5246f837d18b6a60)
      • Updated Snackbar doc regarding CoordinatorLayout (ef2c2fad36d11933d71ea5c9a2826be3119bec17)
      • Add status bar / edge-to-edge section to Top App Bar doc (b8e1f978940c218502ee6161d0b3f673299eceb0)
    • TopAppBar
      • Fixed bug in HeaderScrollingViewBehavior that causes child translation Y not to be reset to default if the behavior is changed from an overlapping to non-overlapping behavior in layoutParams.setBehavior (00c62d21c9e21eb595d2d83bddcf6782a9773729)
      • Excluded views that are GONE from scroll range calculation (687e73590de5ea219a14a336094002b9d3884af5)
      • Fixed collapsing title issue with different fonts (0c341c4e9b9703945ffbf22af0a4158bde41582c)
      • Added setLiftOnScrollTargetView() method (d6c435461eece74656db5e2de92944c7ca807439)
    • A11y
      • Made multi-selection Chips announce as Buttons (d4c2c9549051d706d91dcd96ceb79c52e1aedd30)
      • Made drawer announce its number of items (b1f7d5bebc298865a25747d2f28050a67b15761d)
    • TextInputLayout
      • Added a new custom length counter field and getters/setters to switch how text length is calculated for the counter. (4ded01ed3ff5f6669080b6330c3d6dce8869cdca)
      • Fixed hint is not displayed when expanding space is limited (73cb1b6e78a0e28d157a1b5da061568117c2fa40)

    ... (truncated)

    Commits
    • 355c69d Update library version to 1.7.0
    • 5cb92c8 [Snackbar] Made snackbar javadoc more clear of how its dismissing works.
    • c0e24cd [Documentation][Shape] Update documentation
    • 7e18ac4 [Checkbox] Fixed NPE crash due to layer drawable's constant state issue in AP...
    • ec1663f [CheckBox] Fix a11y announcement for indeterminate state.
    • aaa7646 Update library version to 1.7.0-rc01
    • 2cc8932 [Checkbox] Fixed pre 21 issue where the icon did not update its color accordi...
    • a394314 [Process] Update AppCompat version to 1.5 stable
    • 3af5784 [ExposedDropdownMenu] Fixed missing icon activated color.
    • c1e20e2 [Docs] Changing the name for the AGP compatibility variable so that the IDE p...
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies java 
    opened by dependabot[bot] 47
  • Bump gradle from 7.1.3 to 7.3.1

    Bump gradle from 7.1.3 to 7.3.1

    Bumps gradle from 7.1.3 to 7.3.1.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies java 
    opened by dependabot[bot] 47
  • Bump appcompat from 1.4.2 to 1.5.1

    Bump appcompat from 1.4.2 to 1.5.1

    Bumps appcompat from 1.4.2 to 1.5.1.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies java 
    opened by dependabot[bot] 45
  • Bump core-ktx from 1.8.0 to 1.9.0

    Bump core-ktx from 1.8.0 to 1.9.0

    Bumps core-ktx from 1.8.0 to 1.9.0.

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies java 
    opened by dependabot[bot] 46
  • Bump kotlin-gradle-plugin from 1.6.10 to 1.6.21

    Bump kotlin-gradle-plugin from 1.6.10 to 1.6.21

    Bumps kotlin-gradle-plugin from 1.6.10 to 1.6.21.

    Release notes

    Sourced from kotlin-gradle-plugin's releases.

    Kotlin 1.6.20

    Changelog

    Compiler

    New Features

    • KT-48217 Add an annotation JvmDefaultWithCompatibility to allow generating DefaultImpls classes if -Xjvm-default=all option is used
    • KT-49929 [FIR] Support programmatic creation of annotation class instances
    • KT-49276 Warn about potential overload resolution change if Range/Progression starts implementing Collection
    • KT-47902 Do not propagate method deprecation through overrides
    • KT-49857 Require Xcode 13 for building Kotlin/Native compiler
    • KT-47701 Support instantiation of annotation classes on Native
    • KT-46085 Support experimental parallel compilation of a single module in the JVM backend
    • KT-46603 Generate SAM-conversions to Java interfaces extending 'java.io.Serializable' as serializable using java.lang.invoke.LambdaMetafactory

    Performance Improvements

    • KT-50156 HMPP: Slow frontend/ide performance in OKIO (ExpectActualDeclarationChecker)
    • KT-50073 Performance regression in adapted function references
    • KT-50076 Performance regression in super call to an interface member in $DefaultImpls
    • KT-50080 Performance regression in string template with generic property with primitive upper bound
    • KT-50084 Performance regression in concatenation with 'String?'
    • KT-50078 Performance regression in for-in-array loop
    • KT-50039 Performance regression in inner class constructor call with default parameters
    • KT-48784 An anonymous class has fields for variables that are only used in the constructor
    • KT-42010 Generate IINC instruction for postfix increment in JVM_IR
    • KT-48433 JVM_IR don't generate null check on 'this$0' parameter of inner class constructor
    • KT-48435 JVM_IR ConstForLoopBenchmark performance regression
    • KT-48507 JVM_IR ForLoopBenchmark regressions
    • KT-48640 Performance regression in 'longDownToLoop' benchmarks
    • KT-29822 Generate specialized bytecode for loops withIndex over unsigned arrays
    • KT-48669 Generate optimizable counter loop for loops over indices of unsigned arrays
    • KT-49444 Possible performance degradation with UInt downTo loop
    • KT-48944 Possible performance regression with comparison of local KFunctions
    • KT-17111 Eliminate redundant store/load instructions when the value stored is simple
    • KT-36837 Generate more compact code for for-in-range loop in JVM_IR
    • KT-48947 JVM / IR Possible performance regression with string templates
    • KT-48931 JVM / IR: Performance degradation with string concatenation
    • KT-36654 Generate more compact bytecode for safe call in JVM_IR

    Fixes

    • KT-24643 Prohibit using a type parameter declared for an extension property inside delegate
    • KT-51747 Make KtCallableDeclaration.getContextReceivers default to preserve compatibility
    • KT-49658 NI: False negative TYPE_MISMATCH on nullable type with when
    • KT-43493 NI: @​BuilderInference prevents compilation error of "Operator '==' cannot be applied to 'Long' and 'Int'"
    • KT-51649 Kotlin/Native: reduce binary size of watchosArm32 and iosArm32 targets by limiting inlining of runtime functions
    • KT-48626 JVM IR: incorrect behavior for captured for-loop parameter since 1.6.20-dev-723
    • KT-51036 JVM / IR: "NullPointerException: Parameter specified as non-null is null" with synchronized and companion object

    ... (truncated)

    Changelog

    Sourced from kotlin-gradle-plugin's changelog.

    1.6.20

    Compiler

    New Features

    • KT-48217 Add an annotation JvmDefaultWithCompatibility to allow generating DefaultImpls classes if -Xjvm-default=all option is used
    • KT-49929 [FIR] Support programmatic creation of annotation class instances
    • KT-49276 Warn about potential overload resolution change if Range/Progression starts implementing Collection
    • KT-47902 Do not propagate method deprecation through overrides
    • KT-49857 Require Xcode 13 for building Kotlin/Native compiler
    • KT-47701 Support instantiation of annotation classes on Native
    • KT-46085 Support experimental parallel compilation of a single module in the JVM backend
    • KT-46603 Generate SAM-conversions to Java interfaces extending 'java.io.Serializable' as serializable using java.lang.invoke.LambdaMetafactory

    Performance Improvements

    • KT-50156 HMPP: Slow frontend/ide performance in OKIO (ExpectActualDeclarationChecker)
    • KT-50073 Performance regression in adapted function references
    • KT-50076 Performance regression in super call to an interface member in $DefaultImpls
    • KT-50080 Performance regression in string template with generic property with primitive upper bound
    • KT-50084 Performance regression in concatenation with 'String?'
    • KT-50078 Performance regression in for-in-array loop
    • KT-50039 Performance regression in inner class constructor call with default parameters
    • KT-48784 An anonymous class has fields for variables that are only used in the constructor
    • KT-42010 Generate IINC instruction for postfix increment in JVM_IR
    • KT-48433 JVM_IR don't generate null check on 'this$0' parameter of inner class constructor
    • KT-48435 JVM_IR ConstForLoopBenchmark performance regression
    • KT-48507 JVM_IR ForLoopBenchmark regressions
    • KT-48640 Performance regression in 'longDownToLoop' benchmarks
    • KT-29822 Generate specialized bytecode for loops withIndex over unsigned arrays
    • KT-48669 Generate optimizable counter loop for loops over indices of unsigned arrays
    • KT-49444 Possible performance degradation with UInt downTo loop
    • KT-48944 Possible performance regression with comparison of local KFunctions
    • KT-17111 Eliminate redundant store/load instructions when the value stored is simple
    • KT-36837 Generate more compact code for for-in-range loop in JVM_IR
    • KT-48947 JVM / IR Possible performance regression with string templates
    • KT-48931 JVM / IR: Performance degradation with string concatenation
    • KT-36654 Generate more compact bytecode for safe call in JVM_IR

    Fixes

    • KT-24643 Prohibit using a type parameter declared for an extension property inside delegate
    • KT-51747 Make KtCallableDeclaration.getContextReceivers default to preserve compatibility
    • KT-49658 NI: False negative TYPE_MISMATCH on nullable type with when
    • KT-43493 NI: @​BuilderInference prevents compilation error of "Operator '==' cannot be applied to 'Long' and 'Int'"
    • KT-51649 Kotlin/Native: reduce binary size of watchosArm32 and iosArm32 targets by limiting inlining of runtime functions
    • KT-48626 JVM IR: incorrect behavior for captured for-loop parameter since 1.6.20-dev-723
    • KT-51036 JVM / IR: "NullPointerException: Parameter specified as non-null is null" with synchronized and companion object
    • KT-51471 Native: incorrect debug information when inheriting suspend fun invoke implementation

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies java 
    opened by dependabot[bot] 23
Owner
Stefan Wärting
Android developer since Nexus 1
Stefan Wärting
Useful helpers that make it easier to implement maven-plugin mojos with kotlin

A library that makes writing powerful maven plugins even easier by providing kotlin extensions and convenience functions for common use cases.

TOOListicon 1 Nov 4, 2022
ModernStorage is a group of libraries that provide an abstraction layer over storage on Android to simplify its interactions

ModernStorage ModernStorage is a group of libraries that provide an abstraction layer over storage on Android to simplify its interactions by apps dev

Google 1.1k Dec 30, 2022
A collection of Android libraries for simplifying development

Andromeda A collection of Android libraries for simplifying development Usage Andromeda uses Jitpack for distribution, the following gradle dependency

Kyle Corry 11 Dec 6, 2022
A collection of Android build scripts for various third-party libraries and the tooling to build them

ndkports A collection of Android build scripts for various third-party libraries and the tooling to build them. If you're an Android app developer loo

reSIProcate project 0 Jan 17, 2022
Sample project displaying process of OTP validation using firebase

OTP-Validation-using-firebase Sample project displaying process of OTP validation using firebase Screenshots Concepts used Integrated Firebase sdk for

Ankita Gaba 2 Jun 18, 2022
Android Shared preference wrapper than encrypts the values of Shared Preferences. It's not bullet proof security but rather a quick win for incrementally making your android app more secure.

Secure-preferences - Deprecated Please use EncryptedSharedPreferences from androidx.security in preferenced to secure-preference. (There are no active

Scott Alexander-Bown 1.5k Dec 24, 2022
Android library which makes it easy to handle the different obstacles while calling an API (Web Service) in Android App.

API Calling Flow API Calling Flow is a Android library which can help you to simplify handling different conditions while calling an API (Web Service)

Rohit Surwase 19 Nov 9, 2021
Gesture detector framework for multitouch handling on Android, based on Android's ScaleGestureDetector

Android Gesture Detectors Framework Introduction Since I was amazed Android has a ScaleGestureDetector since API level 8 but (still) no such thing as

null 1.1k Nov 30, 2022
Use Android as Rubber Ducky against another Android device

Use Android as Rubber Ducky against another Android device

null 1.4k Jan 9, 2023
Android Utilities Library build in kotlin Provide user 100 of pre defined method to create advanced native android app.

Android Utilities Library build in kotlin Provide user 100 of pre defined method to create advanced native android app.

Shahid Iqbal 4 Nov 29, 2022
A util for setting status bar style on Android App.

StatusBarUtil A util for setting status bar style on Android App. It can work above API 19(KitKat 4.4). 中文版点我 Sample Download StatusBarUtil-Demo Chang

Jaeger 8.8k Jan 6, 2023
A logger with a small, extensible API which provides utility on top of Android's normal Log class.

This is a logger with a small, extensible API which provides utility on top of Android's normal Log class. I copy this class into all the little apps

Jake Wharton 9.8k Dec 30, 2022
Java implementation of a Disk-based LRU cache which specifically targets Android compatibility.

Disk LRU Cache A cache that uses a bounded amount of space on a filesystem. Each cache entry has a string key and a fixed number of values. Each key m

Jake Wharton 5.7k Dec 31, 2022
a simple cache for android and java

ASimpleCache ASimpleCache 是一个为android制定的 轻量级的 开源缓存框架。轻量到只有一个java文件(由十几个类精简而来)。 1、它可以缓存什么东西? 普通的字符串、JsonObject、JsonArray、Bitmap、Drawable、序列化的java对象,和 b

Michael Yang 3.7k Dec 14, 2022
gRPC and protocol buffers for Android, Kotlin, and Java.

Wire “A man got to have a code!” - Omar Little See the project website for documentation and APIs. As our teams and programs grow, the variety and vol

Square 3.9k Dec 31, 2022
✔️ Secure, simple key-value storage for Android

Hawk 2.0 Secure, simple key-value storage for android Important Note This version has no backward compatibility with Hawk 1+ versions. If you still wa

Orhan Obut 3.9k Dec 20, 2022
A robust native library loader for Android.

ReLinker A robust native library loader for Android. More information can be found in our blog post Min SDK: 9 JavaDoc Overview The Android PackageMan

Keepsafe 2.9k Dec 27, 2022
A lightning fast, transactional, file-based FIFO for Android and Java.

Tape by Square, Inc. Tape is a collection of queue-related classes for Android and Java. QueueFile is a lightning-fast, transactional, file-based FIFO

Square 2.4k Dec 30, 2022
Joda-Time library with Android specialization

joda-time-android This library is a version of Joda-Time built with Android in mind. Why Joda-Time? Android has built-in date and time handling - why

Daniel Lew 2.6k Dec 9, 2022