@ -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"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
@ -1,6 +1,6 @@
|
|||||||
<component name="CopyrightManager">
|
<component name="CopyrightManager">
|
||||||
<copyright>
|
<copyright>
|
||||||
<option name="notice" value="Copyright &#36;today.year 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." />
|
<option name="notice" value="Copyright &#36;today.year 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." />
|
||||||
<option name="myName" value="The Android Open Source Project" />
|
<option name="myName" value="The Android Open Source Project" />
|
||||||
</copyright>
|
</copyright>
|
||||||
</component>
|
</component>
|
@ -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)
|
||||||
|
}
|