@ -1,16 +0,0 @@
|
||||
---
|
||||
name: Pull request
|
||||
about: Create a pull request
|
||||
label: 'triage me'
|
||||
---
|
||||
Thank you for opening a Pull Request!
|
||||
Before submitting your PR, there are a few things you can do to make sure it goes smoothly:
|
||||
- [ ] Make sure to open a GitHub issue as a bug/feature request before writing your code! That way we can discuss the change, evaluate designs, and agree on the general idea
|
||||
- [ ] Ensure the tests and linter pass (`./gradlew --init-script gradle/init.gradle.kts spotlessApply` to automatically apply formatting)
|
||||
- [ ] Appropriate docs were updated (if necessary)
|
||||
|
||||
Is this your first Pull Request?
|
||||
- [ ] Run `./tools/setup.sh`
|
||||
- [ ] Import the code formatting style as explained in [the setup script](/tools/setup.sh#L40).
|
||||
|
||||
Fixes #<issue_number_goes_here> 🦕
|
@ -0,0 +1,26 @@
|
||||
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
- package-ecosystem: "gradle"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
registries: "*"
|
||||
labels: [ "version update" ]
|
||||
groups:
|
||||
kotlin-ksp-compose:
|
||||
patterns:
|
||||
- "org.jetbrains.kotlin:*"
|
||||
- "org.jetbrains.kotlin.jvm"
|
||||
- "com.google.devtools.ksp"
|
||||
- "androidx.compose.compiler:compiler"
|
||||
open-pull-requests-limit: 10
|
||||
registries:
|
||||
maven-google:
|
||||
type: "maven-repository"
|
||||
url: "https://maven.google.com"
|
||||
replaces-base: true
|
@ -0,0 +1,17 @@
|
||||
Thanks for submitting a pull request. Please include the following information.
|
||||
|
||||
**What I have done and why**
|
||||
Include a summary of what your pull request contains, and why you have made these changes.
|
||||
|
||||
Fixes #<issue_number_goes_here>
|
||||
|
||||
**Do tests pass?**
|
||||
- [ ] Run local tests on `DemoDebug` variant: `./gradlew testDemoDebug`
|
||||
- [ ] Check formatting: `./gradlew --init-script gradle/init.gradle.kts spotlessApply`
|
||||
|
||||
**Is this your first pull request?**
|
||||
- [ ] [Sign the CLA](https://cla.developers.google.com/)
|
||||
- [ ] Run `./tools/setup.sh`
|
||||
- [ ] Import the code formatting style as explained in [the setup script](/tools/setup.sh#L40).
|
||||
|
||||
|
@ -1,16 +0,0 @@
|
||||
{
|
||||
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
||||
"extends": [
|
||||
"config:base", "group:all", ":dependencyDashboard", "schedule:daily"
|
||||
],
|
||||
"packageRules": [
|
||||
{
|
||||
"matchPackageNames": ["org.objenesis:objenesis"],
|
||||
"allowedVersions": "<=2.6"
|
||||
},
|
||||
{
|
||||
"matchPackageNames": ["com.google.protobuf"],
|
||||
"allowedVersions": "<=0.8.19"
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,167 @@
|
||||
androidx.activity:activity-compose:1.8.0
|
||||
androidx.activity:activity-ktx:1.8.0
|
||||
androidx.activity:activity:1.8.0
|
||||
androidx.annotation:annotation-experimental:1.3.0
|
||||
androidx.annotation:annotation-jvm:1.6.0
|
||||
androidx.annotation:annotation:1.6.0
|
||||
androidx.appcompat:appcompat-resources:1.6.1
|
||||
androidx.arch.core:core-common:2.2.0
|
||||
androidx.arch.core:core-runtime:2.2.0
|
||||
androidx.autofill:autofill:1.0.0
|
||||
androidx.browser:browser:1.6.0
|
||||
androidx.collection:collection:1.2.0
|
||||
androidx.compose.animation:animation-android:1.5.4
|
||||
androidx.compose.animation:animation-core-android:1.5.4
|
||||
androidx.compose.animation:animation-core:1.5.4
|
||||
androidx.compose.animation:animation:1.5.4
|
||||
androidx.compose.foundation:foundation-android:1.5.4
|
||||
androidx.compose.foundation:foundation-layout-android:1.5.4
|
||||
androidx.compose.foundation:foundation-layout:1.5.4
|
||||
androidx.compose.foundation:foundation:1.5.4
|
||||
androidx.compose.material3:material3:1.1.2
|
||||
androidx.compose.material:material-icons-core-android:1.5.4
|
||||
androidx.compose.material:material-icons-core:1.5.4
|
||||
androidx.compose.material:material-icons-extended-android:1.5.4
|
||||
androidx.compose.material:material-icons-extended:1.5.4
|
||||
androidx.compose.material:material-ripple-android:1.5.4
|
||||
androidx.compose.material:material-ripple:1.5.4
|
||||
androidx.compose.runtime:runtime-android:1.5.4
|
||||
androidx.compose.runtime:runtime-livedata:1.5.4
|
||||
androidx.compose.runtime:runtime-saveable-android:1.5.4
|
||||
androidx.compose.runtime:runtime-saveable:1.5.4
|
||||
androidx.compose.runtime:runtime:1.5.4
|
||||
androidx.compose.ui:ui-android:1.5.4
|
||||
androidx.compose.ui:ui-geometry-android:1.5.4
|
||||
androidx.compose.ui:ui-geometry:1.5.4
|
||||
androidx.compose.ui:ui-graphics-android:1.5.4
|
||||
androidx.compose.ui:ui-graphics:1.5.4
|
||||
androidx.compose.ui:ui-text-android:1.5.4
|
||||
androidx.compose.ui:ui-text:1.5.4
|
||||
androidx.compose.ui:ui-tooling-preview-android:1.5.4
|
||||
androidx.compose.ui:ui-tooling-preview:1.5.4
|
||||
androidx.compose.ui:ui-unit-android:1.5.4
|
||||
androidx.compose.ui:ui-unit:1.5.4
|
||||
androidx.compose.ui:ui-util-android:1.5.4
|
||||
androidx.compose.ui:ui-util:1.5.4
|
||||
androidx.compose.ui:ui:1.5.4
|
||||
androidx.compose:compose-bom:2023.10.01
|
||||
androidx.concurrent:concurrent-futures:1.1.0
|
||||
androidx.core:core-ktx:1.12.0
|
||||
androidx.core:core:1.12.0
|
||||
androidx.customview:customview-poolingcontainer:1.0.0
|
||||
androidx.customview:customview:1.0.0
|
||||
androidx.datastore:datastore-core:1.0.0
|
||||
androidx.datastore:datastore:1.0.0
|
||||
androidx.documentfile:documentfile:1.0.0
|
||||
androidx.emoji2:emoji2:1.4.0
|
||||
androidx.exifinterface:exifinterface:1.3.6
|
||||
androidx.fragment:fragment:1.5.1
|
||||
androidx.interpolator:interpolator:1.0.0
|
||||
androidx.legacy:legacy-support-core-utils:1.0.0
|
||||
androidx.lifecycle:lifecycle-common-java8:2.6.1
|
||||
androidx.lifecycle:lifecycle-common:2.6.1
|
||||
androidx.lifecycle:lifecycle-livedata-core:2.6.1
|
||||
androidx.lifecycle:lifecycle-livedata:2.6.1
|
||||
androidx.lifecycle:lifecycle-process:2.6.1
|
||||
androidx.lifecycle:lifecycle-runtime-ktx:2.6.1
|
||||
androidx.lifecycle:lifecycle-runtime:2.6.1
|
||||
androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1
|
||||
androidx.lifecycle:lifecycle-viewmodel-savedstate:2.6.1
|
||||
androidx.lifecycle:lifecycle-viewmodel:2.6.1
|
||||
androidx.loader:loader:1.0.0
|
||||
androidx.localbroadcastmanager:localbroadcastmanager:1.0.0
|
||||
androidx.metrics:metrics-performance:1.0.0-alpha04
|
||||
androidx.print:print:1.0.0
|
||||
androidx.privacysandbox.ads:ads-adservices-java:1.0.0-beta05
|
||||
androidx.privacysandbox.ads:ads-adservices:1.0.0-beta05
|
||||
androidx.profileinstaller:profileinstaller:1.3.1
|
||||
androidx.room:room-common:2.6.0
|
||||
androidx.room:room-ktx:2.6.0
|
||||
androidx.room:room-runtime:2.6.0
|
||||
androidx.savedstate:savedstate-ktx:1.2.1
|
||||
androidx.savedstate:savedstate:1.2.1
|
||||
androidx.sqlite:sqlite-framework:2.4.0
|
||||
androidx.sqlite:sqlite:2.4.0
|
||||
androidx.startup:startup-runtime:1.1.1
|
||||
androidx.tracing:tracing-ktx:1.1.0
|
||||
androidx.tracing:tracing:1.1.0
|
||||
androidx.vectordrawable:vectordrawable-animated:1.1.0
|
||||
androidx.vectordrawable:vectordrawable:1.1.0
|
||||
androidx.versionedparcelable:versionedparcelable:1.1.1
|
||||
androidx.viewpager:viewpager:1.0.0
|
||||
com.caverock:androidsvg-aar:1.4
|
||||
com.google.accompanist:accompanist-drawablepainter:0.30.1
|
||||
com.google.android.datatransport:transport-api:3.0.0
|
||||
com.google.android.datatransport:transport-backend-cct:3.1.8
|
||||
com.google.android.datatransport:transport-runtime:3.1.8
|
||||
com.google.android.gms:play-services-ads-identifier:18.0.0
|
||||
com.google.android.gms:play-services-base:18.0.1
|
||||
com.google.android.gms:play-services-basement:18.1.0
|
||||
com.google.android.gms:play-services-cloud-messaging:17.0.1
|
||||
com.google.android.gms:play-services-measurement-api:21.4.0
|
||||
com.google.android.gms:play-services-measurement-base:21.4.0
|
||||
com.google.android.gms:play-services-measurement-impl:21.4.0
|
||||
com.google.android.gms:play-services-measurement-sdk-api:21.4.0
|
||||
com.google.android.gms:play-services-measurement-sdk:21.4.0
|
||||
com.google.android.gms:play-services-measurement:21.4.0
|
||||
com.google.android.gms:play-services-stats:17.0.2
|
||||
com.google.android.gms:play-services-tasks:18.0.2
|
||||
com.google.code.findbugs:jsr305:3.0.2
|
||||
com.google.dagger:dagger-lint-aar:2.48.1
|
||||
com.google.dagger:dagger:2.48.1
|
||||
com.google.dagger:hilt-android:2.48.1
|
||||
com.google.dagger:hilt-core:2.48.1
|
||||
com.google.errorprone:error_prone_annotations:2.11.0
|
||||
com.google.firebase:firebase-analytics-ktx:21.4.0
|
||||
com.google.firebase:firebase-analytics:21.4.0
|
||||
com.google.firebase:firebase-annotations:16.2.0
|
||||
com.google.firebase:firebase-bom:32.4.0
|
||||
com.google.firebase:firebase-common-ktx:20.4.2
|
||||
com.google.firebase:firebase-common:20.4.2
|
||||
com.google.firebase:firebase-components:17.1.5
|
||||
com.google.firebase:firebase-datatransport:18.1.7
|
||||
com.google.firebase:firebase-encoders-json:18.0.0
|
||||
com.google.firebase:firebase-encoders-proto:16.0.0
|
||||
com.google.firebase:firebase-encoders:17.0.0
|
||||
com.google.firebase:firebase-iid-interop:17.1.0
|
||||
com.google.firebase:firebase-installations-interop:17.1.1
|
||||
com.google.firebase:firebase-installations:17.2.0
|
||||
com.google.firebase:firebase-measurement-connector:19.0.0
|
||||
com.google.firebase:firebase-messaging-ktx:23.3.0
|
||||
com.google.firebase:firebase-messaging:23.3.0
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:31.1-android
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
com.google.j2objc:j2objc-annotations:1.3
|
||||
com.google.protobuf:protobuf-javalite:3.24.4
|
||||
com.google.protobuf:protobuf-kotlin-lite:3.24.4
|
||||
com.jakewharton.retrofit:retrofit2-kotlinx-serialization-converter:1.0.0
|
||||
com.squareup.okhttp3:logging-interceptor:4.12.0
|
||||
com.squareup.okhttp3:okhttp:4.12.0
|
||||
com.squareup.okio:okio-jvm:3.6.0
|
||||
com.squareup.okio:okio:3.6.0
|
||||
com.squareup.retrofit2:retrofit:2.9.0
|
||||
io.coil-kt:coil-base:2.4.0
|
||||
io.coil-kt:coil-compose-base:2.4.0
|
||||
io.coil-kt:coil-compose:2.4.0
|
||||
io.coil-kt:coil-svg:2.4.0
|
||||
io.coil-kt:coil:2.4.0
|
||||
javax.inject:javax.inject:1
|
||||
org.checkerframework:checker-qual:3.12.0
|
||||
org.jetbrains.kotlin:kotlin-stdlib-common:1.9.10
|
||||
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.10
|
||||
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.10
|
||||
org.jetbrains.kotlin:kotlin-stdlib:1.9.10
|
||||
org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3
|
||||
org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.7.3
|
||||
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.7.3
|
||||
org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3
|
||||
org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.7.3
|
||||
org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.4.1
|
||||
org.jetbrains.kotlinx:kotlinx-datetime:0.4.1
|
||||
org.jetbrains.kotlinx:kotlinx-serialization-bom:1.6.0
|
||||
org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.6.0
|
||||
org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.0
|
||||
org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.6.0
|
||||
org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.0
|
||||
org.jetbrains:annotations:23.0.0
|
@ -0,0 +1,211 @@
|
||||
androidx.activity:activity-compose:1.8.0
|
||||
androidx.activity:activity-ktx:1.8.0
|
||||
androidx.activity:activity:1.8.0
|
||||
androidx.annotation:annotation-experimental:1.3.0
|
||||
androidx.annotation:annotation-jvm:1.6.0
|
||||
androidx.annotation:annotation:1.6.0
|
||||
androidx.appcompat:appcompat-resources:1.6.1
|
||||
androidx.appcompat:appcompat:1.6.1
|
||||
androidx.arch.core:core-common:2.2.0
|
||||
androidx.arch.core:core-runtime:2.2.0
|
||||
androidx.autofill:autofill:1.0.0
|
||||
androidx.browser:browser:1.6.0
|
||||
androidx.collection:collection-ktx:1.1.0
|
||||
androidx.collection:collection:1.2.0
|
||||
androidx.compose.animation:animation-android:1.5.4
|
||||
androidx.compose.animation:animation-core-android:1.5.4
|
||||
androidx.compose.animation:animation-core:1.5.4
|
||||
androidx.compose.animation:animation:1.5.4
|
||||
androidx.compose.foundation:foundation-android:1.5.4
|
||||
androidx.compose.foundation:foundation-layout-android:1.5.4
|
||||
androidx.compose.foundation:foundation-layout:1.5.4
|
||||
androidx.compose.foundation:foundation:1.5.4
|
||||
androidx.compose.material3:material3-window-size-class:1.1.2
|
||||
androidx.compose.material3:material3:1.1.2
|
||||
androidx.compose.material:material-icons-core-android:1.5.4
|
||||
androidx.compose.material:material-icons-core:1.5.4
|
||||
androidx.compose.material:material-icons-extended-android:1.5.4
|
||||
androidx.compose.material:material-icons-extended:1.5.4
|
||||
androidx.compose.material:material-ripple-android:1.5.4
|
||||
androidx.compose.material:material-ripple:1.5.4
|
||||
androidx.compose.runtime:runtime-android:1.5.4
|
||||
androidx.compose.runtime:runtime-livedata:1.5.4
|
||||
androidx.compose.runtime:runtime-saveable-android:1.5.4
|
||||
androidx.compose.runtime:runtime-saveable:1.5.4
|
||||
androidx.compose.runtime:runtime-tracing:1.0.0-alpha03
|
||||
androidx.compose.runtime:runtime:1.5.4
|
||||
androidx.compose.ui:ui-android:1.5.4
|
||||
androidx.compose.ui:ui-geometry-android:1.5.4
|
||||
androidx.compose.ui:ui-geometry:1.5.4
|
||||
androidx.compose.ui:ui-graphics-android:1.5.4
|
||||
androidx.compose.ui:ui-graphics:1.5.4
|
||||
androidx.compose.ui:ui-text-android:1.5.4
|
||||
androidx.compose.ui:ui-text:1.5.4
|
||||
androidx.compose.ui:ui-tooling-preview-android:1.5.4
|
||||
androidx.compose.ui:ui-tooling-preview:1.5.4
|
||||
androidx.compose.ui:ui-unit-android:1.5.4
|
||||
androidx.compose.ui:ui-unit:1.5.4
|
||||
androidx.compose.ui:ui-util-android:1.5.4
|
||||
androidx.compose.ui:ui-util:1.5.4
|
||||
androidx.compose.ui:ui:1.5.4
|
||||
androidx.compose:compose-bom:2023.10.01
|
||||
androidx.concurrent:concurrent-futures:1.1.0
|
||||
androidx.core:core-ktx:1.12.0
|
||||
androidx.core:core-splashscreen:1.0.1
|
||||
androidx.core:core:1.12.0
|
||||
androidx.cursoradapter:cursoradapter:1.0.0
|
||||
androidx.customview:customview-poolingcontainer:1.0.0
|
||||
androidx.customview:customview:1.0.0
|
||||
androidx.datastore:datastore-core:1.0.0
|
||||
androidx.datastore:datastore-preferences-core:1.0.0
|
||||
androidx.datastore:datastore-preferences:1.0.0
|
||||
androidx.datastore:datastore:1.0.0
|
||||
androidx.documentfile:documentfile:1.0.0
|
||||
androidx.drawerlayout:drawerlayout:1.0.0
|
||||
androidx.emoji2:emoji2-views-helper:1.4.0
|
||||
androidx.emoji2:emoji2:1.4.0
|
||||
androidx.exifinterface:exifinterface:1.3.6
|
||||
androidx.fragment:fragment:1.5.1
|
||||
androidx.hilt:hilt-common:1.1.0
|
||||
androidx.hilt:hilt-navigation-compose:1.0.0
|
||||
androidx.hilt:hilt-navigation:1.0.0
|
||||
androidx.hilt:hilt-work:1.1.0
|
||||
androidx.interpolator:interpolator:1.0.0
|
||||
androidx.legacy:legacy-support-core-utils:1.0.0
|
||||
androidx.lifecycle:lifecycle-common-java8:2.6.2
|
||||
androidx.lifecycle:lifecycle-common:2.6.2
|
||||
androidx.lifecycle:lifecycle-livedata-core-ktx:2.6.2
|
||||
androidx.lifecycle:lifecycle-livedata-core:2.6.2
|
||||
androidx.lifecycle:lifecycle-livedata-ktx:2.6.2
|
||||
androidx.lifecycle:lifecycle-livedata:2.6.2
|
||||
androidx.lifecycle:lifecycle-process:2.6.2
|
||||
androidx.lifecycle:lifecycle-runtime-compose:2.6.2
|
||||
androidx.lifecycle:lifecycle-runtime-ktx:2.6.2
|
||||
androidx.lifecycle:lifecycle-runtime:2.6.2
|
||||
androidx.lifecycle:lifecycle-service:2.6.2
|
||||
androidx.lifecycle:lifecycle-viewmodel-compose:2.6.2
|
||||
androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2
|
||||
androidx.lifecycle:lifecycle-viewmodel-savedstate:2.6.2
|
||||
androidx.lifecycle:lifecycle-viewmodel:2.6.2
|
||||
androidx.loader:loader:1.0.0
|
||||
androidx.localbroadcastmanager:localbroadcastmanager:1.0.0
|
||||
androidx.metrics:metrics-performance:1.0.0-alpha04
|
||||
androidx.navigation:navigation-common-ktx:2.7.4
|
||||
androidx.navigation:navigation-common:2.7.4
|
||||
androidx.navigation:navigation-compose:2.7.4
|
||||
androidx.navigation:navigation-runtime-ktx:2.7.4
|
||||
androidx.navigation:navigation-runtime:2.7.4
|
||||
androidx.print:print:1.0.0
|
||||
androidx.privacysandbox.ads:ads-adservices-java:1.0.0-beta05
|
||||
androidx.privacysandbox.ads:ads-adservices:1.0.0-beta05
|
||||
androidx.profileinstaller:profileinstaller:1.3.1
|
||||
androidx.resourceinspection:resourceinspection-annotation:1.0.1
|
||||
androidx.room:room-common:2.6.0
|
||||
androidx.room:room-ktx:2.6.0
|
||||
androidx.room:room-runtime:2.6.0
|
||||
androidx.savedstate:savedstate-ktx:1.2.1
|
||||
androidx.savedstate:savedstate:1.2.1
|
||||
androidx.sqlite:sqlite-framework:2.4.0
|
||||
androidx.sqlite:sqlite:2.4.0
|
||||
androidx.startup:startup-runtime:1.1.1
|
||||
androidx.tracing:tracing-ktx:1.2.0-alpha02
|
||||
androidx.tracing:tracing-perfetto-common:1.0.0-alpha11
|
||||
androidx.tracing:tracing-perfetto:1.0.0-alpha11
|
||||
androidx.tracing:tracing:1.2.0-alpha02
|
||||
androidx.vectordrawable:vectordrawable-animated:1.1.0
|
||||
androidx.vectordrawable:vectordrawable:1.1.0
|
||||
androidx.versionedparcelable:versionedparcelable:1.1.1
|
||||
androidx.viewpager:viewpager:1.0.0
|
||||
androidx.window.extensions.core:core:1.0.0
|
||||
androidx.window:window:1.1.0
|
||||
androidx.work:work-runtime-ktx:2.9.0-rc01
|
||||
androidx.work:work-runtime:2.9.0-rc01
|
||||
com.caverock:androidsvg-aar:1.4
|
||||
com.google.accompanist:accompanist-drawablepainter:0.30.1
|
||||
com.google.accompanist:accompanist-permissions:0.32.0
|
||||
com.google.android.datatransport:transport-api:3.0.0
|
||||
com.google.android.datatransport:transport-backend-cct:3.1.9
|
||||
com.google.android.datatransport:transport-runtime:3.1.9
|
||||
com.google.android.gms:play-services-ads-identifier:18.0.0
|
||||
com.google.android.gms:play-services-base:18.0.1
|
||||
com.google.android.gms:play-services-basement:18.1.0
|
||||
com.google.android.gms:play-services-cloud-messaging:17.0.1
|
||||
com.google.android.gms:play-services-measurement-api:21.4.0
|
||||
com.google.android.gms:play-services-measurement-base:21.4.0
|
||||
com.google.android.gms:play-services-measurement-impl:21.4.0
|
||||
com.google.android.gms:play-services-measurement-sdk-api:21.4.0
|
||||
com.google.android.gms:play-services-measurement-sdk:21.4.0
|
||||
com.google.android.gms:play-services-measurement:21.4.0
|
||||
com.google.android.gms:play-services-oss-licenses:17.0.1
|
||||
com.google.android.gms:play-services-stats:17.0.2
|
||||
com.google.android.gms:play-services-tasks:18.0.2
|
||||
com.google.code.findbugs:jsr305:3.0.2
|
||||
com.google.dagger:dagger-lint-aar:2.48.1
|
||||
com.google.dagger:dagger:2.48.1
|
||||
com.google.dagger:hilt-android:2.48.1
|
||||
com.google.dagger:hilt-core:2.48.1
|
||||
com.google.errorprone:error_prone_annotations:2.11.0
|
||||
com.google.firebase:firebase-abt:21.1.1
|
||||
com.google.firebase:firebase-analytics-ktx:21.4.0
|
||||
com.google.firebase:firebase-analytics:21.4.0
|
||||
com.google.firebase:firebase-annotations:16.2.0
|
||||
com.google.firebase:firebase-bom:32.4.0
|
||||
com.google.firebase:firebase-common-ktx:20.4.2
|
||||
com.google.firebase:firebase-common:20.4.2
|
||||
com.google.firebase:firebase-components:17.1.5
|
||||
com.google.firebase:firebase-config:21.5.0
|
||||
com.google.firebase:firebase-crashlytics-ktx:18.5.0
|
||||
com.google.firebase:firebase-crashlytics:18.5.0
|
||||
com.google.firebase:firebase-datatransport:18.1.8
|
||||
com.google.firebase:firebase-encoders-json:18.0.1
|
||||
com.google.firebase:firebase-encoders-proto:16.0.0
|
||||
com.google.firebase:firebase-encoders:17.0.0
|
||||
com.google.firebase:firebase-iid-interop:17.1.0
|
||||
com.google.firebase:firebase-installations-interop:17.1.1
|
||||
com.google.firebase:firebase-installations:17.2.0
|
||||
com.google.firebase:firebase-measurement-connector:19.0.0
|
||||
com.google.firebase:firebase-messaging-ktx:23.3.0
|
||||
com.google.firebase:firebase-messaging:23.3.0
|
||||
com.google.firebase:firebase-perf-ktx:20.5.0
|
||||
com.google.firebase:firebase-perf:20.5.0
|
||||
com.google.firebase:firebase-sessions:1.1.0
|
||||
com.google.firebase:protolite-well-known-types:18.0.0
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:31.1-android
|
||||
com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
com.google.j2objc:j2objc-annotations:1.3
|
||||
com.google.protobuf:protobuf-javalite:3.24.4
|
||||
com.google.protobuf:protobuf-kotlin-lite:3.24.4
|
||||
com.jakewharton.retrofit:retrofit2-kotlinx-serialization-converter:1.0.0
|
||||
com.squareup.okhttp3:logging-interceptor:4.12.0
|
||||
com.squareup.okhttp3:okhttp:4.12.0
|
||||
com.squareup.okio:okio-jvm:3.6.0
|
||||
com.squareup.okio:okio:3.6.0
|
||||
com.squareup.retrofit2:retrofit:2.9.0
|
||||
io.coil-kt:coil-base:2.4.0
|
||||
io.coil-kt:coil-compose-base:2.4.0
|
||||
io.coil-kt:coil-compose:2.4.0
|
||||
io.coil-kt:coil-svg:2.4.0
|
||||
io.coil-kt:coil:2.4.0
|
||||
io.github.aakira:napier-android:1.4.1
|
||||
io.github.aakira:napier:1.4.1
|
||||
javax.inject:javax.inject:1
|
||||
org.checkerframework:checker-qual:3.12.0
|
||||
org.jetbrains.kotlin:kotlin-stdlib-common:1.9.10
|
||||
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.9.10
|
||||
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.10
|
||||
org.jetbrains.kotlin:kotlin-stdlib:1.9.10
|
||||
org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3
|
||||
org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.7.3
|
||||
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.7.3
|
||||
org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3
|
||||
org.jetbrains.kotlinx:kotlinx-coroutines-guava:1.7.3
|
||||
org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.7.3
|
||||
org.jetbrains.kotlinx:kotlinx-datetime-jvm:0.4.1
|
||||
org.jetbrains.kotlinx:kotlinx-datetime:0.4.1
|
||||
org.jetbrains.kotlinx:kotlinx-serialization-bom:1.6.0
|
||||
org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.6.0
|
||||
org.jetbrains.kotlinx:kotlinx-serialization-core:1.6.0
|
||||
org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.6.0
|
||||
org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.0
|
||||
org.jetbrains:annotations:23.0.0
|
@ -0,0 +1,121 @@
|
||||
package: name='com.google.samples.apps.nowinandroid' versionCode='8' versionName='0.1.2' platformBuildVersionName='14' platformBuildVersionCode='34' compileSdkVersion='34' compileSdkVersionCodename='14'
|
||||
sdkVersion:'21'
|
||||
targetSdkVersion:'34'
|
||||
uses-permission: name='android.permission.INTERNET'
|
||||
uses-permission: name='android.permission.ACCESS_NETWORK_STATE'
|
||||
uses-permission: name='android.permission.POST_NOTIFICATIONS'
|
||||
uses-permission: name='android.permission.WAKE_LOCK'
|
||||
uses-permission: name='com.google.android.c2dm.permission.RECEIVE'
|
||||
uses-permission: name='com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE'
|
||||
uses-permission: name='android.permission.RECEIVE_BOOT_COMPLETED'
|
||||
uses-permission: name='android.permission.FOREGROUND_SERVICE'
|
||||
uses-permission: name='com.google.samples.apps.nowinandroid.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION'
|
||||
application-label:'Now in Android'
|
||||
application-label-af:'Now in Android'
|
||||
application-label-am:'Now in Android'
|
||||
application-label-ar:'Now in Android'
|
||||
application-label-as:'Now in Android'
|
||||
application-label-az:'Now in Android'
|
||||
application-label-be:'Now in Android'
|
||||
application-label-bg:'Now in Android'
|
||||
application-label-bn:'Now in Android'
|
||||
application-label-bs:'Now in Android'
|
||||
application-label-ca:'Now in Android'
|
||||
application-label-cs:'Now in Android'
|
||||
application-label-da:'Now in Android'
|
||||
application-label-de:'Now in Android'
|
||||
application-label-el:'Now in Android'
|
||||
application-label-en-AU:'Now in Android'
|
||||
application-label-en-CA:'Now in Android'
|
||||
application-label-en-GB:'Now in Android'
|
||||
application-label-en-IN:'Now in Android'
|
||||
application-label-en-XC:'Now in Android'
|
||||
application-label-es:'Now in Android'
|
||||
application-label-es-US:'Now in Android'
|
||||
application-label-et:'Now in Android'
|
||||
application-label-eu:'Now in Android'
|
||||
application-label-fa:'Now in Android'
|
||||
application-label-fi:'Now in Android'
|
||||
application-label-fr:'Now in Android'
|
||||
application-label-fr-CA:'Now in Android'
|
||||
application-label-gl:'Now in Android'
|
||||
application-label-gu:'Now in Android'
|
||||
application-label-hi:'Now in Android'
|
||||
application-label-hr:'Now in Android'
|
||||
application-label-hu:'Now in Android'
|
||||
application-label-hy:'Now in Android'
|
||||
application-label-in:'Now in Android'
|
||||
application-label-is:'Now in Android'
|
||||
application-label-it:'Now in Android'
|
||||
application-label-iw:'Now in Android'
|
||||
application-label-ja:'Now in Android'
|
||||
application-label-ka:'Now in Android'
|
||||
application-label-kk:'Now in Android'
|
||||
application-label-km:'Now in Android'
|
||||
application-label-kn:'Now in Android'
|
||||
application-label-ko:'Now in Android'
|
||||
application-label-ky:'Now in Android'
|
||||
application-label-lo:'Now in Android'
|
||||
application-label-lt:'Now in Android'
|
||||
application-label-lv:'Now in Android'
|
||||
application-label-mk:'Now in Android'
|
||||
application-label-ml:'Now in Android'
|
||||
application-label-mn:'Now in Android'
|
||||
application-label-mr:'Now in Android'
|
||||
application-label-ms:'Now in Android'
|
||||
application-label-my:'Now in Android'
|
||||
application-label-nb:'Now in Android'
|
||||
application-label-ne:'Now in Android'
|
||||
application-label-nl:'Now in Android'
|
||||
application-label-or:'Now in Android'
|
||||
application-label-pa:'Now in Android'
|
||||
application-label-pl:'Now in Android'
|
||||
application-label-pt:'Now in Android'
|
||||
application-label-pt-BR:'Now in Android'
|
||||
application-label-pt-PT:'Now in Android'
|
||||
application-label-ro:'Now in Android'
|
||||
application-label-ru:'Now in Android'
|
||||
application-label-si:'Now in Android'
|
||||
application-label-sk:'Now in Android'
|
||||
application-label-sl:'Now in Android'
|
||||
application-label-sq:'Now in Android'
|
||||
application-label-sr:'Now in Android'
|
||||
application-label-sr-Latn:'Now in Android'
|
||||
application-label-sv:'Now in Android'
|
||||
application-label-sw:'Now in Android'
|
||||
application-label-ta:'Now in Android'
|
||||
application-label-te:'Now in Android'
|
||||
application-label-th:'Now in Android'
|
||||
application-label-tl:'Now in Android'
|
||||
application-label-tr:'Now in Android'
|
||||
application-label-uk:'Now in Android'
|
||||
application-label-ur:'Now in Android'
|
||||
application-label-uz:'Now in Android'
|
||||
application-label-vi:'Now in Android'
|
||||
application-label-zh-CN:'Now in Android'
|
||||
application-label-zh-HK:'Now in Android'
|
||||
application-label-zh-TW:'Now in Android'
|
||||
application-label-zu:'Now in Android'
|
||||
application-icon-120:'res/mipmap-anydpi-v26/ic_launcher.xml'
|
||||
application-icon-160:'res/mipmap-anydpi-v26/ic_launcher.xml'
|
||||
application-icon-240:'res/mipmap-anydpi-v26/ic_launcher.xml'
|
||||
application-icon-320:'res/mipmap-anydpi-v26/ic_launcher.xml'
|
||||
application-icon-480:'res/mipmap-anydpi-v26/ic_launcher.xml'
|
||||
application-icon-640:'res/mipmap-anydpi-v26/ic_launcher.xml'
|
||||
application-icon-65534:'res/mipmap-anydpi-v26/ic_launcher.xml'
|
||||
application: label='Now in Android' icon='res/mipmap-anydpi-v26/ic_launcher.xml'
|
||||
launchable-activity: name='com.google.samples.apps.nowinandroid.MainActivity' label='' icon=''
|
||||
uses-library-not-required:'androidx.window.extensions'
|
||||
uses-library-not-required:'androidx.window.sidecar'
|
||||
uses-library-not-required:'android.ext.adservices'
|
||||
feature-group: label=''
|
||||
uses-feature: name='android.hardware.faketouch'
|
||||
uses-implied-feature: name='android.hardware.faketouch' reason='default feature for all apps'
|
||||
main
|
||||
other-activities
|
||||
other-receivers
|
||||
other-services
|
||||
supports-screens: 'small' 'normal' 'large' 'xlarge'
|
||||
supports-any-density: 'true'
|
||||
locales: '--_--' 'af' 'am' 'ar' 'as' 'az' 'be' 'bg' 'bn' 'bs' 'ca' 'cs' 'da' 'de' 'el' 'en-AU' 'en-CA' 'en-GB' 'en-IN' 'en-XC' 'es' 'es-US' 'et' 'eu' 'fa' 'fi' 'fr' 'fr-CA' 'gl' 'gu' 'hi' 'hr' 'hu' 'hy' 'in' 'is' 'it' 'iw' 'ja' 'ka' 'kk' 'km' 'kn' 'ko' 'ky' 'lo' 'lt' 'lv' 'mk' 'ml' 'mn' 'mr' 'ms' 'my' 'nb' 'ne' 'nl' 'or' 'pa' 'pl' 'pt' 'pt-BR' 'pt-PT' 'ro' 'ru' 'si' 'sk' 'sl' 'sq' 'sr' 'sr-Latn' 'sv' 'sw' 'ta' 'te' 'th' 'tl' 'tr' 'uk' 'ur' 'uz' 'vi' 'zh-CN' 'zh-HK' 'zh-TW' 'zu'
|
||||
densities: '120' '160' '240' '320' '480' '640' '65534'
|
@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright 2023 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<resources>
|
||||
<!-- Allow users to distinguish between build variants by having a different background color
|
||||
for the launcher icon. See https://github.com/android/nowinandroid/pull/989. -->
|
||||
<color name="ic_launcher_background_tint">#FFFFFF</color>
|
||||
<color name="ic_launcher_foreground_tint">#FF006780</color>
|
||||
</resources>
|
@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright 2023 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<resources>
|
||||
<!-- Allow users to distinguish between build variants by having a different background color
|
||||
for the launcher icon. See https://github.com/android/nowinandroid/pull/989. -->
|
||||
<color name="ic_launcher_background_tint">#000000</color>
|
||||
<color name="ic_launcher_foreground_tint">#FF006780</color>
|
||||
</resources>
|
@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright 2023 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<resources>
|
||||
<!-- Allow users to distinguish between build variants by having a different background color
|
||||
for the launcher icon. See https://github.com/android/nowinandroid/pull/989. -->
|
||||
<color name="ic_launcher_background_tint">#000000</color>
|
||||
<color name="ic_launcher_foreground_tint">#FFA23F16</color>
|
||||
</resources>
|
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 202 KiB After Width: | Height: | Size: 234 KiB |
@ -0,0 +1,40 @@
|
||||
/*
|
||||
* Copyright 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.google.samples.apps.nowinandroid.baselineprofile
|
||||
|
||||
import androidx.benchmark.macro.junit4.BaselineProfileRule
|
||||
import com.google.samples.apps.nowinandroid.PACKAGE_NAME
|
||||
import com.google.samples.apps.nowinandroid.bookmarks.goToBookmarksScreen
|
||||
import com.google.samples.apps.nowinandroid.startActivityAndAllowNotifications
|
||||
import org.junit.Rule
|
||||
import org.junit.Test
|
||||
|
||||
/**
|
||||
* Baseline Profile of the "Bookmarks" screen
|
||||
*/
|
||||
class BookmarksBaselineProfile {
|
||||
@get:Rule val baselineProfileRule = BaselineProfileRule()
|
||||
|
||||
@Test
|
||||
fun generate() =
|
||||
baselineProfileRule.collect(PACKAGE_NAME) {
|
||||
startActivityAndAllowNotifications()
|
||||
|
||||
// Navigate to saved screen
|
||||
goToBookmarksScreen()
|
||||
}
|
||||
}
|
@ -0,0 +1,42 @@
|
||||
/*
|
||||
* Copyright 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.google.samples.apps.nowinandroid.baselineprofile
|
||||
|
||||
import androidx.benchmark.macro.junit4.BaselineProfileRule
|
||||
import com.google.samples.apps.nowinandroid.PACKAGE_NAME
|
||||
import com.google.samples.apps.nowinandroid.interests.goToInterestsScreen
|
||||
import com.google.samples.apps.nowinandroid.interests.interestsScrollTopicsDownUp
|
||||
import com.google.samples.apps.nowinandroid.startActivityAndAllowNotifications
|
||||
import org.junit.Rule
|
||||
import org.junit.Test
|
||||
|
||||
/**
|
||||
* Baseline Profile of the "Interests" screen
|
||||
*/
|
||||
class InterestsBaselineProfile {
|
||||
@get:Rule val baselineProfileRule = BaselineProfileRule()
|
||||
|
||||
@Test
|
||||
fun generate() =
|
||||
baselineProfileRule.collect(PACKAGE_NAME) {
|
||||
startActivityAndAllowNotifications()
|
||||
|
||||
// Navigate to interests screen
|
||||
goToInterestsScreen()
|
||||
interestsScrollTopicsDownUp()
|
||||
}
|
||||
}
|
@ -0,0 +1,40 @@
|
||||
/*
|
||||
* Copyright 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.google.samples.apps.nowinandroid.baselineprofile
|
||||
|
||||
import androidx.benchmark.macro.junit4.BaselineProfileRule
|
||||
import com.google.samples.apps.nowinandroid.PACKAGE_NAME
|
||||
import com.google.samples.apps.nowinandroid.startActivityAndAllowNotifications
|
||||
import org.junit.Rule
|
||||
import org.junit.Test
|
||||
|
||||
/**
|
||||
* Baseline Profile for app startup. This profile also enables using [Dex Layout Optimizations](https://developer.android.com/topic/performance/baselineprofiles/dex-layout-optimizations)
|
||||
* via the `includeInStartupProfile` parameter.
|
||||
*/
|
||||
class StartupBaselineProfile {
|
||||
@get:Rule val baselineProfileRule = BaselineProfileRule()
|
||||
|
||||
@Test
|
||||
fun generate() =
|
||||
baselineProfileRule.collect(
|
||||
PACKAGE_NAME,
|
||||
includeInStartupProfile = true,
|
||||
) {
|
||||
startActivityAndAllowNotifications()
|
||||
}
|
||||
}
|
@ -0,0 +1,160 @@
|
||||
/*
|
||||
* Copyright 2023 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.google.samples.apps.nowinandroid
|
||||
|
||||
import com.android.build.api.artifact.SingleArtifact
|
||||
import com.android.build.api.variant.ApplicationAndroidComponentsExtension
|
||||
import com.android.build.gradle.BaseExtension
|
||||
import com.android.SdkConstants
|
||||
import com.google.common.truth.Truth.assertWithMessage
|
||||
import org.gradle.api.DefaultTask
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.file.DirectoryProperty
|
||||
import org.gradle.api.file.RegularFileProperty
|
||||
import org.gradle.api.provider.Property
|
||||
import org.gradle.api.tasks.CacheableTask
|
||||
import org.gradle.api.tasks.Copy
|
||||
import org.gradle.api.tasks.Input
|
||||
import org.gradle.api.tasks.InputFile
|
||||
import org.gradle.api.tasks.OutputDirectory
|
||||
import org.gradle.api.tasks.OutputFile
|
||||
import org.gradle.api.tasks.PathSensitive
|
||||
import org.gradle.api.tasks.PathSensitivity
|
||||
import org.gradle.api.tasks.TaskAction
|
||||
import org.gradle.configurationcache.extensions.capitalized
|
||||
import org.gradle.kotlin.dsl.register
|
||||
import org.gradle.language.base.plugins.LifecycleBasePlugin
|
||||
import org.gradle.process.ExecOperations
|
||||
import java.io.File
|
||||
import javax.inject.Inject
|
||||
|
||||
@CacheableTask
|
||||
abstract class GenerateBadgingTask : DefaultTask() {
|
||||
|
||||
@get:OutputFile
|
||||
abstract val badging: RegularFileProperty
|
||||
|
||||
@get:PathSensitive(PathSensitivity.NONE)
|
||||
@get:InputFile
|
||||
abstract val apk: RegularFileProperty
|
||||
|
||||
@get:PathSensitive(PathSensitivity.NONE)
|
||||
@get:InputFile
|
||||
abstract val aapt2Executable: RegularFileProperty
|
||||
|
||||
@get:Inject
|
||||
abstract val execOperations: ExecOperations
|
||||
|
||||
@TaskAction
|
||||
fun taskAction() {
|
||||
execOperations.exec {
|
||||
commandLine(
|
||||
aapt2Executable.get().asFile.absolutePath,
|
||||
"dump",
|
||||
"badging",
|
||||
apk.get().asFile.absolutePath,
|
||||
)
|
||||
standardOutput = badging.asFile.get().outputStream()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@CacheableTask
|
||||
abstract class CheckBadgingTask : DefaultTask() {
|
||||
|
||||
// In order for the task to be up-to-date when the inputs have not changed,
|
||||
// the task must declare an output, even if it's not used. Tasks with no
|
||||
// output are always run regardless of whether the inputs changed
|
||||
@get:OutputDirectory
|
||||
abstract val output: DirectoryProperty
|
||||
|
||||
@get:PathSensitive(PathSensitivity.NONE)
|
||||
@get:InputFile
|
||||
abstract val goldenBadging: RegularFileProperty
|
||||
|
||||
@get:PathSensitive(PathSensitivity.NONE)
|
||||
@get:InputFile
|
||||
abstract val generatedBadging: RegularFileProperty
|
||||
|
||||
@get:Input
|
||||
abstract val updateBadgingTaskName: Property<String>
|
||||
|
||||
override fun getGroup(): String = LifecycleBasePlugin.VERIFICATION_GROUP
|
||||
|
||||
@TaskAction
|
||||
fun taskAction() {
|
||||
assertWithMessage(
|
||||
"Generated badging is different from golden badging! " +
|
||||
"If this change is intended, run ./gradlew ${updateBadgingTaskName.get()}",
|
||||
)
|
||||
.that(generatedBadging.get().asFile.readText())
|
||||
.isEqualTo(goldenBadging.get().asFile.readText())
|
||||
}
|
||||
}
|
||||
|
||||
fun Project.configureBadgingTasks(
|
||||
baseExtension: BaseExtension,
|
||||
componentsExtension: ApplicationAndroidComponentsExtension,
|
||||
) {
|
||||
// Registers a callback to be called, when a new variant is configured
|
||||
componentsExtension.onVariants { variant ->
|
||||
// Registers a new task to verify the app bundle.
|
||||
val capitalizedVariantName = variant.name.capitalized()
|
||||
val generateBadgingTaskName = "generate${capitalizedVariantName}Badging"
|
||||
val generateBadging =
|
||||
tasks.register<GenerateBadgingTask>(generateBadgingTaskName) {
|
||||
apk.set(
|
||||
variant.artifacts.get(SingleArtifact.APK_FROM_BUNDLE),
|
||||
)
|
||||
aapt2Executable.set(
|
||||
File(
|
||||
baseExtension.sdkDirectory,
|
||||
"${SdkConstants.FD_BUILD_TOOLS}/" +
|
||||
"${baseExtension.buildToolsVersion}/" +
|
||||
SdkConstants.FN_AAPT2,
|
||||
),
|
||||
)
|
||||
|
||||
badging.set(
|
||||
project.layout.buildDirectory.file(
|
||||
"outputs/apk_from_bundle/${variant.name}/${variant.name}-badging.txt",
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
val updateBadgingTaskName = "update${capitalizedVariantName}Badging"
|
||||
tasks.register<Copy>(updateBadgingTaskName) {
|
||||
from(generateBadging.get().badging)
|
||||
into(project.layout.projectDirectory)
|
||||
}
|
||||
|
||||
val checkBadgingTaskName = "check${capitalizedVariantName}Badging"
|
||||
tasks.register<CheckBadgingTask>(checkBadgingTaskName) {
|
||||
goldenBadging.set(
|
||||
project.layout.projectDirectory.file("${variant.name}-badging.txt"),
|
||||
)
|
||||
generatedBadging.set(
|
||||
generateBadging.get().badging,
|
||||
)
|
||||
this.updateBadgingTaskName.set(updateBadgingTaskName)
|
||||
|
||||
output.set(
|
||||
project.layout.buildDirectory.dir("intermediates/$checkBadgingTaskName"),
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
Before Width: | Height: | Size: 373 B After Width: | Height: | Size: 373 B |
Before Width: | Height: | Size: 265 B After Width: | Height: | Size: 265 B |
Before Width: | Height: | Size: 478 B After Width: | Height: | Size: 478 B |
Before Width: | Height: | Size: 673 B After Width: | Height: | Size: 673 B |
@ -0,0 +1,55 @@
|
||||
/*
|
||||
* Copyright 2023 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
plugins {
|
||||
alias(libs.plugins.nowinandroid.android.library)
|
||||
alias(libs.plugins.protobuf)
|
||||
}
|
||||
|
||||
android {
|
||||
namespace = "com.google.samples.apps.nowinandroid.core.datastore.proto"
|
||||
}
|
||||
|
||||
// Setup protobuf configuration, generating lite Java and Kotlin classes
|
||||
protobuf {
|
||||
protoc {
|
||||
artifact = libs.protobuf.protoc.get().toString()
|
||||
}
|
||||
generateProtoTasks {
|
||||
all().forEach { task ->
|
||||
task.builtins {
|
||||
register("java") {
|
||||
option("lite")
|
||||
}
|
||||
register("kotlin") {
|
||||
option("lite")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
androidComponents.beforeVariants {
|
||||
android.sourceSets.register(it.name) {
|
||||
val buildDir = layout.buildDirectory.get().asFile
|
||||
java.srcDir(buildDir.resolve("generated/source/proto/${it.name}/java"))
|
||||
kotlin.srcDir(buildDir.resolve("generated/source/proto/${it.name}/kotlin"))
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation(libs.protobuf.kotlin.lite)
|
||||
}
|