Skip to content
This repository was archived by the owner on May 2, 2026. It is now read-only.

Add QR code pairing flow for Warpnet fat-node connection#5

Merged
filinvadim merged 9 commits intomainfrom
claude/qr-pairing-android-tRln7
Apr 19, 2026
Merged

Add QR code pairing flow for Warpnet fat-node connection#5
filinvadim merged 9 commits intomainfrom
claude/qr-pairing-android-tRln7

Conversation

@filinvadim
Copy link
Copy Markdown
Member

Summary

Implements a complete QR code-based pairing flow that allows users to scan a QR code from a Warpnet fat node and establish a secure connection. The flow includes camera preview, QR validation, confirmation dialog, and encrypted persistence of pairing credentials.

Key Changes

  • PairingActivity: New single-screen activity managing the full pairing lifecycle:

    • Camera preview with ML Kit QR code scanning (on-device, no Play Services required)
    • Confirmation dialog showing node owner, ID, and address
    • Progress indicator during pairing handshake
    • Error handling with retry capability (camera stays active on validation errors)
    • Automatic transition to MainActivity on successful pairing
  • QR Code Scanning:

    • QrCodeAnalyzer: CameraX ImageAnalysis delegate using ML Kit barcode scanner
    • Fires once on first valid QR detection, then discards subsequent frames
    • Supports retry without leaving the activity
  • Pairing Validation & Persistence:

    • AuthNodeInfoValidator: Validates QR payload structure and required fields
    • PairedNode: Data class holding identity, pinned peer ID, addresses, and network info
    • PairedNodeStore: Keystore-backed encrypted SharedPreferences for credential persistence
    • Credentials stored only after server accepts pairing (code 0)
  • Transport Layer Integration:

    • PairingCoordinator: Orchestrates dial → pair → persist sequence
    • WarpnetClient.connectAny(): Tries candidate addresses with per-address 10s timeout; surfaces firewall hints on total failure
    • WarpnetClient.pair(): Opens pairing stream, validates server response, distinguishes protocol errors from transport failures
    • WarpnetConfig: Now accepts configurable network parameter (was hardcoded)
  • MainActivity Integration:

    • Checks for existing pairing on startup
    • Bounces to PairingActivity if no pairing exists
    • Prevents infinite redirect loop on return from pairing
  • UI & Resources:

    • activity_pairing.xml: Layout with camera preview, message panel, progress indicator, and button controls
    • warpnet_pair.xml: Localized strings for QR scanning, confirmation, and error messages
  • Dependencies:

    • CameraX (preview + image analysis)
    • ML Kit barcode scanning (on-device QR decoding)
    • AndroidX Security Crypto (encrypted preferences)

Notable Implementation Details

  • QR payload is kept as raw JSON and echoed byte-for-byte to the fat node to avoid re-encoding drift that could break token comparison
  • Peer ID verification happens during libp2p Noise handshake; transport failures with "peer id mismatch" hint are mapped to a dedicated outcome for clearer UX
  • Camera permission is optional (non-required hardware); graceful fallback to manual JSON paste can be added later
  • Analyzer is re-armed on validation errors so users can retry without backing out
  • Identity is only persisted after server returns exactly {"code":0,"message":"Accepted"}

https://claude.ai/code/session_01YVkQT5maQWnBN4G59puLBV

Scan a fat-node AuthNodeInfo QR, verify the Noise handshake against
the advertised peer ID, submit the raw pairing JSON on
/private/post/admin/pair/0.0.0, and persist the Identity plus pinned
peer ID in EncryptedSharedPreferences. MainActivity routes to the
scanner on startup when no paired node exists.
@github-actions
Copy link
Copy Markdown

CI build failure (abc39d4)

Run: https://github.com/Warp-net/warpdroid/actions/runs/24638533548

:app:assembleDebug (last 60 KB)
To honour the JVM settings for this build a single-use Daemon process will be forked. For more on this, please refer to https://docs.gradle.org/9.0.0/userguide/gradle_daemon.html#sec:disabling_the_daemon in the Gradle documentation.
Daemon will be stopped at the end of the build 
Calculating task graph as no cached configuration is available for tasks: build
gradle/actions: Writing build results to /home/runner/work/_temp/.gradle-actions/build-results/build-1776630913569.json

1 problem was found storing the configuration cache.
- Task `:app:dataBindingMergeDependencyArtifactsBlueDebug` of type `com.android.build.gradle.internal.tasks.databinding.DataBindingMergeDependencyArtifactsTask`: error writing value of type 'org.gradle.api.internal.artifacts.configurations.ResolutionBackedFileCollection'

See the complete report at file:///home/runner/work/warpdroid/warpdroid/build/reports/configuration-cache/2bapbrt2cgkjcdszy5ro15j24/e575eap1s1q49wqxovveia8w5/configuration-cache-report.html

[Incubating] Problems report is available at: file:///home/runner/work/warpdroid/warpdroid/build/reports/problems/problems-report.html

FAILURE: Build failed with an exception.

* What went wrong:
Configuration cache state could not be cached: field `compileTimeDependencies` of task `:app:dataBindingMergeDependencyArtifactsBlueDebug` of type `com.android.build.gradle.internal.tasks.databinding.DataBindingMergeDependencyArtifactsTask`: error writing value of type 'org.gradle.api.internal.artifacts.configurations.ResolutionBackedFileCollection'
> Dependency verification failed for configuration ':app:blueDebugCompileClasspath'
  7 artifacts failed verification:
    - camera-camera2-1.5.0.module (androidx.camera:camera-camera2:1.5.0) from repository Google
    - camera-core-1.5.0.module (androidx.camera:camera-core:1.5.0) from repository Google
    - camera-lifecycle-1.5.0.module (androidx.camera:camera-lifecycle:1.5.0) from repository Google
    - camera-video-1.5.0.module (androidx.camera:camera-video:1.5.0) from repository Google
    - camera-view-1.5.0.module (androidx.camera:camera-view:1.5.0) from repository Google
    - featurecombinationquery-1.5.0.module (androidx.camera.featurecombinationquery:featurecombinationquery:1.5.0) from repository Google
    - security-crypto-1.1.0.module (androidx.security:security-crypto:1.1.0) from repository Google
  If the artifacts are trustworthy, you will need to update the gradle/verification-metadata.xml file. For more on how to do this, please refer to https://docs.gradle.org/9.0.0/userguide/dependency_verification.html#sec:troubleshooting-verification in the Gradle documentation.
  
  Open this report for more details: file:///home/runner/work/warpdroid/warpdroid/build/reports/dependency-verification/at-1776630909458/dependency-verification-report.html

* Try:
> Run with --info or --debug option to get more log output.
> Get more help at https://help.gradle.org.

* Exception is:
org.gradle.internal.cc.base.exceptions.ConfigurationCacheError: Configuration cache state could not be cached: field `compileTimeDependencies` of task `:app:dataBindingMergeDependencyArtifactsBlueDebug` of type `com.android.build.gradle.internal.tasks.databinding.DataBindingMergeDependencyArtifactsTask`: error writing value of type 'org.gradle.api.internal.artifacts.configurations.ResolutionBackedFileCollection'
	at org.gradle.internal.cc.impl.problems.ConfigurationCacheProblems.onError(ConfigurationCacheProblems.kt:170)
	at org.gradle.internal.serialize.graph.AbstractIsolateContext.onError(Contexts.kt:396)
	at org.gradle.internal.serialize.graph.BeanPropertyExtensionsKt.writePropertyValue(BeanPropertyExtensions.kt:36)
	at org.gradle.internal.serialize.beans.services.BeanPropertyWriter.writeStateOf(BeanPropertyWriter.kt:54)
	at org.gradle.internal.serialize.codecs.core.TaskNodeCodec$writeTask$3$2$1.invokeSuspend(TaskNodeCodec.kt:103)
	at org.gradle.internal.serialize.codecs.core.TaskNodeCodec$writeTask$3$2$1.invoke(TaskNodeCodec.kt)
	at org.gradle.internal.serialize.codecs.core.TaskNodeCodec$writeTask$3$2$1.invoke(TaskNodeCodec.kt)
	at org.gradle.internal.serialize.codecs.core.TaskNodeCodecKt.withTaskOf(TaskNodeCodec.kt:236)
	at org.gradle.internal.serialize.codecs.core.TaskNodeCodecKt.access$withTaskOf(TaskNodeCodec.kt:1)
	at org.gradle.internal.serialize.codecs.core.TaskNodeCodec.writeTask(TaskNodeCodec.kt:97)
	at org.gradle.internal.serialize.codecs.core.TaskNodeCodec.encode(TaskNodeCodec.kt:75)
	at org.gradle.internal.serialize.codecs.core.TaskNodeCodec.encode(TaskNodeCodec.kt:68)
	at org.gradle.internal.serialize.graph.codecs.BindingsBackedCodec.encode(BindingsBackedCodec.kt:66)
	at org.gradle.internal.serialize.graph.DefaultWriteContext.write(Contexts.kt:111)
	at org.gradle.internal.serialize.codecs.core.WorkNodeCodec$writeGroupedNodes$1$1$1.invokeSuspend(WorkNodeCodec.kt:327)
	at org.gradle.internal.serialize.codecs.core.WorkNodeCodec$writeGroupedNodes$1$1$1.invoke(WorkNodeCodec.kt)
	at org.gradle.internal.serialize.codecs.core.WorkNodeCodec$writeGroupedNodes$1$1$1.invoke(WorkNodeCodec.kt)
	at org.gradle.internal.serialize.codecs.core.WorkNodeCodec$safeRunnerFor$2$1$1.invokeSuspend(WorkNodeCodec.kt:395)
	at org.gradle.internal.serialize.codecs.core.WorkNodeCodec$safeRunnerFor$2$1$1.invoke(WorkNodeCodec.kt)
	at org.gradle.internal.serialize.codecs.core.WorkNodeCodec$safeRunnerFor$2$1$1.invoke(WorkNodeCodec.kt)
	at org.gradle.internal.serialize.graph.RunningKt$runWriteOperation$1.invokeSuspend(Running.kt:43)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:115)
	at org.gradle.internal.serialize.graph.RunningKt.runToCompletion(Running.kt:58)
	at org.gradle.internal.serialize.graph.RunningKt.runWriteOperation(Running.kt:42)
	at org.gradle.internal.serialize.codecs.core.WorkNodeCodec$safeRunnerFor$2$1.accept(WorkNodeCodec.kt:394)
	at org.gradle.internal.serialize.codecs.core.WorkNodeCodec$safeRunnerFor$2$1.accept(WorkNodeCodec.kt:393)
	at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.lambda$applyToMutableState$1(DefaultProjectStateRegistry.java:435)
	at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.lambda$fromMutableState$2(DefaultProjectStateRegistry.java:458)
	at org.gradle.internal.work.DefaultWorkerLeaseService.withReplacedLocks(DefaultWorkerLeaseService.java:359)
	at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.fromMutableState(DefaultProjectStateRegistry.java:458)
	at org.gradle.api.internal.project.DefaultProjectStateRegistry$ProjectStateImpl.applyToMutableState(DefaultProjectStateRegistry.java:434)
	at org.gradle.internal.serialize.codecs.core.WorkNodeCodec$safeRunnerFor$2.invokeSuspend(WorkNodeCodec.kt:393)
	at org.gradle.internal.serialize.codecs.core.WorkNodeCodec$safeRunnerFor$2.invoke(WorkNodeCodec.kt)
	at org.gradle.internal.serialize.codecs.core.WorkNodeCodec$safeRunnerFor$2.invoke(WorkNodeCodec.kt)
	at org.gradle.internal.serialize.codecs.core.WorkNodeCodec$writeGroupedNodes$1.invokeSuspend(WorkNodeCodec.kt:326)
	at org.gradle.internal.serialize.codecs.core.WorkNodeCodec$writeGroupedNodes$1.invoke(WorkNodeCodec.kt)
	at org.gradle.internal.serialize.codecs.core.WorkNodeCodec$writeGroupedNodes$1.invoke(WorkNodeCodec.kt)
	at org.gradle.internal.serialize.graph.RunningKt$runWriteOperation$1.invokeSuspend(Running.kt:43)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:115)
	at org.gradle.internal.serialize.graph.RunningKt.runToCompletion(Running.kt:58)
	at org.gradle.internal.serialize.graph.RunningKt.runWriteOperation(Running.kt:42)
	at org.gradle.internal.serialize.codecs.core.WorkNodeCodec.writeGroupedNodes(WorkNodeCodec.kt:322)
	at org.gradle.internal.serialize.codecs.core.WorkNodeCodec.writeNodes$lambda$16$lambda$15$lambda$14(WorkNodeCodec.kt:220)
	at org.gradle.internal.serialize.codecs.core.WorkNodeCodec$runBuildOperations$1$1.execute$lambda$2(WorkNodeCodec.kt:591)
	at org.gradle.internal.serialize.codecs.core.WorkNodeCodecKt$asBuildOperation$1.run(WorkNodeCodec.kt:634)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:166)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$QueueWorker.execute(DefaultBuildOperationExecutor.java:146)
	at org.gradle.internal.operations.DefaultBuildOperationQueue$WorkerRunnable.runOperation(DefaultBuildOperationQueue.java:272)
	at org.gradle.internal.operations.DefaultBuildOperationQueue$WorkerRunnable.doRunBatch(DefaultBuildOperationQueue.java:253)
	at org.gradle.internal.operations.DefaultBuildOperationQueue$WorkerRunnable.lambda$runBatch$1(DefaultBuildOperationQueue.java:226)
	at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:125)
	at org.gradle.internal.operations.DefaultBuildOperationQueue$WorkerRunnable.runBatch(DefaultBuildOperationQueue.java:224)
	at org.gradle.internal.operations.DefaultBuildOperationQueue$WorkerRunnable.run(DefaultBuildOperationQueue.java:192)
	at org.gradle.internal.operations.DefaultBuildOperationQueue.waitForCompletion(DefaultBuildOperationQueue.java:105)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.executeInParallel(DefaultBuildOperationExecutor.java:105)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.runAllWithAccessToProjectState(DefaultBuildOperationExecutor.java:74)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.runAllWithAccessToProjectState(DefaultBuildOperationExecutor.java:69)
	at org.gradle.internal.serialize.codecs.core.WorkNodeCodec.runBuildOperations$lambda$42(WorkNodeCodec.kt:582)
	at org.gradle.internal.serialize.codecs.core.WorkNodeCodec.handleBuildOperationExceptions(WorkNodeCodec.kt:281)
	at org.gradle.internal.serialize.codecs.core.WorkNodeCodec.runBuildOperations(WorkNodeCodec.kt:581)
	at org.gradle.internal.serialize.codecs.core.WorkNodeCodec.writeNodes(WorkNodeCodec.kt:215)
	at org.gradle.internal.serialize.codecs.core.WorkNodeCodec.doWrite(WorkNodeCodec.kt:123)
	at org.gradle.internal.serialize.codecs.core.WorkNodeCodec.writeWork(WorkNodeCodec.kt:95)
	at org.gradle.internal.cc.impl.ConfigurationCacheState.writeWorkGraphOf(ConfigurationCacheState.kt:528)
	at org.gradle.internal.cc.impl.ConfigurationCacheState.writeBuildContent$configuration_cache(ConfigurationCacheState.kt:490)
	at org.gradle.internal.cc.impl.ConfigurationCacheState.writeBuildState(ConfigurationCacheState.kt:344)
	at org.gradle.internal.cc.impl.ConfigurationCacheState.writeBuildsInTree(ConfigurationCacheState.kt:318)
	at org.gradle.internal.cc.impl.ConfigurationCacheState.writeRootBuild(ConfigurationCacheState.kt:293)
	at org.gradle.internal.cc.impl.ConfigurationCacheState.writeRootBuildState(ConfigurationCacheState.kt:191)
	at org.gradle.internal.cc.impl.DefaultConfigurationCacheIO$writeRootBuildStateTo$1.invokeSuspend(DefaultConfigurationCacheIO.kt:221)
	at org.gradle.internal.cc.impl.DefaultConfigurationCacheIO$writeRootBuildStateTo$1.invoke(DefaultConfigurationCacheIO.kt)
	at org.gradle.internal.cc.impl.DefaultConfigurationCacheIO$writeRootBuildStateTo$1.invoke(DefaultConfigurationCacheIO.kt)
	at org.gradle.internal.cc.impl.DefaultConfigurationCacheIO$writeConfigurationCacheStateWithSpecialEncoders$1.invokeSuspend(DefaultConfigurationCacheIO.kt:371)
	at org.gradle.internal.cc.impl.DefaultConfigurationCacheIO$writeConfigurationCacheStateWithSpecialEncoders$1.invoke(DefaultConfigurationCacheIO.kt)
	at org.gradle.internal.cc.impl.DefaultConfigurationCacheIO$writeConfigurationCacheStateWithSpecialEncoders$1.invoke(DefaultConfigurationCacheIO.kt)
	at org.gradle.internal.serialize.graph.CodecKt$writeWith$1$1.invokeSuspend(Codec.kt:84)
	at org.gradle.internal.serialize.graph.CodecKt$writeWith$1$1.invoke(Codec.kt)
	at org.gradle.internal.serialize.graph.CodecKt$writeWith$1$1.invoke(Codec.kt)
	at org.gradle.internal.serialize.graph.RunningKt$runWriteOperation$1.invokeSuspend(Running.kt:43)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlin.coroutines.ContinuationKt.startCoroutine(Continuation.kt:115)
	at org.gradle.internal.serialize.graph.RunningKt.runToCompletion(Running.kt:58)
	at org.gradle.internal.serialize.graph.RunningKt.runWriteOperation(Running.kt:42)
	at org.gradle.internal.serialize.graph.CodecKt.writeWith(Codec.kt:83)
	at org.gradle.internal.cc.impl.DefaultConfigurationCacheIO.withWriteContextFor(DefaultConfigurationCacheIO.kt:523)
	at org.gradle.internal.cc.impl.ConfigurationCacheBuildTreeIO.withWriteContextFor(ConfigurationCacheBuildTreeIO.kt:130)
	at org.gradle.internal.cc.impl.DefaultConfigurationCacheIO.withWriteContextFor(DefaultConfigurationCacheIO.kt:99)
	at org.gradle.internal.cc.impl.ConfigurationCacheBuildTreeIO.withWriteContextFor$default(ConfigurationCacheBuildTreeIO.kt:123)
	at org.gradle.internal.cc.impl.DefaultConfigurationCacheIO.writeConfigurationCacheStateWithSpecialEncoders(DefaultConfigurationCacheIO.kt:370)
	at org.gradle.internal.cc.impl.DefaultConfigurationCacheIO.writeConfigurationCacheState$lambda$10$lambda$9(DefaultConfigurationCacheIO.kt:274)
	at org.gradle.internal.cc.impl.DefaultConfigurationCacheIO.withSharedObjectEncoderFor(DefaultConfigurationCacheIO.kt:333)
	at org.gradle.internal.cc.impl.DefaultConfigurationCacheIO.writeConfigurationCacheState$lambda$10(DefaultConfigurationCacheIO.kt:273)
	at org.gradle.internal.cc.impl.DefaultConfigurationCacheIO.withStringEncoderFor(DefaultConfigurationCacheIO.kt:321)
	at org.gradle.internal.cc.impl.DefaultConfigurationCacheIO.writeConfigurationCacheState(DefaultConfigurationCacheIO.kt:272)
	at org.gradle.internal.cc.impl.DefaultConfigurationCacheIO.writeRootBuildStateTo(DefaultConfigurationCacheIO.kt:219)
	at org.gradle.internal.cc.impl.DefaultConfigurationCache.writeConfigurationCacheState(DefaultConfigurationCache.kt:725)
	at org.gradle.internal.cc.impl.DefaultConfigurationCache.saveWorkGraph$lambda$28$lambda$27(DefaultConfigurationCache.kt:639)
	at org.gradle.internal.cc.impl.DefaultConfigurationCache.runAndStore$lambda$29(DefaultConfigurationCache.kt:654)
	at org.gradle.internal.cc.impl.ConfigurationCacheRepository$StoreImpl.useForStore$lambda$4(ConfigurationCacheRepository.kt:255)
	at org.gradle.internal.cc.impl.ConfigurationCacheRepository$withExclusiveAccessToCache$1.get(ConfigurationCacheRepository.kt:321)
	at org.gradle.cache.internal.LockOnDemandCrossProcessCacheAccess.withFileLock(LockOnDemandCrossProcessCacheAccess.java:90)
	at org.gradle.cache.internal.DefaultCacheCoordinator.withFileLock(DefaultCacheCoordinator.java:213)
	at org.gradle.cache.internal.DefaultPersistentDirectoryStore.withFileLock(DefaultPersistentDirectoryStore.java:147)
	at org.gradle.cache.internal.DefaultCacheFactory$ReferenceTrackingCache.withFileLock(DefaultCacheFactory.java:203)
	at org.gradle.internal.cc.impl.ConfigurationCacheRepository.withExclusiveAccessToCache(ConfigurationCacheRepository.kt:319)
	at org.gradle.internal.cc.impl.ConfigurationCacheRepository.access$withExclusiveAccessToCache(ConfigurationCacheRepository.kt:54)
	at org.gradle.internal.cc.impl.ConfigurationCacheRepository$StoreImpl.useForStore(ConfigurationCacheRepository.kt:245)
	at org.gradle.internal.cc.impl.DefaultConfigurationCache.runAndStore(DefaultConfigurationCache.kt:651)
	at org.gradle.internal.cc.impl.DefaultConfigurationCache.saveWorkGraph$lambda$28(DefaultConfigurationCache.kt:638)
	at org.gradle.configurationcache.ConfigurationCacheBuildOperationsKt$withWorkGraphStoreOperation$1.run(ConfigurationCacheBuildOperations.kt:63)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:166)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:47)
	at org.gradle.configurationcache.ConfigurationCacheBuildOperationsKt.withWorkGraphStoreOperation(ConfigurationCacheBuildOperations.kt:56)
	at org.gradle.internal.cc.impl.DefaultConfigurationCache.saveWorkGraph(DefaultConfigurationCache.kt:637)
	at org.gradle.internal.cc.impl.DefaultConfigurationCache.loadOrScheduleRequestedTasks$lambda$10$lambda$9(DefaultConfigurationCache.kt:246)
	at org.gradle.internal.cc.impl.DefaultConfigurationCache.degradeGracefullyOr(DefaultConfigurationCache.kt:288)
	at org.gradle.internal.cc.impl.DefaultConfigurationCache.loadOrScheduleRequestedTasks$lambda$10(DefaultConfigurationCache.kt:246)
	at org.gradle.internal.cc.impl.DefaultConfigurationCache.runWorkThatContributesToCacheEntry(DefaultConfigurationCache.kt:576)
	at org.gradle.internal.cc.impl.DefaultConfigurationCache.loadOrScheduleRequestedTasks(DefaultConfigurationCache.kt:244)
	at org.gradle.internal.cc.impl.ConfigurationCacheAwareBuildTreeWorkController$scheduleAndRunRequestedTasks$executionResult$1.apply(ConfigurationCacheAwareBuildTreeWorkController.kt:45)
	at org.gradle.internal.cc.impl.ConfigurationCacheAwareBuildTreeWorkController$scheduleAndRunRequestedTasks$executionResult$1.apply(ConfigurationCacheAwareBuildTreeWorkController.kt:44)
	at org.gradle.composite.internal.DefaultIncludedBuildTaskGraph.withNewWorkGraph(DefaultIncludedBuildTaskGraph.java:113)
	at org.gradle.internal.cc.impl.ConfigurationCacheAwareBuildTreeWorkController.scheduleAndRunRequestedTasks(ConfigurationCacheAwareBuildTreeWorkController.kt:44)
	at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.lambda$scheduleAndRunTasks$1(DefaultBuildTreeLifecycleController.java:77)
	at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.lambda$runBuild$4(DefaultBuildTreeLifecycleController.java:120)
	at org.gradle.internal.model.StateTransitionController.lambda$transition$6(StateTransitionController.java:169)
	at org.gradle.internal.model.StateTransitionController.doTransition(StateTransitionController.java:266)
	at org.gradle.internal.model.StateTransitionController.lambda$transition$7(StateTransitionController.java:169)
	at org.gradle.internal.work.DefaultSynchronizer.withLock(DefaultSynchronizer.java:45)
	at org.gradle.internal.model.StateTransitionController.transition(StateTransitionController.java:169)
	at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.runBuild(DefaultBuildTreeLifecycleController.java:117)
	at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.scheduleAndRunTasks(DefaultBuildTreeLifecycleController.java:77)
	at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.scheduleAndRunTasks(DefaultBuildTreeLifecycleController.java:72)
	at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:31)
	at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
	at org.gradle.internal.buildtree.ProblemReportingBuildActionRunner.run(ProblemReportingBuildActionRunner.java:54)
	at org.gradle.launcher.exec.BuildOutcomeReportingBuildActionRunner.run(BuildOutcomeReportingBuildActionRunner.java:83)
	at org.gradle.tooling.internal.provider.FileSystemWatchingBuildActionRunner.run(FileSystemWatchingBuildActionRunner.java:135)
	at org.gradle.launcher.exec.BuildCompletionNotifyingBuildActionRunner.run(BuildCompletionNotifyingBuildActionRunner.java:54)
	at org.gradle.launcher.exec.RootBuildLifecycleBuildActionExecutor.lambda$execute$0(RootBuildLifecycleBuildActionExecutor.java:56)
	at org.gradle.composite.internal.DefaultRootBuildState.run(DefaultRootBuildState.java:130)
	at org.gradle.launcher.exec.RootBuildLifecycleBuildActionExecutor.execute(RootBuildLifecycleBuildActionExecutor.java:56)
	at org.gradle.internal.buildtree.InitDeprecationLoggingActionExecutor.execute(InitDeprecationLoggingActionExecutor.java:62)
	at org.gradle.internal.buildtree.InitProblems.execute(InitProblems.java:36)
	at org.gradle.internal.buildtree.DefaultBuildTreeContext.execute(DefaultBuildTreeContext.java:40)
	at org.gradle.launcher.exec.BuildTreeLifecycleBuildActionExecutor.lambda$execute$0(BuildTreeLifecycleBuildActionExecutor.java:71)
	at org.gradle.internal.buildtree.BuildTreeState.run(BuildTreeState.java:60)
	at org.gradle.launcher.exec.BuildTreeLifecycleBuildActionExecutor.execute(BuildTreeLifecycleBuildActionExecutor.java:71)
	at org.gradle.launcher.exec.RunAsBuildOperationBuildActionExecutor$2.call(RunAsBuildOperationBuildActionExecutor.java:65)
	at org.gradle.launcher.exec.RunAsBuildOperationBuildActionExecutor$2.call(RunAsBuildOperationBuildActionExecutor.java:61)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:209)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:166)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
	at org.gradle.launcher.exec.RunAsBuildOperationBuildActionExecutor.execute(RunAsBuildOperationBuildActionExecutor.java:61)
	at org.gradle.launcher.exec.RunAsWorkerThreadBuildActionExecutor.lambda$execute$0(RunAsWorkerThreadBuildActionExecutor.java:36)
	at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:263)
	at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:127)
	at org.gradle.launcher.exec.RunAsWorkerThreadBuildActionExecutor.execute(RunAsWorkerThreadBuildActionExecutor.java:36)
	at org.gradle.tooling.internal.provider.continuous.ContinuousBuildActionExecutor.execute(ContinuousBuildActionExecutor.java:110)
	at org.gradle.tooling.internal.provider.SubscribableBuildActionExecutor.execute(SubscribableBuildActionExecutor.java:64)
	at org.gradle.internal.session.DefaultBuildSessionContext.execute(DefaultBuildSessionContext.java:46)
	at org.gradle.internal.buildprocess.execution.BuildSessionLifecycleBuildActionExecutor$ActionImpl.apply(BuildSessionLifecycleBuildActionExecutor.java:92)
	at org.gradle.internal.buildprocess.execution.BuildSessionLifecycleBuildActionExecutor$ActionImpl.apply(BuildSessionLifecycleBuildActionExecutor.java:80)
	at org.gradle.internal.session.BuildSessionState.run(BuildSessionState.java:73)
	at org.gradle.internal.buildprocess.execution.BuildSessionLifecycleBuildActionExecutor.execute(BuildSessionLifecycleBuildActionExecutor.java:62)
	at org.gradle.internal.buildprocess.execution.BuildSessionLifecycleBuildActionExecutor.execute(BuildSessionLifecycleBuildActionExecutor.java:41)
	at org.gradle.internal.buildprocess.execution.StartParamsValidatingActionExecutor.execute(StartParamsValidatingActionExecutor.java:57)
	at org.gradle.internal.buildprocess.execution.StartParamsValidatingActionExecutor.execute(StartParamsValidatingActionExecutor.java:32)
	at org.gradle.internal.buildprocess.execution.SessionFailureReportingActionExecutor.execute(SessionFailureReportingActionExecutor.java:51)
	at org.gradle.internal.buildprocess.execution.SessionFailureReportingActionExecutor.execute(SessionFailureReportingActionExecutor.java:39)
	at org.gradle.internal.buildprocess.execution.SetupLoggingActionExecutor.execute(SetupLoggingActionExecutor.java:47)
	at org.gradle.internal.buildprocess.execution.SetupLoggingActionExecutor.execute(SetupLoggingActionExecutor.java:31)
	at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:70)
	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:39)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:29)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:35)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.ForwardClientInput.lambda$execute$0(ForwardClientInput.java:40)
	at org.gradle.internal.daemon.clientinput.ClientInputForwarder.forwardInput(ClientInputForwarder.java:80)
	at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:37)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:53)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:63)
	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:84)
	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
	at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:52)
	at org.gradle.launcher.daemon.server.DaemonStateCoordinator.lambda$runCommand$0(DaemonStateCoordinator.java:321)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
	at org.gradle.internal.concurrent.AbstractManagedExecutor$1.run(AbstractManagedExecutor.java:47)
Caused by: org.gradle.api.internal.artifacts.verification.exceptions.DependencyVerificationException: Dependency verification failed for configuration ':app:blueDebugCompileClasspath'
7 artifacts failed verification:
  - camera-camera2-1.5.0.module (androidx.camera:camera-camera2:1.5.0) from repository Google
  - camera-core-1.5.0.module (androidx.camera:camera-core:1.5.0) from repository Google
  - camera-lifecycle-1.5.0.module (androidx.camera:camera-lifecycle:1.5.0) from repository Google
  - camera-video-1.5.0.module (androidx.camera:camera-video:1.5.0) from repository Google
  - camera-view-1.5.0.module (androidx.camera:camera-view:1.5.0) from repository Google
  - featurecombinationquery-1.5.0.module (androidx.camera.featurecombinationquery:featurecombinationquery:1.5.0) from repository Google
  - security-crypto-1.1.0.module (androidx.security:security-crypto:1.1.0) from repository Google
If the artifacts are trustworthy, you will need to update the gradle/verification-metadata.xml file. For more on how to do this, please refer to https://docs.gradle.org/9.0.0/userguide/dependency_verification.html#sec:troubleshooting-verification in the Gradle documentation.

Open this report for more details: file:///home/runner/work/warpdroid/warpdroid/build/reports/dependency-verification/at-1776630909458/dependency-verification-report.html
	at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.verification.ChecksumAndSignatureVerificationOverride.artifactsAccessed(ChecksumAndSignatureVerificationOverride.java:194)
	at org.gradle.api.internal.artifacts.ivyservice.resolveengine.artifact.ResolvedArtifactSetResolver$1.run(ResolvedArtifactSetResolver.java:69)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:166)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:47)
	at org.gradle.api.internal.artifacts.ivyservice.resolveengine.artifact.ResolvedArtifactSetResolver.visitArtifacts(ResolvedArtifactSetResolver.java:65)
	at org.gradle.api.internal.artifacts.ivyservice.resolveengine.artifact.ResolvedArtifactSetResolver.lambda$visitInUnmanagedWorkerThread$0(ResolvedArtifactSetResolver.java:61)
	at org.gradle.internal.work.DefaultWorkerLeaseService.runAsUnmanagedWorkerThread(DefaultWorkerLeaseService.java:139)
	at org.gradle.api.internal.artifacts.ivyservice.resolveengine.artifact.ResolvedArtifactSetResolver.visitInUnmanagedWorkerThread(ResolvedArtifactSetResolver.java:61)
	at org.gradle.api.internal.artifacts.ivyservice.resolveengine.artifact.DefaultSelectedArtifactSet.visitArtifacts(DefaultSelectedArtifactSet.java:59)
	at org.gradle.api.internal.artifacts.configurations.ResolutionResultProviderBackedSelectedArtifactSet.visitArtifacts(ResolutionResultProviderBackedSelectedArtifactSet.java:52)
	at org.gradle.api.internal.artifacts.ivyservice.resolveengine.artifact.SelectedArtifactSet.visitFiles(SelectedArtifactSet.java:34)
	at org.gradle.api.internal.artifacts.configurations.ResolutionBackedFileCollection.visitContents(ResolutionBackedFileCollection.java:75)
	at org.gradle.api.internal.file.AbstractFileCollection.visitStructure(AbstractFileCollection.java:361)
	at org.gradle.internal.serialize.codecs.core.CollectingVisitor.startVisit(FileCollectionCodec.kt:186)
	at org.gradle.api.internal.file.AbstractFileCollection.visitStructure(AbstractFileCollection.java:360)
	at org.gradle.internal.serialize.codecs.core.FileCollectionCodec.encodeViaCollectingVisitor(FileCollectionCodec.kt:77)
	at org.gradle.internal.serialize.codecs.core.FileCollectionCodec.encodeContents(FileCollectionCodec.kt:70)
	at org.gradle.internal.serialize.codecs.core.FileCollectionCodec.encode(FileCollectionCodec.kt:59)
	at org.gradle.internal.serialize.codecs.core.FileCollectionCodec.encode(FileCollectionCodec.kt:52)
	at org.gradle.internal.serialize.graph.codecs.BindingsBackedCodec.encode(BindingsBackedCodec.kt:66)
	at org.gradle.internal.serialize.graph.DefaultWriteContext.write(Contexts.kt:111)
	at org.gradle.internal.serialize.graph.BeanPropertyExtensionsKt.writePropertyValue(BeanPropertyExtensions.kt:34)
	... 208 more


Deprecated Gradle features were used in this build, making it incompatible with Gradle 10.

You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.

For more on this, please refer to https://docs.gradle.org/9.0.0/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.

BUILD FAILED in 28s

Publishing build scan...
gradle/actions: Writing build results to /home/runner/work/_temp/.gradle-actions/build-scans/build-1776630913569.json
https://gradle.com/s/2ohqwvhxxifx4

Configuration cache entry discarded due to serialization error.

Drop gradle/verification-metadata.xml and the two build.gradle
workarounds that only existed to dance around missing hashes
(disabled androidTest still needs to stay for the config-cache bug;
trimmed the rationale).
@github-actions
Copy link
Copy Markdown

CI build failure (14048a9)

Run: https://github.com/Warp-net/warpdroid/actions/runs/24638774149

:app:assembleDebug (last 60 KB)
odules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.KeysetInfo found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.KeysetInfo$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.KeysetInfo$Builder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.KeysetInfo$KeyInfo found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.KeysetInfo$KeyInfo$Builder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.KeysetInfo$KeyInfoOrBuilder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.KeysetInfoOrBuilder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.KeysetOrBuilder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.KmsAead found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.KmsAeadKey found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.KmsAeadKey$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.KmsAeadKey$Builder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.KmsAeadKeyFormat found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.KmsAeadKeyFormat$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.KmsAeadKeyFormat$Builder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.KmsAeadKeyFormatOrBuilder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.KmsAeadKeyOrBuilder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.KmsEnvelope found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.KmsEnvelopeAeadKey found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.KmsEnvelopeAeadKey$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.KmsEnvelopeAeadKey$Builder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.KmsEnvelopeAeadKeyFormat found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.KmsEnvelopeAeadKeyFormat$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.KmsEnvelopeAeadKeyFormat$Builder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.KmsEnvelopeAeadKeyFormatOrBuilder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.KmsEnvelopeAeadKeyOrBuilder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.OutputPrefixType found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.OutputPrefixType$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RegistryConfig found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RegistryConfig$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RegistryConfig$Builder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RegistryConfigOrBuilder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPkcs1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPkcs1KeyFormat found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPkcs1KeyFormat$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPkcs1KeyFormat$Builder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPkcs1KeyFormatOrBuilder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPkcs1Params found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPkcs1Params$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPkcs1Params$Builder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPkcs1ParamsOrBuilder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPkcs1PrivateKey found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPkcs1PrivateKey$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPkcs1PrivateKey$Builder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPkcs1PrivateKeyOrBuilder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPkcs1PublicKey found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPkcs1PublicKey$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPkcs1PublicKey$Builder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPkcs1PublicKeyOrBuilder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPss found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPssKeyFormat found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPssKeyFormat$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPssKeyFormat$Builder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPssKeyFormatOrBuilder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPssParams found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPssParams$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPssParams$Builder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPssParamsOrBuilder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPssPrivateKey found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPssPrivateKey$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPssPrivateKey$Builder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPssPrivateKeyOrBuilder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPssPublicKey found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPssPublicKey$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPssPublicKey$Builder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPssPublicKeyOrBuilder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.Tink found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.XChaCha20Poly1305Key found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.XChaCha20Poly1305Key$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.XChaCha20Poly1305Key$Builder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.XChaCha20Poly1305KeyFormat found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.XChaCha20Poly1305KeyFormat$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.XChaCha20Poly1305KeyFormat$Builder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.XChaCha20Poly1305KeyFormatOrBuilder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.XChaCha20Poly1305KeyOrBuilder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.Xchacha20Poly1305 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.EcdsaParameters found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.EcdsaParameters$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.EcdsaParameters$Builder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.EcdsaParameters$CurveType found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.EcdsaParameters$HashType found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.EcdsaParameters$SignatureEncoding found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.EcdsaParameters$Variant found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.EcdsaPrivateKey found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.EcdsaPrivateKey$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.EcdsaPrivateKey$Builder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.EcdsaPublicKey found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.EcdsaPublicKey$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.EcdsaPublicKey$Builder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.EcdsaSignKeyManager found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.EcdsaVerifyKeyManager found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.Ed25519PrivateKeyManager found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.Ed25519PublicKeyManager found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.PublicKeySignConfig found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.PublicKeySignFactory found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.PublicKeySignWrapper found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.PublicKeySignWrapper$WrappedPublicKeySign found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.PublicKeyVerifyConfig found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.PublicKeyVerifyFactory found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.PublicKeyVerifyWrapper found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.PublicKeyVerifyWrapper$WrappedPublicKeyVerify found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.RsaSsaPkcs1SignKeyManager found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.RsaSsaPkcs1VerifyKeyManager found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.RsaSsaPssSignKeyManager found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.RsaSsaPssVerifyKeyManager found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.SignatureConfig found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.SignatureKeyTemplates found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.SignatureParameters found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.SignaturePemKeysetReader found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.SignaturePemKeysetReader$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.SignaturePemKeysetReader$Builder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.SignaturePemKeysetReader$PemKey found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.SignaturePrivateKey found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.SignaturePublicKey found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.internal.SigUtil found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.internal.SigUtil$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.streamingaead.AesCtrHmacStreamingKeyManager found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.streamingaead.AesGcmHkdfStreamingKeyManager found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.streamingaead.InputStreamDecrypter found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.streamingaead.ReadableByteChannelDecrypter found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.streamingaead.SeekableByteChannelDecrypter found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.streamingaead.StreamingAeadConfig found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.streamingaead.StreamingAeadFactory found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.streamingaead.StreamingAeadHelper found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.streamingaead.StreamingAeadKeyTemplates found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.streamingaead.StreamingAeadWrapper found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.AesCtrHmacStreaming found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.AesCtrHmacStreaming$AesCtrHmacStreamDecrypter found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.AesCtrHmacStreaming$AesCtrHmacStreamEncrypter found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.AesCtrJceCipher found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.AesCtrJceCipher$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.AesEaxJce found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.AesEaxJce$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.AesEaxJce$2 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.AesGcmHkdfStreaming found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.AesGcmHkdfStreaming$AesGcmHkdfStreamDecrypter found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.AesGcmHkdfStreaming$AesGcmHkdfStreamEncrypter found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.AesGcmJce found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.AesSiv found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.Base64 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.Base64$Coder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.Base64$Decoder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.Base64$Encoder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.Bytes found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.ChaCha20 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.ChaCha20Poly1305 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EcdsaSignJce found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EcdsaVerifyJce found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EciesAeadHkdfHybridDecrypt found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EciesAeadHkdfHybridEncrypt found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EciesHkdfRecipientKem found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EciesHkdfSenderKem found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EciesHkdfSenderKem$KemKey found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.Ed25519Sign found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.Ed25519Sign$KeyPair found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.Ed25519Verify found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EllipticCurves found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EllipticCurves$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EllipticCurves$CurveType found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EllipticCurves$EcdsaEncoding found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EllipticCurves$PointFormatType found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EncryptThenAuthenticate found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EngineFactory found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EngineFactory$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EngineFactory$AndroidPolicy found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EngineFactory$DefaultPolicy found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EngineFactory$FipsPolicy found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EngineFactory$Policy found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EngineWrapper found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EngineWrapper$TCipher found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EngineWrapper$TKeyAgreement found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EngineWrapper$TKeyFactory found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EngineWrapper$TKeyPairGenerator found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EngineWrapper$TMac found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EngineWrapper$TMessageDigest found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EngineWrapper$TSignature found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.Enums found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.Enums$HashType found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.Hex found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.Hkdf found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.IndCpaCipher found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.Kwp found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.NonceBasedStreamingAead found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.PemKeyType found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.PrfAesCmac found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.PrfHmacJce found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.PrfHmacJce$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.PrfMac found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.Random found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.RewindableReadableByteChannel found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.RsaSsaPkcs1SignJce found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.RsaSsaPkcs1VerifyJce found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.RsaSsaPkcs1VerifyJce$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.RsaSsaPssSignJce found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.RsaSsaPssVerifyJce found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.SelfKeyTestValidators found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.StreamSegmentDecrypter found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.StreamSegmentEncrypter found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.StreamingAeadDecryptingChannel found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.StreamingAeadDecryptingStream found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.StreamingAeadEncryptingChannel found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.StreamingAeadEncryptingStream found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.StreamingAeadSeekableDecryptingChannel found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.SubtleUtil found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.SubtleUtil$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.Validators found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.Validators$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.X25519 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.XChaCha20 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.XChaCha20Poly1305 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.prf.HkdfStreamingPrf found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.prf.HkdfStreamingPrf$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.prf.HkdfStreamingPrf$HkdfInputStream found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.prf.PrfImpl found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.prf.StreamingPrf found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.tinkkey.KeyAccess found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.tinkkey.KeyHandle found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.tinkkey.KeyHandle$KeyStatusType found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.tinkkey.SecretKeyAccess found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.tinkkey.TinkKey found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.tinkkey.internal.InternalKeyHandle found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.tinkkey.internal.ProtoKey found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.util.Bytes found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.util.KeysDownloader found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.util.KeysDownloader$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.util.KeysDownloader$Builder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.util.SecretBigInteger found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.util.SecretBytes found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)

Learn how to fix dependency resolution errors at https://d.android.com/r/tools/classpath-sync-errors
	at com.android.build.gradle.internal.tasks.CheckDuplicateClassesDelegate.run(CheckDuplicateClassesDelegate.kt:65)
	at com.android.build.gradle.internal.tasks.CheckDuplicatesRunnable.execute(CheckDuplicateClassesDelegate.kt:91)
	at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:68)
	at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:66)
	at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:62)
	at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:100)
	at org.gradle.workers.internal.NoIsolationWorkerFactory$1.lambda$execute$0(NoIsolationWorkerFactory.java:62)
	at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:44)
	at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:41)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:209)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:166)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
	at org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41)
	at org.gradle.workers.internal.NoIsolationWorkerFactory$1.execute(NoIsolationWorkerFactory.java:59)
	at org.gradle.workers.internal.DefaultWorkerExecutor.lambda$submitWork$0(DefaultWorkerExecutor.java:176)
	at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:194)
	at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.access$700(DefaultConditionalExecutionQueue.java:127)
	at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner$1.run(DefaultConditionalExecutionQueue.java:169)
	at org.gradle.internal.Factories$1.create(Factories.java:31)
	at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:263)
	at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:127)
	at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:132)
	at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:164)
	at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:133)
	... 2 more


Deprecated Gradle features were used in this build, making it incompatible with Gradle 10.

You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.

For more on this, please refer to https://docs.gradle.org/9.0.0/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.

BUILD FAILED in 1m 12s
36 actionable tasks: 36 executed

Publishing build scan...
gradle/actions: Writing build results to /home/runner/work/_temp/.gradle-actions/build-scans/build-1776631662621.json
https://gradle.com/s/qzg7oavqvkiga

Configuration cache entry stored.

security-crypto 1.1.0 still pins tink-android:1.8.0, whose classes
collide with the unified tink:1.17+ pulled in by ML Kit. Exclude
the old artifact so the newer one is the single provider.
@github-actions
Copy link
Copy Markdown

CI build failure (045feb5)

Run: https://github.com/Warp-net/warpdroid/actions/runs/24638817287

:app:assembleDebug (last 60 KB)
e/KT-73255 for more details.
w: file:///home/runner/work/warpdroid/warpdroid/warpnet-transport/src/main/kotlin/site/warpnet/transport/dto/WarpnetDtos.kt:124:5 This annotation is currently applied to the value parameter only, but in the future it will also be applied to property.
- To opt in to applying to both value parameter and property, add '-Xannotation-default-target=param-property' to your compiler arguments.
- To keep applying to the value parameter only, use the '@param:' annotation target.

See https://youtrack.jetbrains.com/issue/KT-73255 for more details.
w: file:///home/runner/work/warpdroid/warpdroid/warpnet-transport/src/main/kotlin/site/warpnet/transport/dto/WarpnetDtos.kt:129:5 This annotation is currently applied to the value parameter only, but in the future it will also be applied to property.
- To opt in to applying to both value parameter and property, add '-Xannotation-default-target=param-property' to your compiler arguments.
- To keep applying to the value parameter only, use the '@param:' annotation target.

See https://youtrack.jetbrains.com/issue/KT-73255 for more details.
w: file:///home/runner/work/warpdroid/warpdroid/warpnet-transport/src/main/kotlin/site/warpnet/transport/dto/WarpnetDtos.kt:130:5 This annotation is currently applied to the value parameter only, but in the future it will also be applied to property.
- To opt in to applying to both value parameter and property, add '-Xannotation-default-target=param-property' to your compiler arguments.
- To keep applying to the value parameter only, use the '@param:' annotation target.

See https://youtrack.jetbrains.com/issue/KT-73255 for more details.
w: file:///home/runner/work/warpdroid/warpdroid/warpnet-transport/src/main/kotlin/site/warpnet/transport/dto/WarpnetDtos.kt:135:5 This annotation is currently applied to the value parameter only, but in the future it will also be applied to property.
- To opt in to applying to both value parameter and property, add '-Xannotation-default-target=param-property' to your compiler arguments.
- To keep applying to the value parameter only, use the '@param:' annotation target.

See https://youtrack.jetbrains.com/issue/KT-73255 for more details.
w: file:///home/runner/work/warpdroid/warpdroid/warpnet-transport/src/main/kotlin/site/warpnet/transport/dto/WarpnetDtos.kt:142:5 This annotation is currently applied to the value parameter only, but in the future it will also be applied to property.
- To opt in to applying to both value parameter and property, add '-Xannotation-default-target=param-property' to your compiler arguments.
- To keep applying to the value parameter only, use the '@param:' annotation target.

See https://youtrack.jetbrains.com/issue/KT-73255 for more details.
w: file:///home/runner/work/warpdroid/warpdroid/warpnet-transport/src/main/kotlin/site/warpnet/transport/dto/WarpnetDtos.kt:149:5 This annotation is currently applied to the value parameter only, but in the future it will also be applied to property.
- To opt in to applying to both value parameter and property, add '-Xannotation-default-target=param-property' to your compiler arguments.
- To keep applying to the value parameter only, use the '@param:' annotation target.

See https://youtrack.jetbrains.com/issue/KT-73255 for more details.
w: file:///home/runner/work/warpdroid/warpdroid/warpnet-transport/src/main/kotlin/site/warpnet/transport/dto/WarpnetDtos.kt:163:5 This annotation is currently applied to the value parameter only, but in the future it will also be applied to property.
- To opt in to applying to both value parameter and property, add '-Xannotation-default-target=param-property' to your compiler arguments.
- To keep applying to the value parameter only, use the '@param:' annotation target.

See https://youtrack.jetbrains.com/issue/KT-73255 for more details.
w: file:///home/runner/work/warpdroid/warpdroid/warpnet-transport/src/main/kotlin/site/warpnet/transport/dto/WarpnetDtos.kt:168:5 This annotation is currently applied to the value parameter only, but in the future it will also be applied to property.
- To opt in to applying to both value parameter and property, add '-Xannotation-default-target=param-property' to your compiler arguments.
- To keep applying to the value parameter only, use the '@param:' annotation target.

See https://youtrack.jetbrains.com/issue/KT-73255 for more details.
w: file:///home/runner/work/warpdroid/warpdroid/warpnet-transport/src/main/kotlin/site/warpnet/transport/dto/WarpnetDtos.kt:197:5 This annotation is currently applied to the value parameter only, but in the future it will also be applied to property.
- To opt in to applying to both value parameter and property, add '-Xannotation-default-target=param-property' to your compiler arguments.
- To keep applying to the value parameter only, use the '@param:' annotation target.

See https://youtrack.jetbrains.com/issue/KT-73255 for more details.
w: file:///home/runner/work/warpdroid/warpdroid/warpnet-transport/src/main/kotlin/site/warpnet/transport/dto/WarpnetDtos.kt:204:5 This annotation is currently applied to the value parameter only, but in the future it will also be applied to property.
- To opt in to applying to both value parameter and property, add '-Xannotation-default-target=param-property' to your compiler arguments.
- To keep applying to the value parameter only, use the '@param:' annotation target.

See https://youtrack.jetbrains.com/issue/KT-73255 for more details.
w: file:///home/runner/work/warpdroid/warpdroid/warpnet-transport/src/main/kotlin/site/warpnet/transport/dto/WarpnetDtos.kt:211:5 This annotation is currently applied to the value parameter only, but in the future it will also be applied to property.
- To opt in to applying to both value parameter and property, add '-Xannotation-default-target=param-property' to your compiler arguments.
- To keep applying to the value parameter only, use the '@param:' annotation target.

See https://youtrack.jetbrains.com/issue/KT-73255 for more details.
w: file:///home/runner/work/warpdroid/warpdroid/warpnet-transport/src/main/kotlin/site/warpnet/transport/dto/WarpnetDtos.kt:218:5 This annotation is currently applied to the value parameter only, but in the future it will also be applied to property.
- To opt in to applying to both value parameter and property, add '-Xannotation-default-target=param-property' to your compiler arguments.
- To keep applying to the value parameter only, use the '@param:' annotation target.

See https://youtrack.jetbrains.com/issue/KT-73255 for more details.
w: file:///home/runner/work/warpdroid/warpdroid/warpnet-transport/src/main/kotlin/site/warpnet/transport/dto/WarpnetDtos.kt:223:5 This annotation is currently applied to the value parameter only, but in the future it will also be applied to property.
- To opt in to applying to both value parameter and property, add '-Xannotation-default-target=param-property' to your compiler arguments.
- To keep applying to the value parameter only, use the '@param:' annotation target.

See https://youtrack.jetbrains.com/issue/KT-73255 for more details.
w: file:///home/runner/work/warpdroid/warpdroid/warpnet-transport/src/main/kotlin/site/warpnet/transport/dto/WarpnetDtos.kt:228:5 This annotation is currently applied to the value parameter only, but in the future it will also be applied to property.
- To opt in to applying to both value parameter and property, add '-Xannotation-default-target=param-property' to your compiler arguments.
- To keep applying to the value parameter only, use the '@param:' annotation target.

See https://youtrack.jetbrains.com/issue/KT-73255 for more details.
w: file:///home/runner/work/warpdroid/warpdroid/warpnet-transport/src/main/kotlin/site/warpnet/transport/dto/WarpnetDtos.kt:233:5 This annotation is currently applied to the value parameter only, but in the future it will also be applied to property.
- To opt in to applying to both value parameter and property, add '-Xannotation-default-target=param-property' to your compiler arguments.
- To keep applying to the value parameter only, use the '@param:' annotation target.

See https://youtrack.jetbrains.com/issue/KT-73255 for more details.
w: file:///home/runner/work/warpdroid/warpdroid/warpnet-transport/src/main/kotlin/site/warpnet/transport/dto/WarpnetDtos.kt:234:5 This annotation is currently applied to the value parameter only, but in the future it will also be applied to property.
- To opt in to applying to both value parameter and property, add '-Xannotation-default-target=param-property' to your compiler arguments.
- To keep applying to the value parameter only, use the '@param:' annotation target.

See https://youtrack.jetbrains.com/issue/KT-73255 for more details.
w: file:///home/runner/work/warpdroid/warpdroid/warpnet-transport/src/main/kotlin/site/warpnet/transport/dto/WarpnetDtos.kt:235:5 This annotation is currently applied to the value parameter only, but in the future it will also be applied to property.
- To opt in to applying to both value parameter and property, add '-Xannotation-default-target=param-property' to your compiler arguments.
- To keep applying to the value parameter only, use the '@param:' annotation target.

See https://youtrack.jetbrains.com/issue/KT-73255 for more details.
w: file:///home/runner/work/warpdroid/warpdroid/warpnet-transport/src/main/kotlin/site/warpnet/transport/dto/WarpnetDtos.kt:236:5 This annotation is currently applied to the value parameter only, but in the future it will also be applied to property.
- To opt in to applying to both value parameter and property, add '-Xannotation-default-target=param-property' to your compiler arguments.
- To keep applying to the value parameter only, use the '@param:' annotation target.

See https://youtrack.jetbrains.com/issue/KT-73255 for more details.
w: file:///home/runner/work/warpdroid/warpdroid/warpnet-transport/src/main/kotlin/site/warpnet/transport/dto/WarpnetDtos.kt:237:5 This annotation is currently applied to the value parameter only, but in the future it will also be applied to property.
- To opt in to applying to both value parameter and property, add '-Xannotation-default-target=param-property' to your compiler arguments.
- To keep applying to the value parameter only, use the '@param:' annotation target.

See https://youtrack.jetbrains.com/issue/KT-73255 for more details.
w: file:///home/runner/work/warpdroid/warpdroid/warpnet-transport/src/main/kotlin/site/warpnet/transport/dto/WarpnetDtos.kt:238:5 This annotation is currently applied to the value parameter only, but in the future it will also be applied to property.
- To opt in to applying to both value parameter and property, add '-Xannotation-default-target=param-property' to your compiler arguments.
- To keep applying to the value parameter only, use the '@param:' annotation target.

See https://youtrack.jetbrains.com/issue/KT-73255 for more details.

> Task :warpnet-transport:javaPreCompileRelease FROM-CACHE
> Task :warpnet-transport:compileReleaseJavaWithJavac NO-SOURCE
> Task :warpnet-transport:mergeReleaseGeneratedProguardFiles
> Task :warpnet-transport:exportReleaseConsumerProguardFiles
> Task :app:checkBlueReleaseDuplicateClasses
> Task :warpnet-transport:prepareReleaseArtProfile
> Task :app:mergeBlueReleaseArtProfile
> Task :app:buildKotlinToolingMetadata
> Task :app:dataBindingMergeDependencyArtifactsBlueRelease
> Task :app:generateBlueReleaseResValues FROM-CACHE
> Task :app:generateBlueReleaseResources FROM-CACHE
> Task :app:mergeBlueReleaseResources
> Task :app:packageBlueReleaseResources
> Task :app:processBlueReleaseNavigationResources FROM-CACHE
> Task :app:parseBlueReleaseLocalResources FROM-CACHE
> Task :app:dataBindingGenBaseClassesBlueRelease
> Task :app:generateBlueReleaseBuildConfig
> Task :warpnet-transport:writeReleaseAarMetadata
> Task :app:checkBlueReleaseAarMetadata
> Task :app:compileBlueReleaseNavigationResources FROM-CACHE
> Task :app:mapBlueReleaseSourceSetPaths
> Task :app:createBlueReleaseCompatibleScreenManifests
> Task :app:extractDeepLinksBlueRelease FROM-CACHE
> Task :warpnet-transport:extractDeepLinksRelease FROM-CACHE
> Task :warpnet-transport:processReleaseManifest FROM-CACHE
> Task :app:processBlueReleaseMainManifest
> Task :app:processBlueReleaseManifest
> Task :app:processBlueReleaseManifestForPackage
> Task :app:processBlueReleaseResources
> Task :warpnet-transport:bundleLibCompileToJarRelease
> Task :app:kspBlueReleaseKotlin
> Task :app:compileBlueDebugKotlin
> Task :app:compileBlueReleaseKotlin

> Task :app:compileBlueDebugKotlin
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/ListsActivity.kt:152:102 'static field SOFT_INPUT_ADJUST_RESIZE: Int' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/ViewMediaActivity.kt:153:26 'var systemUiVisibility: Int' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/ViewMediaActivity.kt:153:52 'static field SYSTEM_UI_FLAG_LOW_PROFILE: Int' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/ViewMediaActivity.kt:341:17 'fun setVisibleInDownloadsUi(p0: Boolean): DownloadManager.Request!' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/accountlist/AccountListFragment.kt:196:40 The corresponding parameter in the supertype 'AccountActionListener' is named 'accountId'. This may cause problems when calling this function with named arguments.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/accountlist/AccountListFragment.kt:204:42 The corresponding parameter in the supertype 'AccountActionListener' is named 'accountId'. This may cause problems when calling this function with named arguments.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/compose/dialog/AddPollDialog.kt:136:98 'static field SOFT_INPUT_ADJUST_RESIZE: Int' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/compose/dialog/CaptionDialog.kt:144:65 'static field SOFT_INPUT_ADJUST_RESIZE: Int' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/compose/dialog/FocusDialog.kt:109:36 'static field SOFT_INPUT_ADJUST_RESIZE: Int' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/notifications/NotificationsPagingAdapter.kt:221:33 Unchecked cast of 'RecyclerView.ViewHolder' to 'LoadMoreViewHolder<NotificationViewData.LoadMore>'.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:10:8 'class EncryptedSharedPreferences : Any, SharedPreferences' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:11:8 'class MasterKey : Any' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:32:44 'class EncryptedSharedPreferences : Any, SharedPreferences' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:35:9 'class MasterKey : Any' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:35:19 'constructor(p0: @NonNull() Context): MasterKey.Builder' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:36:27 'class MasterKey : Any' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:36:37 'enum class KeyScheme : Enum<MasterKey.KeyScheme!>' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:38:9 'class EncryptedSharedPreferences : Any, SharedPreferences' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:38:36 'enum class PrefKeyEncryptionScheme : Enum<EncryptedSharedPreferences.PrefKeyEncryptionScheme!>' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:39:9 'class EncryptedSharedPreferences : Any, SharedPreferences' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:39:36 'enum class PrefValueEncryptionScheme : Enum<EncryptedSharedPreferences.PrefValueEncryptionScheme!>' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/viewthread/edits/ViewEditsViewModel.kt:89:27 'static fun setXMLReaderClass(p0: String!): Unit' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/util/LocaleUtils.kt:49:32 'constructor(p0: String!): Locale' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/util/LocaleUtils.kt:86:12 'constructor(p0: String!): Locale' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/util/ThemeUtils.kt:44:31 'static field MODE_NIGHT_AUTO_TIME: Int' is deprecated. Deprecated in Java.

> Task :app:compileBlueReleaseKotlin
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/ListsActivity.kt:152:102 'static field SOFT_INPUT_ADJUST_RESIZE: Int' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/ViewMediaActivity.kt:153:26 'var systemUiVisibility: Int' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/ViewMediaActivity.kt:153:52 'static field SYSTEM_UI_FLAG_LOW_PROFILE: Int' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/ViewMediaActivity.kt:341:17 'fun setVisibleInDownloadsUi(p0: Boolean): DownloadManager.Request!' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/accountlist/AccountListFragment.kt:196:40 The corresponding parameter in the supertype 'AccountActionListener' is named 'accountId'. This may cause problems when calling this function with named arguments.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/accountlist/AccountListFragment.kt:204:42 The corresponding parameter in the supertype 'AccountActionListener' is named 'accountId'. This may cause problems when calling this function with named arguments.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/compose/dialog/AddPollDialog.kt:136:98 'static field SOFT_INPUT_ADJUST_RESIZE: Int' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/compose/dialog/CaptionDialog.kt:144:65 'static field SOFT_INPUT_ADJUST_RESIZE: Int' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/compose/dialog/FocusDialog.kt:109:36 'static field SOFT_INPUT_ADJUST_RESIZE: Int' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/notifications/NotificationsPagingAdapter.kt:221:33 Unchecked cast of 'RecyclerView.ViewHolder' to 'LoadMoreViewHolder<NotificationViewData.LoadMore>'.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:10:8 'class EncryptedSharedPreferences : Any, SharedPreferences' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:11:8 'class MasterKey : Any' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:32:44 'class EncryptedSharedPreferences : Any, SharedPreferences' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:35:9 'class MasterKey : Any' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:35:19 'constructor(p0: @NonNull() Context): MasterKey.Builder' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:36:27 'class MasterKey : Any' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:36:37 'enum class KeyScheme : Enum<MasterKey.KeyScheme!>' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:38:9 'class EncryptedSharedPreferences : Any, SharedPreferences' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:38:36 'enum class PrefKeyEncryptionScheme : Enum<EncryptedSharedPreferences.PrefKeyEncryptionScheme!>' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:39:9 'class EncryptedSharedPreferences : Any, SharedPreferences' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:39:36 'enum class PrefValueEncryptionScheme : Enum<EncryptedSharedPreferences.PrefValueEncryptionScheme!>' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/viewthread/edits/ViewEditsViewModel.kt:89:27 'static fun setXMLReaderClass(p0: String!): Unit' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/util/LocaleUtils.kt:49:32 'constructor(p0: String!): Locale' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/util/LocaleUtils.kt:86:12 'constructor(p0: String!): Locale' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/util/ThemeUtils.kt:44:31 'static field MODE_NIGHT_AUTO_TIME: Int' is deprecated. Deprecated in Java.

> Task :app:javaPreCompileBlueRelease FROM-CACHE
> Task :app:compileBlueDebugJavaWithJavac
> Task :app:compileBlueReleaseJavaWithJavac
> Task :warpnet-transport:bundleLibRuntimeToJarRelease
> Task :warpnet-transport:processReleaseJavaRes
> Task :warpnet-transport:createFullJarRelease
> Task :app:hiltAggregateDepsBlueDebug
> Task :app:hiltAggregateDepsBlueRelease

> Task :app:hiltJavaCompileBlueDebug
warning: Kapt support in Moshi Kotlin Code Gen is deprecated and will be removed in 2.0. Please migrate to KSP. https://github.com/square/moshi#codegen
1 warning

> Task :app:hiltJavaCompileBlueRelease
warning: Kapt support in Moshi Kotlin Code Gen is deprecated and will be removed in 2.0. Please migrate to KSP. https://github.com/square/moshi#codegen
1 warning

> Task :app:processBlueDebugJavaRes
> Task :app:mergeBlueDebugJavaResource
> Task :app:transformBlueDebugClassesWithAsm
> Task :app:transformBlueReleaseClassesWithAsm
> Task :app:dexBuilderBlueDebug
> Task :app:mergeBlueDebugGlobalSynthetics
> Task :app:expandBlueReleaseArtProfileWildcards
> Task :app:extractProguardFiles
> Task :app:mergeBlueReleaseGeneratedProguardFiles
> Task :app:processBlueReleaseJavaRes
> Task :app:mergeProjectDexBlueDebug
> Task :app:mergeBlueReleaseJavaResource
> Task :app:mergeBlueReleaseStartupProfile
> Task :app:packageBlueDebug
> Task :app:createBlueDebugApkListingFileRedirect
> Task :app:assembleBlueDebug
> Task :app:generateBlueReleaseAssets UP-TO-DATE
> Task :warpnet-transport:generateReleaseAssets UP-TO-DATE
> Task :warpnet-transport:mergeReleaseAssets
> Task :app:mergeBlueReleaseAssets
> Task :app:compressBlueReleaseAssets
> Task :app:extractBlueReleaseVersionControlInfo
> Task :warpnet-transport:extractProguardFiles
> Task :warpnet-transport:generateReleaseLintModel
> Task :warpnet-transport:prepareLintJarForPublish
> Task :app:generateBlueReleaseLintVitalReportModel
> Task :warpnet-transport:checkReleaseAarMetadata
> Task :warpnet-transport:stripReleaseDebugSymbols NO-SOURCE
> Task :warpnet-transport:copyReleaseJniLibsProjectAndLocalJars
> Task :warpnet-transport:extractDeepLinksForAarRelease
> Task :warpnet-transport:extractReleaseAnnotations
> Task :warpnet-transport:mergeReleaseConsumerProguardFiles
> Task :warpnet-transport:mergeReleaseJavaResource
> Task :warpnet-transport:syncReleaseLibJars
> Task :warpnet-transport:bundleReleaseLocalLintAar
> Task :warpnet-transport:lintVitalAnalyzeRelease
> Task :warpnet-transport:writeReleaseLintModelMetadata

> Task :app:minifyBlueReleaseWithR8 FAILED
ERROR: Missing classes detected while running R8. Please add the missing classes or apply additional keep rules that are generated in /home/runner/work/warpdroid/warpdroid/app/build/outputs/mapping/blueRelease/missing_rules.txt.
ERROR: R8: Missing class com.google.crypto.tink.integration.android.AndroidKeysetManager$Builder (referenced from: android.content.SharedPreferences androidx.security.crypto.EncryptedSharedPreferences.create(java.lang.String, java.lang.String, android.content.Context, androidx.security.crypto.EncryptedSharedPreferences$PrefKeyEncryptionScheme, androidx.security.crypto.EncryptedSharedPreferences$PrefValueEncryptionScheme))
Missing class com.google.crypto.tink.integration.android.AndroidKeysetManager (referenced from: android.content.SharedPreferences androidx.security.crypto.EncryptedSharedPreferences.create(java.lang.String, java.lang.String, android.content.Context, androidx.security.crypto.EncryptedSharedPreferences$PrefKeyEncryptionScheme, androidx.security.crypto.EncryptedSharedPreferences$PrefValueEncryptionScheme))

> Task :app:lintVitalAnalyzeBlueRelease
gradle/actions: Writing build results to /home/runner/work/_temp/.gradle-actions/build-results/build-1776631808952.json

[Incubating] Problems report is available at: file:///home/runner/work/warpdroid/warpdroid/build/reports/problems/problems-report.html

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:minifyBlueReleaseWithR8'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.R8Task$R8Runnable
   > Compilation failed to complete

* Try:
> Run with --info or --debug option to get more log output.
> Get more help at https://help.gradle.org.

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:minifyBlueReleaseWithR8'.
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:135)
	at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:288)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:133)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:121)
	at org.gradle.api.internal.tasks.execution.ProblemsTaskPathTrackingTaskExecuter.execute(ProblemsTaskPathTrackingTaskExecuter.java:41)
	at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
	at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51)
	at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
	at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:74)
	at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:209)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:166)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
	at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:45)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:347)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:334)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.lambda$execute$0(DefaultTaskExecutionGraph.java:330)
	at org.gradle.internal.operations.CurrentBuildOperationRef.with(CurrentBuildOperationRef.java:84)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:330)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:319)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:459)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:376)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
	at org.gradle.internal.concurrent.AbstractManagedExecutor$1.run(AbstractManagedExecutor.java:47)
Caused by: org.gradle.workers.internal.DefaultWorkerExecutor$WorkExecutionException: A failure occurred while executing com.android.build.gradle.internal.tasks.R8Task$R8Runnable
	at org.gradle.workers.internal.DefaultWorkerExecutor$WorkItemExecution.waitForCompletion(DefaultWorkerExecutor.java:289)
	at org.gradle.internal.work.DefaultAsyncWorkTracker.lambda$waitForItemsAndGatherFailures$2(DefaultAsyncWorkTracker.java:130)
	at org.gradle.internal.Factories$1.create(Factories.java:31)
	at org.gradle.internal.work.DefaultWorkerLeaseService.withoutLocks(DefaultWorkerLeaseService.java:335)
	at org.gradle.internal.work.DefaultWorkerLeaseService.withoutLocks(DefaultWorkerLeaseService.java:318)
	at org.gradle.internal.work.DefaultWorkerLeaseService.withoutLock(DefaultWorkerLeaseService.java:323)
	at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForItemsAndGatherFailures(DefaultAsyncWorkTracker.java:126)
	at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForItemsAndGatherFailures(DefaultAsyncWorkTracker.java:92)
	at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForAll(DefaultAsyncWorkTracker.java:78)
	at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForCompletion(DefaultAsyncWorkTracker.java:66)
	at org.gradle.api.internal.tasks.execution.TaskExecution$3.run(TaskExecution.java:260)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:166)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:47)
	at org.gradle.api.internal.tasks.execution.TaskExecution.executeAction(TaskExecution.java:237)
	at org.gradle.api.internal.tasks.execution.TaskExecution.executeActions(TaskExecution.java:220)
	at org.gradle.api.internal.tasks.execution.TaskExecution.executeWithPreviousOutputFiles(TaskExecution.java:203)
	at org.gradle.api.internal.tasks.execution.TaskExecution.execute(TaskExecution.java:170)
	at org.gradle.internal.execution.steps.ExecuteStep.executeInternal(ExecuteStep.java:105)
	at org.gradle.internal.execution.steps.ExecuteStep.access$000(ExecuteStep.java:44)
	at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:59)
	at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:56)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:209)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:166)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
	at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:56)
	at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:44)
	at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:42)
	at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:75)
	at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:55)
	at org.gradle.internal.execution.steps.PreCreateOutputParentsStep.execute(PreCreateOutputParentsStep.java:50)
	at org.gradle.internal.execution.steps.PreCreateOutputParentsStep.execute(PreCreateOutputParentsStep.java:28)
	at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:68)
	at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:38)
	at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:61)
	at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:26)
	at org.gradle.internal.execution.steps.CaptureOutputsAfterExecutionStep.execute(CaptureOutputsAfterExecutionStep.java:69)
	at org.gradle.internal.execution.steps.CaptureOutputsAfterExecutionStep.execute(CaptureOutputsAfterExecutionStep.java:46)
	at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:39)
	at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:28)
	at org.gradle.internal.execution.steps.BuildCacheStep.executeWithoutCache(BuildCacheStep.java:189)
	at org.gradle.internal.execution.steps.BuildCacheStep.executeAndStoreInCache(BuildCacheStep.java:145)
	at org.gradle.internal.execution.steps.BuildCacheStep.lambda$executeWithCache$4(BuildCacheStep.java:101)
	at org.gradle.internal.execution.steps.BuildCacheStep.lambda$executeWithCache$5(BuildCacheStep.java:101)
	at org.gradle.internal.Try$Success.map(Try.java:170)
	at org.gradle.internal.execution.steps.BuildCacheStep.executeWithCache(BuildCacheStep.java:85)
	at org.gradle.internal.execution.steps.BuildCacheStep.lambda$execute$0(BuildCacheStep.java:74)
	at org.gradle.internal.Either$Left.fold(Either.java:116)
	at org.gradle.internal.execution.caching.CachingState.fold(CachingState.java:62)
	at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:73)
	at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:48)
	at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:46)
	at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:35)
	at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:75)
	at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$2(SkipUpToDateStep.java:53)
	at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:53)
	at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:35)
	at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:37)
	at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:27)
	at org.gradle.internal.execution.steps.ResolveIncrementalCachingStateStep.executeDelegate(ResolveIncrementalCachingStateStep.java:49)
	at org.gradle.internal.execution.steps.ResolveIncrementalCachingStateStep.executeDelegate(ResolveIncrementalCachingStateStep.java:27)
	at org.gradle.internal.execution.steps.AbstractResolveCachingStateStep.execute(AbstractResolveCachingStateStep.java:71)
	at org.gradle.internal.execution.steps.AbstractResolveCachingStateStep.execute(AbstractResolveCachingStateStep.java:39)
	at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:64)
	at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:35)
	at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:62)
	at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:40)
	at org.gradle.internal.execution.steps.AbstractCaptureStateBeforeExecutionStep.execute(AbstractCaptureStateBeforeExecutionStep.java:76)
	at org.gradle.internal.execution.steps.AbstractCaptureStateBeforeExecutionStep.execute(AbstractCaptureStateBeforeExecutionStep.java:45)
	at org.gradle.internal.execution.steps.AbstractSkipEmptyWorkStep.executeWithNonEmptySources(AbstractSkipEmptyWorkStep.java:136)
	at org.gradle.internal.execution.steps.AbstractSkipEmptyWorkStep.execute(AbstractSkipEmptyWorkStep.java:61)
	at org.gradle.internal.execution.steps.AbstractSkipEmptyWorkStep.execute(AbstractSkipEmptyWorkStep.java:38)
	at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:38)
	at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:36)
	at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:23)
	at org.gradle.internal.execution.steps.HandleStaleOutputsStep.execute(HandleStaleOutputsStep.java:75)
	at org.gradle.internal.execution.steps.HandleStaleOutputsStep.execute(HandleStaleOutputsStep.java:41)
	at org.gradle.internal.execution.steps.AssignMutableWorkspaceStep.lambda$execute$0(AssignMutableWorkspaceStep.java:35)
	at org.gradle.api.internal.tasks.execution.TaskExecution$4.withWorkspace(TaskExecution.java:297)
	at org.gradle.internal.execution.steps.AssignMutableWorkspaceStep.execute(AssignMutableWorkspaceStep.java:31)
	at org.gradle.internal.execution.steps.AssignMutableWorkspaceStep.execute(AssignMutableWorkspaceStep.java:22)
	at org.gradle.internal.execution.steps.ChoosePipelineStep.execute(ChoosePipelineStep.java:40)
	at org.gradle.internal.execution.steps.ChoosePipelineStep.execute(ChoosePipelineStep.java:23)
	at org.gradle.internal.execution.steps.ExecuteWorkBuildOperationFiringStep.lambda$execute$2(ExecuteWorkBuildOperationFiringStep.java:67)
	at org.gradle.internal.execution.steps.ExecuteWorkBuildOperationFiringStep.execute(ExecuteWorkBuildOperationFiringStep.java:67)
	at org.gradle.internal.execution.steps.ExecuteWorkBuildOperationFiringStep.execute(ExecuteWorkBuildOperationFiringStep.java:39)
	at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:46)
	at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:34)
	at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:47)
	at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:34)
	at org.gradle.internal.execution.impl.DefaultExecutionEngine$1.execute(DefaultExecutionEngine.java:64)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:132)
	... 29 more
Caused by: com.android.tools.r8.CompilationFailedException: Compilation failed to complete
	at Version.fakeStackEntry(Version_8.13.19.java:0)
	at com.android.tools.r8.q0.a(R8_8.13.19_e9726f7e236c4c45aca9deeada0d577f8cf0d304d735b8c0f7f49bca48f5e907:1)
	at com.android.tools.r8.internal.bs0.a(R8_8.13.19_e9726f7e236c4c45aca9deeada0d577f8cf0d304d735b8c0f7f49bca48f5e907:81)
	at com.android.tools.r8.internal.bs0.a(R8_8.13.19_e9726f7e236c4c45aca9deeada0d577f8cf0d304d735b8c0f7f49bca48f5e907:32)
	at com.android.tools.r8.internal.bs0.a(R8_8.13.19_e9726f7e236c4c45aca9deeada0d577f8cf0d304d735b8c0f7f49bca48f5e907:31)
	at com.android.tools.r8.R8.run(R8_8.13.19_e9726f7e236c4c45aca9deeada0d577f8cf0d304d735b8c0f7f49bca48f5e907:8)
	at com.android.builder.dexing.R8Tool.runR8(r8Tool.kt:323)
	at com.android.build.gradle.internal.tasks.R8Task$Companion.shrink(R8Task.kt:893)
	at com.android.build.gradle.internal.tasks.R8Task$R8Runnable.execute(R8Task.kt:996)
	at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:68)
	at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:66)
	at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:62)
	at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:100)
	at org.gradle.workers.internal.NoIsolationWorkerFactory$1.lambda$execute$0(NoIsolationWorkerFactory.java:62)
	at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:44)
	at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:41)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:209)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:166)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
	at org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41)
	at org.gradle.workers.internal.NoIsolationWorkerFactory$1.execute(NoIsolationWorkerFactory.java:59)
	at org.gradle.workers.internal.DefaultWorkerExecutor.lambda$submitWork$0(DefaultWorkerExecutor.java:176)
	at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:194)
	at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.access$700(DefaultConditionalExecutionQueue.java:127)
	at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner$1.run(DefaultConditionalExecutionQueue.java:169)
	at org.gradle.internal.Factories$1.create(Factories.java:31)
	at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:263)
	at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:127)
	at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:132)
	at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:164)
	at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:133)
	... 2 more
Caused by: com.android.tools.r8.internal.g: Missing class com.google.crypto.tink.integration.android.AndroidKeysetManager$Builder (referenced from: android.content.SharedPreferences androidx.security.crypto.EncryptedSharedPreferences.create(java.lang.String, java.lang.String, android.content.Context, androidx.security.crypto.EncryptedSharedPreferences$PrefKeyEncryptionScheme, androidx.security.crypto.EncryptedSharedPreferences$PrefValueEncryptionScheme))
Missing class com.google.crypto.tink.integration.android.AndroidKeysetManager (referenced from: android.content.SharedPreferences androidx.security.crypto.EncryptedSharedPreferences.create(java.lang.String, java.lang.String, android.content.Context, androidx.security.crypto.EncryptedSharedPreferences$PrefKeyEncryptionScheme, androidx.security.crypto.EncryptedSharedPreferences$PrefValueEncryptionScheme))
	at com.android.tools.r8.internal.df3.a(R8_8.13.19_e9726f7e236c4c45aca9deeada0d577f8cf0d304d735b8c0f7f49bca48f5e907:21)
	at com.android.tools.r8.internal.df3.error(R8_8.13.19_e9726f7e236c4c45aca9deeada0d577f8cf0d304d735b8c0f7f49bca48f5e907:1)
	at com.android.tools.r8.shaking.m0.a(R8_8.13.19_e9726f7e236c4c45aca9deeada0d577f8cf0d304d735b8c0f7f49bca48f5e907:6863)
	at com.android.tools.r8.shaking.m0.a(R8_8.13.19_e9726f7e236c4c45aca9deeada0d577f8cf0d304d735b8c0f7f49bca48f5e907:1683)
	at com.android.tools.r8.R8.a(R8_8.13.19_e9726f7e236c4c45aca9deeada0d577f8cf0d304d735b8c0f7f49bca48f5e907:1629)
	at com.android.tools.r8.R8.a(R8_8.13.19_e9726f7e236c4c45aca9deeada0d577f8cf0d304d735b8c0f7f49bca48f5e907:210)
	at com.android.tools.r8.R8.c(R8_8.13.19_e9726f7e236c4c45aca9deeada0d577f8cf0d304d735b8c0f7f49bca48f5e907:11)
	at com.android.tools.r8.R8.a(R8_8.13.19_e9726f7e236c4c45aca9deeada0d577f8cf0d304d735b8c0f7f49bca48f5e907:5)
	at com.android.tools.r8.internal.bs0.a(R8_8.13.19_e9726f7e236c4c45aca9deeada0d577f8cf0d304d735b8c0f7f49bca48f5e907:28)
	... 32 more
	Suppressed: java.lang.RuntimeException: com.android.tools.r8.internal.g: Missing class com.google.crypto.tink.integration.android.AndroidKeysetManager$Builder (referenced from: android.content.SharedPreferences androidx.security.crypto.EncryptedSharedPreferences.create(java.lang.String, java.lang.String, android.content.Context, androidx.security.crypto.EncryptedSharedPreferences$PrefKeyEncryptionScheme, androidx.security.crypto.EncryptedSharedPreferences$PrefValueEncryptionScheme))
Missing class com.google.crypto.tink.integration.android.AndroidKeysetManager (referenced from: android.content.SharedPreferences androidx.security.crypto.EncryptedSharedPreferences.create(java.lang.String, java.lang.String, android.content.Context, androidx.security.crypto.EncryptedSharedPreferences$PrefKeyEncryptionScheme, androidx.security.crypto.EncryptedSharedPreferences$PrefValueEncryptionScheme))
		at com.android.tools.r8.internal.df3.a(R8_8.13.19_e9726f7e236c4c45aca9deeada0d577f8cf0d304d735b8c0f7f49bca48f5e907:27)
		at com.android.tools.r8.shaking.m0.a(R8_8.13.19_e9726f7e236c4c45aca9deeada0d577f8cf0d304d735b8c0f7f49bca48f5e907:6865)
		at com.android.tools.r8.shaking.m0.a(R8_8.13.19_e9726f7e236c4c45aca9deeada0d577f8cf0d304d735b8c0f7f49bca48f5e907:1683)
		at com.android.tools.r8.R8.a(R8_8.13.19_e9726f7e236c4c45aca9deeada0d577f8cf0d304d735b8c0f7f49bca48f5e907:1629)
		at com.android.tools.r8.R8.a(R8_8.13.19_e9726f7e236c4c45aca9deeada0d577f8cf0d304d735b8c0f7f49bca48f5e907:210)
		at com.android.tools.r8.R8.c(R8_8.13.19_e9726f7e236c4c45aca9deeada0d577f8cf0d304d735b8c0f7f49bca48f5e907:11)
		at com.android.tools.r8.R8.a(R8_8.13.19_e9726f7e236c4c45aca9deeada0d577f8cf0d304d735b8c0f7f49bca48f5e907:5)
		at com.android.tools.r8.internal.bs0.a(R8_8.13.19_e9726f7e236c4c45aca9deeada0d577f8cf0d304d735b8c0f7f49bca48f5e907:28)
		at com.android.tools.r8.R8.run(R8_8.13.19_e9726f7e236c4c45aca9deeada0d577f8cf0d304d735b8c0f7f49bca48f5e907:8)
		at com.android.builder.dexing.R8Tool.runR8(r8Tool.kt:323)
		at com.android.build.gradle.internal.tasks.R8Task$Companion.shrink(R8Task.kt:893)
		at com.android.build.gradle.internal.tasks.R8Task$R8Runnable.execute(R8Task.kt:996)
		at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:68)
		at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:66)
		at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:62)
		at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:100)
		at org.gradle.workers.internal.NoIsolationWorkerFactory$1.lambda$execute$0(NoIsolationWorkerFactory.java:62)
		at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:44)
		at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:41)
		at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:209)
		at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
		at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
		at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
		at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:166)
		at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
		at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
		at org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41)
		at org.gradle.workers.internal.NoIsolationWorkerFactory$1.execute(NoIsolationWorkerFactory.java:59)
		at org.gradle.workers.internal.DefaultWorkerExecutor.lambda$submitWork$0(DefaultWorkerExecutor.java:176)
		at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
		at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:194)
		at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.access$700(DefaultConditionalExecutionQueue.java:127)
		at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner$1.run(DefaultConditionalExecutionQueue.java:169)
		at org.gradle.internal.Factories$1.create(Factories.java:31)
		at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:263)
		at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:127)
		at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:132)
		at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:164)
		at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:133)
		at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
		at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
		at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
		at org.gradle.internal.concurrent.AbstractManagedExecutor$1.run(AbstractManagedExecutor.java:47)
		at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
		at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
		at java.base/java.lang.Thread.run(Thread.java:840)
	Caused by: java.lang.Throwable: [CIRCULAR REFERENCE: com.android.tools.r8.internal.g: Missing class com.google.crypto.tink.integration.android.AndroidKeysetManager$Builder (referenced from: android.content.SharedPreferences androidx.security.crypto.EncryptedSharedPreferences.create(java.lang.String, java.lang.String, android.content.Context, androidx.security.crypto.EncryptedSharedPreferences$PrefKeyEncryptionScheme, androidx.security.crypto.EncryptedSharedPreferences$PrefValueEncryptionScheme))
Missing class com.google.crypto.tink.integration.android.AndroidKeysetManager (referenced from: android.content.SharedPreferences androidx.security.crypto.EncryptedSharedPreferences.create(java.lang.String, java.lang.String, android.content.Context, androidx.security.crypto.EncryptedSharedPreferences$PrefKeyEncryptionScheme, androidx.security.crypto.EncryptedSharedPreferences$PrefValueEncryptionScheme))]
		at com.android.tools.r8.internal.df3.a(R8_8.13.19_e9726f7e236c4c45aca9deeada0d577f8cf0d304d735b8c0f7f49bca48f5e907:21)
		at com.android.tools.r8.internal.df3.error(R8_8.13.19_e9726f7e236c4c45aca9deeada0d577f8cf0d304d735b8c0f7f49bca48f5e907:1)
		at com.android.tools.r8.shaking.m0.a(R8_8.13.19_e9726f7e236c4c45aca9deeada0d577f8cf0d304d735b8c0f7f49bca48f5e907:6863)
		at com.android.tools.r8.shaking.m0.a(R8_8.13.19_e9726f7e236c4c45aca9deeada0d577f8cf0d304d735b8c0f7f49bca48f5e907:1683)
		at com.android.tools.r8.R8.a(R8_8.13.19_e9726f7e236c4c45aca9deeada0d577f8cf0d304d735b8c0f7f49bca48f5e907:1629)
		at com.android.tools.r8.R8.a(R8_8.13.19_e9726f7e236c4c45aca9deeada0d577f8cf0d304d735b8c0f7f49bca48f5e907:210)
		at com.android.tools.r8.R8.c(R8_8.13.19_e9726f7e236c4c45aca9deeada0d577f8cf0d304d735b8c0f7f49bca48f5e907:11)
		at com.android.tools.r8.R8.a(R8_8.13.19_e9726f7e236c4c45aca9deeada0d577f8cf0d304d735b8c0f7f49bca48f5e907:5)
		at com.android.tools.r8.internal.bs0.a(R8_8.13.19_e9726f7e236c4c45aca9deeada0d577f8cf0d304d735b8c0f7f49bca48f5e907:28)
		at com.android.tools.r8.R8.run(R8_8.13.19_e9726f7e236c4c45aca9deeada0d577f8cf0d304d735b8c0f7f49bca48f5e907:8)
		at com.android.builder.dexing.R8Tool.runR8(r8Tool.kt:323)
		at com.android.build.gradle.internal.tasks.R8Task$Companion.shrink(R8Task.kt:893)
		at com.android.build.gradle.internal.tasks.R8Task$R8Runnable.execute(R8Task.kt:996)
		at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:68)
		at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:66)
		at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:62)
		at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:100)
		at org.gradle.workers.internal.NoIsolationWorkerFactory$1.lambda$execute$0(NoIsolationWorkerFactory.java:62)
		at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:44)
		at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:41)
		at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:209)
		at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
		at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
		at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
		at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:166)
		at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
		at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
		at org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41)
		at org.gradle.workers.internal.NoIsolationWorkerFactory$1.execute(NoIsolationWorkerFactory.java:59)
		at org.gradle.workers.internal.DefaultWorkerExecutor.lambda$submitWork$0(DefaultWorkerExecutor.java:176)
		at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:194)
		at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.access$700(DefaultConditionalExecutionQueue.java:127)
		at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner$1.run(DefaultConditionalExecutionQueue.java:169)
		at org.gradle.internal.Factories$1.create(Factories.java:31)
		at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:263)
		at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:127)
		at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:132)
		at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:164)
		at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:133)
		at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
		at org.gradle.internal.concurrent.AbstractManagedExecutor$1.run(AbstractManagedExecutor.java:47)


Deprecated Gradle features were used in this build, making it incompatible with Gradle 10.

You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.

For more on this, please refer to https://docs.gradle.org/9.0.0/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.

BUILD FAILED in 5m 39s
142 actionable tasks: 128 executed, 14 from cache

Publishing build scan...
gradle/actions: Writing build results to /home/runner/work/_temp/.gradle-actions/build-scans/build-1776631808952.json
https://gradle.com/s/eahbotpxdoh7o

Configuration cache entry stored.

R8 in the last CI build failed with "Missing class
com.google.crypto.tink.integration.android.AndroidKeysetManager" because
the previous commit excluded tink-android from security-crypto.
AndroidKeysetManager only ships in tink-android:1.8.0; the unified
tink:1.17.0 JVM artifact pulled transitively by ML Kit does not contain
the Android-Keystore integration classes that EncryptedSharedPreferences
relies on.

Reverse the exclusion: keep tink-android (which security-crypto needs)
and drop the duplicate unified tink from the ML Kit classpath instead.

https://claude.ai/code/session_01YVkQT5maQWnBN4G59puLBV
@github-actions
Copy link
Copy Markdown

CI build failure (6e28c30)

Run: https://github.com/Warp-net/warpdroid/actions/runs/24638978003

:app:assembleDebug (last 60 KB)
modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.KeysetInfo found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.KeysetInfo$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.KeysetInfo$Builder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.KeysetInfo$KeyInfo found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.KeysetInfo$KeyInfo$Builder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.KeysetInfo$KeyInfoOrBuilder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.KeysetInfoOrBuilder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.KeysetOrBuilder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.KmsAead found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.KmsAeadKey found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.KmsAeadKey$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.KmsAeadKey$Builder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.KmsAeadKeyFormat found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.KmsAeadKeyFormat$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.KmsAeadKeyFormat$Builder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.KmsAeadKeyFormatOrBuilder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.KmsAeadKeyOrBuilder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.KmsEnvelope found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.KmsEnvelopeAeadKey found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.KmsEnvelopeAeadKey$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.KmsEnvelopeAeadKey$Builder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.KmsEnvelopeAeadKeyFormat found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.KmsEnvelopeAeadKeyFormat$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.KmsEnvelopeAeadKeyFormat$Builder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.KmsEnvelopeAeadKeyFormatOrBuilder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.KmsEnvelopeAeadKeyOrBuilder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.OutputPrefixType found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.OutputPrefixType$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RegistryConfig found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RegistryConfig$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RegistryConfig$Builder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RegistryConfigOrBuilder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPkcs1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPkcs1KeyFormat found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPkcs1KeyFormat$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPkcs1KeyFormat$Builder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPkcs1KeyFormatOrBuilder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPkcs1Params found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPkcs1Params$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPkcs1Params$Builder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPkcs1ParamsOrBuilder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPkcs1PrivateKey found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPkcs1PrivateKey$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPkcs1PrivateKey$Builder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPkcs1PrivateKeyOrBuilder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPkcs1PublicKey found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPkcs1PublicKey$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPkcs1PublicKey$Builder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPkcs1PublicKeyOrBuilder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPss found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPssKeyFormat found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPssKeyFormat$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPssKeyFormat$Builder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPssKeyFormatOrBuilder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPssParams found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPssParams$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPssParams$Builder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPssParamsOrBuilder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPssPrivateKey found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPssPrivateKey$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPssPrivateKey$Builder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPssPrivateKeyOrBuilder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPssPublicKey found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPssPublicKey$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPssPublicKey$Builder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.RsaSsaPssPublicKeyOrBuilder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.Tink found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.XChaCha20Poly1305Key found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.XChaCha20Poly1305Key$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.XChaCha20Poly1305Key$Builder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.XChaCha20Poly1305KeyFormat found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.XChaCha20Poly1305KeyFormat$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.XChaCha20Poly1305KeyFormat$Builder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.XChaCha20Poly1305KeyFormatOrBuilder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.XChaCha20Poly1305KeyOrBuilder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.proto.Xchacha20Poly1305 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.EcdsaParameters found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.EcdsaParameters$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.EcdsaParameters$Builder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.EcdsaParameters$CurveType found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.EcdsaParameters$HashType found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.EcdsaParameters$SignatureEncoding found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.EcdsaParameters$Variant found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.EcdsaPrivateKey found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.EcdsaPrivateKey$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.EcdsaPrivateKey$Builder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.EcdsaPublicKey found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.EcdsaPublicKey$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.EcdsaPublicKey$Builder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.EcdsaSignKeyManager found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.EcdsaVerifyKeyManager found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.Ed25519PrivateKeyManager found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.Ed25519PublicKeyManager found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.PublicKeySignConfig found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.PublicKeySignFactory found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.PublicKeySignWrapper found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.PublicKeySignWrapper$WrappedPublicKeySign found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.PublicKeyVerifyConfig found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.PublicKeyVerifyFactory found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.PublicKeyVerifyWrapper found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.PublicKeyVerifyWrapper$WrappedPublicKeyVerify found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.RsaSsaPkcs1SignKeyManager found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.RsaSsaPkcs1VerifyKeyManager found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.RsaSsaPssSignKeyManager found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.RsaSsaPssVerifyKeyManager found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.SignatureConfig found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.SignatureKeyTemplates found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.SignatureParameters found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.SignaturePemKeysetReader found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.SignaturePemKeysetReader$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.SignaturePemKeysetReader$Builder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.SignaturePemKeysetReader$PemKey found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.SignaturePrivateKey found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.SignaturePublicKey found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.internal.SigUtil found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.signature.internal.SigUtil$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.streamingaead.AesCtrHmacStreamingKeyManager found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.streamingaead.AesGcmHkdfStreamingKeyManager found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.streamingaead.InputStreamDecrypter found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.streamingaead.ReadableByteChannelDecrypter found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.streamingaead.SeekableByteChannelDecrypter found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.streamingaead.StreamingAeadConfig found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.streamingaead.StreamingAeadFactory found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.streamingaead.StreamingAeadHelper found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.streamingaead.StreamingAeadKeyTemplates found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.streamingaead.StreamingAeadWrapper found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.AesCtrHmacStreaming found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.AesCtrHmacStreaming$AesCtrHmacStreamDecrypter found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.AesCtrHmacStreaming$AesCtrHmacStreamEncrypter found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.AesCtrJceCipher found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.AesCtrJceCipher$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.AesEaxJce found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.AesEaxJce$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.AesEaxJce$2 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.AesGcmHkdfStreaming found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.AesGcmHkdfStreaming$AesGcmHkdfStreamDecrypter found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.AesGcmHkdfStreaming$AesGcmHkdfStreamEncrypter found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.AesGcmJce found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.AesSiv found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.Base64 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.Base64$Coder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.Base64$Decoder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.Base64$Encoder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.Bytes found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.ChaCha20 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.ChaCha20Poly1305 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EcdsaSignJce found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EcdsaVerifyJce found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EciesAeadHkdfHybridDecrypt found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EciesAeadHkdfHybridEncrypt found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EciesHkdfRecipientKem found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EciesHkdfSenderKem found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EciesHkdfSenderKem$KemKey found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.Ed25519Sign found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.Ed25519Sign$KeyPair found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.Ed25519Verify found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EllipticCurves found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EllipticCurves$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EllipticCurves$CurveType found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EllipticCurves$EcdsaEncoding found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EllipticCurves$PointFormatType found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EncryptThenAuthenticate found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EngineFactory found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EngineFactory$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EngineFactory$AndroidPolicy found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EngineFactory$DefaultPolicy found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EngineFactory$FipsPolicy found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EngineFactory$Policy found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EngineWrapper found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EngineWrapper$TCipher found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EngineWrapper$TKeyAgreement found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EngineWrapper$TKeyFactory found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EngineWrapper$TKeyPairGenerator found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EngineWrapper$TMac found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EngineWrapper$TMessageDigest found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.EngineWrapper$TSignature found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.Enums found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.Enums$HashType found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.Hex found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.Hkdf found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.IndCpaCipher found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.Kwp found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.NonceBasedStreamingAead found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.PemKeyType found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.PrfAesCmac found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.PrfHmacJce found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.PrfHmacJce$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.PrfMac found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.Random found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.RewindableReadableByteChannel found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.RsaSsaPkcs1SignJce found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.RsaSsaPkcs1VerifyJce found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.RsaSsaPkcs1VerifyJce$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.RsaSsaPssSignJce found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.RsaSsaPssVerifyJce found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.SelfKeyTestValidators found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.StreamSegmentDecrypter found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.StreamSegmentEncrypter found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.StreamingAeadDecryptingChannel found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.StreamingAeadDecryptingStream found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.StreamingAeadEncryptingChannel found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.StreamingAeadEncryptingStream found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.StreamingAeadSeekableDecryptingChannel found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.SubtleUtil found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.SubtleUtil$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.Validators found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.Validators$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.X25519 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.XChaCha20 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.XChaCha20Poly1305 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.prf.HkdfStreamingPrf found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.prf.HkdfStreamingPrf$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.prf.HkdfStreamingPrf$HkdfInputStream found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.prf.PrfImpl found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.subtle.prf.StreamingPrf found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.tinkkey.KeyAccess found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.tinkkey.KeyHandle found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.tinkkey.KeyHandle$KeyStatusType found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.tinkkey.SecretKeyAccess found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.tinkkey.TinkKey found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.tinkkey.internal.InternalKeyHandle found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.tinkkey.internal.ProtoKey found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.util.Bytes found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.util.KeysDownloader found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.util.KeysDownloader$1 found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.util.KeysDownloader$Builder found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.util.SecretBigInteger found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)
Duplicate class com.google.crypto.tink.util.SecretBytes found in modules tink-1.17.0.jar -> tink-1.17.0 (com.google.crypto.tink:tink:1.17.0) and tink-android-1.8.0.jar -> tink-android-1.8.0 (com.google.crypto.tink:tink-android:1.8.0)

Learn how to fix dependency resolution errors at https://d.android.com/r/tools/classpath-sync-errors
	at com.android.build.gradle.internal.tasks.CheckDuplicateClassesDelegate.run(CheckDuplicateClassesDelegate.kt:65)
	at com.android.build.gradle.internal.tasks.CheckDuplicatesRunnable.execute(CheckDuplicateClassesDelegate.kt:91)
	at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:68)
	at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:66)
	at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:62)
	at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:100)
	at org.gradle.workers.internal.NoIsolationWorkerFactory$1.lambda$execute$0(NoIsolationWorkerFactory.java:62)
	at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:44)
	at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:41)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:209)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:166)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
	at org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41)
	at org.gradle.workers.internal.NoIsolationWorkerFactory$1.execute(NoIsolationWorkerFactory.java:59)
	at org.gradle.workers.internal.DefaultWorkerExecutor.lambda$submitWork$0(DefaultWorkerExecutor.java:176)
	at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:194)
	at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.access$700(DefaultConditionalExecutionQueue.java:127)
	at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner$1.run(DefaultConditionalExecutionQueue.java:169)
	at org.gradle.internal.Factories$1.create(Factories.java:31)
	at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:263)
	at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:127)
	at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:132)
	at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:164)
	at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:133)
	... 2 more


Deprecated Gradle features were used in this build, making it incompatible with Gradle 10.

You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.

For more on this, please refer to https://docs.gradle.org/9.0.0/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.

BUILD FAILED in 1m 3s
35 actionable tasks: 35 executed

Publishing build scan...
gradle/actions: Writing build results to /home/runner/work/_temp/.gradle-actions/build-scans/build-1776632327664.json
https://gradle.com/s/xs5jtejgcwsjo

Configuration cache entry stored.

The per-dependency exclusion on ML Kit did not stop tink:1.17.0 from
landing on the classpath — another transitive dep pulls it as well — so
R8 kept hitting ~200 duplicate classes against tink-android:1.8.0.

Switch to a configurations-wide exclude of com.google.crypto.tink:tink
so the unified JVM artifact is dropped regardless of which dependency
brings it in. tink-android is a distinct module name, so it keeps
shipping AndroidKeysetManager for EncryptedSharedPreferences.

https://claude.ai/code/session_01YVkQT5maQWnBN4G59puLBV
@github-actions
Copy link
Copy Markdown

CI build failure (8305810)

Run: https://github.com/Warp-net/warpdroid/actions/runs/24639018521

:app:assembleDebug (last 60 KB)
o be applied to property.
- To opt in to applying to both value parameter and property, add '-Xannotation-default-target=param-property' to your compiler arguments.
- To keep applying to the value parameter only, use the '@param:' annotation target.

See https://youtrack.jetbrains.com/issue/KT-73255 for more details.
w: file:///home/runner/work/warpdroid/warpdroid/warpnet-transport/src/main/kotlin/site/warpnet/transport/dto/WarpnetDtos.kt:149:5 This annotation is currently applied to the value parameter only, but in the future it will also be applied to property.
- To opt in to applying to both value parameter and property, add '-Xannotation-default-target=param-property' to your compiler arguments.
- To keep applying to the value parameter only, use the '@param:' annotation target.

See https://youtrack.jetbrains.com/issue/KT-73255 for more details.
w: file:///home/runner/work/warpdroid/warpdroid/warpnet-transport/src/main/kotlin/site/warpnet/transport/dto/WarpnetDtos.kt:163:5 This annotation is currently applied to the value parameter only, but in the future it will also be applied to property.
- To opt in to applying to both value parameter and property, add '-Xannotation-default-target=param-property' to your compiler arguments.
- To keep applying to the value parameter only, use the '@param:' annotation target.

See https://youtrack.jetbrains.com/issue/KT-73255 for more details.
w: file:///home/runner/work/warpdroid/warpdroid/warpnet-transport/src/main/kotlin/site/warpnet/transport/dto/WarpnetDtos.kt:168:5 This annotation is currently applied to the value parameter only, but in the future it will also be applied to property.
- To opt in to applying to both value parameter and property, add '-Xannotation-default-target=param-property' to your compiler arguments.
- To keep applying to the value parameter only, use the '@param:' annotation target.

See https://youtrack.jetbrains.com/issue/KT-73255 for more details.
w: file:///home/runner/work/warpdroid/warpdroid/warpnet-transport/src/main/kotlin/site/warpnet/transport/dto/WarpnetDtos.kt:197:5 This annotation is currently applied to the value parameter only, but in the future it will also be applied to property.
- To opt in to applying to both value parameter and property, add '-Xannotation-default-target=param-property' to your compiler arguments.
- To keep applying to the value parameter only, use the '@param:' annotation target.

See https://youtrack.jetbrains.com/issue/KT-73255 for more details.
w: file:///home/runner/work/warpdroid/warpdroid/warpnet-transport/src/main/kotlin/site/warpnet/transport/dto/WarpnetDtos.kt:204:5 This annotation is currently applied to the value parameter only, but in the future it will also be applied to property.
- To opt in to applying to both value parameter and property, add '-Xannotation-default-target=param-property' to your compiler arguments.
- To keep applying to the value parameter only, use the '@param:' annotation target.

See https://youtrack.jetbrains.com/issue/KT-73255 for more details.
w: file:///home/runner/work/warpdroid/warpdroid/warpnet-transport/src/main/kotlin/site/warpnet/transport/dto/WarpnetDtos.kt:211:5 This annotation is currently applied to the value parameter only, but in the future it will also be applied to property.
- To opt in to applying to both value parameter and property, add '-Xannotation-default-target=param-property' to your compiler arguments.
- To keep applying to the value parameter only, use the '@param:' annotation target.

See https://youtrack.jetbrains.com/issue/KT-73255 for more details.
w: file:///home/runner/work/warpdroid/warpdroid/warpnet-transport/src/main/kotlin/site/warpnet/transport/dto/WarpnetDtos.kt:218:5 This annotation is currently applied to the value parameter only, but in the future it will also be applied to property.
- To opt in to applying to both value parameter and property, add '-Xannotation-default-target=param-property' to your compiler arguments.
- To keep applying to the value parameter only, use the '@param:' annotation target.

See https://youtrack.jetbrains.com/issue/KT-73255 for more details.
w: file:///home/runner/work/warpdroid/warpdroid/warpnet-transport/src/main/kotlin/site/warpnet/transport/dto/WarpnetDtos.kt:223:5 This annotation is currently applied to the value parameter only, but in the future it will also be applied to property.
- To opt in to applying to both value parameter and property, add '-Xannotation-default-target=param-property' to your compiler arguments.
- To keep applying to the value parameter only, use the '@param:' annotation target.

See https://youtrack.jetbrains.com/issue/KT-73255 for more details.
w: file:///home/runner/work/warpdroid/warpdroid/warpnet-transport/src/main/kotlin/site/warpnet/transport/dto/WarpnetDtos.kt:228:5 This annotation is currently applied to the value parameter only, but in the future it will also be applied to property.
- To opt in to applying to both value parameter and property, add '-Xannotation-default-target=param-property' to your compiler arguments.
- To keep applying to the value parameter only, use the '@param:' annotation target.

See https://youtrack.jetbrains.com/issue/KT-73255 for more details.
w: file:///home/runner/work/warpdroid/warpdroid/warpnet-transport/src/main/kotlin/site/warpnet/transport/dto/WarpnetDtos.kt:233:5 This annotation is currently applied to the value parameter only, but in the future it will also be applied to property.
- To opt in to applying to both value parameter and property, add '-Xannotation-default-target=param-property' to your compiler arguments.
- To keep applying to the value parameter only, use the '@param:' annotation target.

See https://youtrack.jetbrains.com/issue/KT-73255 for more details.
w: file:///home/runner/work/warpdroid/warpdroid/warpnet-transport/src/main/kotlin/site/warpnet/transport/dto/WarpnetDtos.kt:234:5 This annotation is currently applied to the value parameter only, but in the future it will also be applied to property.
- To opt in to applying to both value parameter and property, add '-Xannotation-default-target=param-property' to your compiler arguments.
- To keep applying to the value parameter only, use the '@param:' annotation target.

See https://youtrack.jetbrains.com/issue/KT-73255 for more details.
w: file:///home/runner/work/warpdroid/warpdroid/warpnet-transport/src/main/kotlin/site/warpnet/transport/dto/WarpnetDtos.kt:235:5 This annotation is currently applied to the value parameter only, but in the future it will also be applied to property.
- To opt in to applying to both value parameter and property, add '-Xannotation-default-target=param-property' to your compiler arguments.
- To keep applying to the value parameter only, use the '@param:' annotation target.

See https://youtrack.jetbrains.com/issue/KT-73255 for more details.
w: file:///home/runner/work/warpdroid/warpdroid/warpnet-transport/src/main/kotlin/site/warpnet/transport/dto/WarpnetDtos.kt:236:5 This annotation is currently applied to the value parameter only, but in the future it will also be applied to property.
- To opt in to applying to both value parameter and property, add '-Xannotation-default-target=param-property' to your compiler arguments.
- To keep applying to the value parameter only, use the '@param:' annotation target.

See https://youtrack.jetbrains.com/issue/KT-73255 for more details.
w: file:///home/runner/work/warpdroid/warpdroid/warpnet-transport/src/main/kotlin/site/warpnet/transport/dto/WarpnetDtos.kt:237:5 This annotation is currently applied to the value parameter only, but in the future it will also be applied to property.
- To opt in to applying to both value parameter and property, add '-Xannotation-default-target=param-property' to your compiler arguments.
- To keep applying to the value parameter only, use the '@param:' annotation target.

See https://youtrack.jetbrains.com/issue/KT-73255 for more details.
w: file:///home/runner/work/warpdroid/warpdroid/warpnet-transport/src/main/kotlin/site/warpnet/transport/dto/WarpnetDtos.kt:238:5 This annotation is currently applied to the value parameter only, but in the future it will also be applied to property.
- To opt in to applying to both value parameter and property, add '-Xannotation-default-target=param-property' to your compiler arguments.
- To keep applying to the value parameter only, use the '@param:' annotation target.

See https://youtrack.jetbrains.com/issue/KT-73255 for more details.

> Task :warpnet-transport:javaPreCompileRelease FROM-CACHE
> Task :warpnet-transport:compileReleaseJavaWithJavac NO-SOURCE
> Task :warpnet-transport:mergeReleaseGeneratedProguardFiles
> Task :warpnet-transport:exportReleaseConsumerProguardFiles
> Task :app:checkBlueReleaseDuplicateClasses
> Task :warpnet-transport:prepareReleaseArtProfile
> Task :app:mergeBlueReleaseArtProfile
> Task :app:buildKotlinToolingMetadata
> Task :app:dataBindingMergeDependencyArtifactsBlueRelease
> Task :app:generateBlueReleaseResValues FROM-CACHE
> Task :app:generateBlueReleaseResources FROM-CACHE
> Task :app:kspBlueDebugKotlin
> Task :app:mergeBlueReleaseResources
> Task :app:packageBlueReleaseResources
> Task :app:processBlueReleaseNavigationResources FROM-CACHE
> Task :app:parseBlueReleaseLocalResources FROM-CACHE
> Task :app:dataBindingGenBaseClassesBlueRelease
> Task :app:generateBlueReleaseBuildConfig
> Task :warpnet-transport:writeReleaseAarMetadata
> Task :app:checkBlueReleaseAarMetadata
> Task :app:compileBlueReleaseNavigationResources FROM-CACHE
> Task :app:mapBlueReleaseSourceSetPaths
> Task :app:createBlueReleaseCompatibleScreenManifests
> Task :app:extractDeepLinksBlueRelease FROM-CACHE
> Task :warpnet-transport:extractDeepLinksRelease FROM-CACHE
> Task :warpnet-transport:processReleaseManifest FROM-CACHE
> Task :app:processBlueReleaseMainManifest
> Task :app:processBlueReleaseManifest
> Task :app:processBlueReleaseManifestForPackage
> Task :app:processBlueReleaseResources
> Task :warpnet-transport:bundleLibCompileToJarRelease
> Task :app:compileBlueDebugKotlin
> Task :app:kspBlueReleaseKotlin
> Task :app:compileBlueReleaseKotlin

> Task :app:compileBlueDebugKotlin
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/ListsActivity.kt:152:102 'static field SOFT_INPUT_ADJUST_RESIZE: Int' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/ViewMediaActivity.kt:153:26 'var systemUiVisibility: Int' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/ViewMediaActivity.kt:153:52 'static field SYSTEM_UI_FLAG_LOW_PROFILE: Int' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/ViewMediaActivity.kt:341:17 'fun setVisibleInDownloadsUi(p0: Boolean): DownloadManager.Request!' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/accountlist/AccountListFragment.kt:196:40 The corresponding parameter in the supertype 'AccountActionListener' is named 'accountId'. This may cause problems when calling this function with named arguments.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/accountlist/AccountListFragment.kt:204:42 The corresponding parameter in the supertype 'AccountActionListener' is named 'accountId'. This may cause problems when calling this function with named arguments.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/compose/dialog/AddPollDialog.kt:136:98 'static field SOFT_INPUT_ADJUST_RESIZE: Int' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/compose/dialog/CaptionDialog.kt:144:65 'static field SOFT_INPUT_ADJUST_RESIZE: Int' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/compose/dialog/FocusDialog.kt:109:36 'static field SOFT_INPUT_ADJUST_RESIZE: Int' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/notifications/NotificationsPagingAdapter.kt:221:33 Unchecked cast of 'RecyclerView.ViewHolder' to 'LoadMoreViewHolder<NotificationViewData.LoadMore>'.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:10:8 'class EncryptedSharedPreferences : Any, SharedPreferences' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:11:8 'class MasterKey : Any' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:32:44 'class EncryptedSharedPreferences : Any, SharedPreferences' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:35:9 'class MasterKey : Any' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:35:19 'constructor(p0: @NonNull() Context): MasterKey.Builder' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:36:27 'class MasterKey : Any' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:36:37 'enum class KeyScheme : Enum<MasterKey.KeyScheme!>' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:38:9 'class EncryptedSharedPreferences : Any, SharedPreferences' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:38:36 'enum class PrefKeyEncryptionScheme : Enum<EncryptedSharedPreferences.PrefKeyEncryptionScheme!>' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:39:9 'class EncryptedSharedPreferences : Any, SharedPreferences' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:39:36 'enum class PrefValueEncryptionScheme : Enum<EncryptedSharedPreferences.PrefValueEncryptionScheme!>' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/viewthread/edits/ViewEditsViewModel.kt:89:27 'static fun setXMLReaderClass(p0: String!): Unit' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/util/LocaleUtils.kt:49:32 'constructor(p0: String!): Locale' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/util/LocaleUtils.kt:86:12 'constructor(p0: String!): Locale' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/util/ThemeUtils.kt:44:31 'static field MODE_NIGHT_AUTO_TIME: Int' is deprecated. Deprecated in Java.

> Task :app:compileBlueReleaseKotlin
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/ListsActivity.kt:152:102 'static field SOFT_INPUT_ADJUST_RESIZE: Int' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/ViewMediaActivity.kt:153:26 'var systemUiVisibility: Int' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/ViewMediaActivity.kt:153:52 'static field SYSTEM_UI_FLAG_LOW_PROFILE: Int' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/ViewMediaActivity.kt:341:17 'fun setVisibleInDownloadsUi(p0: Boolean): DownloadManager.Request!' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/accountlist/AccountListFragment.kt:196:40 The corresponding parameter in the supertype 'AccountActionListener' is named 'accountId'. This may cause problems when calling this function with named arguments.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/accountlist/AccountListFragment.kt:204:42 The corresponding parameter in the supertype 'AccountActionListener' is named 'accountId'. This may cause problems when calling this function with named arguments.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/compose/dialog/AddPollDialog.kt:136:98 'static field SOFT_INPUT_ADJUST_RESIZE: Int' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/compose/dialog/CaptionDialog.kt:144:65 'static field SOFT_INPUT_ADJUST_RESIZE: Int' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/compose/dialog/FocusDialog.kt:109:36 'static field SOFT_INPUT_ADJUST_RESIZE: Int' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/notifications/NotificationsPagingAdapter.kt:221:33 Unchecked cast of 'RecyclerView.ViewHolder' to 'LoadMoreViewHolder<NotificationViewData.LoadMore>'.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:10:8 'class EncryptedSharedPreferences : Any, SharedPreferences' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:11:8 'class MasterKey : Any' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:32:44 'class EncryptedSharedPreferences : Any, SharedPreferences' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:35:9 'class MasterKey : Any' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:35:19 'constructor(p0: @NonNull() Context): MasterKey.Builder' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:36:27 'class MasterKey : Any' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:36:37 'enum class KeyScheme : Enum<MasterKey.KeyScheme!>' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:38:9 'class EncryptedSharedPreferences : Any, SharedPreferences' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:38:36 'enum class PrefKeyEncryptionScheme : Enum<EncryptedSharedPreferences.PrefKeyEncryptionScheme!>' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:39:9 'class EncryptedSharedPreferences : Any, SharedPreferences' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:39:36 'enum class PrefValueEncryptionScheme : Enum<EncryptedSharedPreferences.PrefValueEncryptionScheme!>' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/viewthread/edits/ViewEditsViewModel.kt:89:27 'static fun setXMLReaderClass(p0: String!): Unit' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/util/LocaleUtils.kt:49:32 'constructor(p0: String!): Locale' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/util/LocaleUtils.kt:86:12 'constructor(p0: String!): Locale' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/util/ThemeUtils.kt:44:31 'static field MODE_NIGHT_AUTO_TIME: Int' is deprecated. Deprecated in Java.

> Task :app:javaPreCompileBlueRelease FROM-CACHE
> Task :app:compileBlueDebugJavaWithJavac
> Task :app:hiltAggregateDepsBlueDebug
> Task :app:compileBlueReleaseJavaWithJavac
> Task :warpnet-transport:bundleLibRuntimeToJarRelease
> Task :warpnet-transport:processReleaseJavaRes
> Task :warpnet-transport:createFullJarRelease
> Task :app:hiltAggregateDepsBlueRelease FROM-CACHE

> Task :app:hiltJavaCompileBlueDebug
warning: Kapt support in Moshi Kotlin Code Gen is deprecated and will be removed in 2.0. Please migrate to KSP. https://github.com/square/moshi#codegen
1 warning

> Task :app:hiltJavaCompileBlueRelease
warning: Kapt support in Moshi Kotlin Code Gen is deprecated and will be removed in 2.0. Please migrate to KSP. https://github.com/square/moshi#codegen
1 warning

> Task :app:processBlueDebugJavaRes
> Task :app:mergeBlueDebugJavaResource
> Task :app:transformBlueDebugClassesWithAsm
> Task :app:transformBlueReleaseClassesWithAsm
> Task :app:dexBuilderBlueDebug
> Task :app:mergeBlueDebugGlobalSynthetics
> Task :app:expandBlueReleaseArtProfileWildcards
> Task :app:extractProguardFiles
> Task :app:mergeBlueReleaseGeneratedProguardFiles
> Task :app:processBlueReleaseJavaRes
> Task :app:mergeProjectDexBlueDebug
> Task :app:mergeBlueReleaseJavaResource
> Task :app:mergeBlueReleaseStartupProfile
> Task :app:packageBlueDebug
> Task :app:createBlueDebugApkListingFileRedirect
> Task :app:assembleBlueDebug
> Task :app:generateBlueReleaseAssets UP-TO-DATE
> Task :warpnet-transport:generateReleaseAssets UP-TO-DATE
> Task :warpnet-transport:mergeReleaseAssets
> Task :app:mergeBlueReleaseAssets
> Task :app:compressBlueReleaseAssets
> Task :app:extractBlueReleaseVersionControlInfo
> Task :warpnet-transport:extractProguardFiles
> Task :warpnet-transport:generateReleaseLintModel
> Task :warpnet-transport:prepareLintJarForPublish
> Task :app:generateBlueReleaseLintVitalReportModel
> Task :warpnet-transport:checkReleaseAarMetadata
> Task :warpnet-transport:stripReleaseDebugSymbols NO-SOURCE
> Task :warpnet-transport:copyReleaseJniLibsProjectAndLocalJars
> Task :warpnet-transport:extractDeepLinksForAarRelease
> Task :warpnet-transport:extractReleaseAnnotations
> Task :warpnet-transport:mergeReleaseConsumerProguardFiles
> Task :warpnet-transport:mergeReleaseJavaResource
> Task :warpnet-transport:syncReleaseLibJars
> Task :warpnet-transport:bundleReleaseLocalLintAar
> Task :warpnet-transport:lintVitalAnalyzeRelease
> Task :warpnet-transport:writeReleaseLintModelMetadata
> Task :app:minifyBlueReleaseWithR8
> Task :app:lintVitalAnalyzeBlueRelease
> Task :warpnet-transport:generateReleaseLintVitalModel
> Task :app:lintVitalReportBlueRelease SKIPPED
> Task :app:lintVitalBlueRelease SKIPPED
> Task :app:writeBlueReleaseAppMetadata
> Task :app:writeBlueReleaseSigningConfigVersions
> Task :app:preGreenDebugBuild UP-TO-DATE
> Task :app:mergeGreenDebugNativeDebugMetadata NO-SOURCE
> Task :app:dataBindingMergeDependencyArtifactsGreenDebug
> Task :app:generateGreenDebugResValues
> Task :app:generateGreenDebugResources
> Task :app:mergeGreenDebugResources
> Task :app:packageGreenDebugResources
> Task :app:processGreenDebugNavigationResources
> Task :app:parseGreenDebugLocalResources
> Task :app:dataBindingGenBaseClassesGreenDebug FROM-CACHE
> Task :app:generateGreenDebugBuildConfig
> Task :app:checkGreenDebugAarMetadata
> Task :app:compileGreenDebugNavigationResources FROM-CACHE
> Task :app:mapGreenDebugSourceSetPaths
> Task :app:createGreenDebugCompatibleScreenManifests
> Task :app:extractDeepLinksGreenDebug
> Task :app:processGreenDebugMainManifest
> Task :app:processGreenDebugManifest
> Task :app:processGreenDebugManifestForPackage
> Task :app:processGreenDebugResources
> Task :app:kspGreenDebugKotlin
> Task :app:compileGreenDebugKotlin
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/ListsActivity.kt:152:102 'static field SOFT_INPUT_ADJUST_RESIZE: Int' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/ViewMediaActivity.kt:153:26 'var systemUiVisibility: Int' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/ViewMediaActivity.kt:153:52 'static field SYSTEM_UI_FLAG_LOW_PROFILE: Int' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/ViewMediaActivity.kt:341:17 'fun setVisibleInDownloadsUi(p0: Boolean): DownloadManager.Request!' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/accountlist/AccountListFragment.kt:196:40 The corresponding parameter in the supertype 'AccountActionListener' is named 'accountId'. This may cause problems when calling this function with named arguments.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/accountlist/AccountListFragment.kt:204:42 The corresponding parameter in the supertype 'AccountActionListener' is named 'accountId'. This may cause problems when calling this function with named arguments.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/compose/dialog/AddPollDialog.kt:136:98 'static field SOFT_INPUT_ADJUST_RESIZE: Int' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/compose/dialog/CaptionDialog.kt:144:65 'static field SOFT_INPUT_ADJUST_RESIZE: Int' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/compose/dialog/FocusDialog.kt:109:36 'static field SOFT_INPUT_ADJUST_RESIZE: Int' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/notifications/NotificationsPagingAdapter.kt:221:33 Unchecked cast of 'RecyclerView.ViewHolder' to 'LoadMoreViewHolder<NotificationViewData.LoadMore>'.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:10:8 'class EncryptedSharedPreferences : Any, SharedPreferences' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:11:8 'class MasterKey : Any' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:32:44 'class EncryptedSharedPreferences : Any, SharedPreferences' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:35:9 'class MasterKey : Any' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:35:19 'constructor(p0: @NonNull() Context): MasterKey.Builder' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:36:27 'class MasterKey : Any' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:36:37 'enum class KeyScheme : Enum<MasterKey.KeyScheme!>' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:38:9 'class EncryptedSharedPreferences : Any, SharedPreferences' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:38:36 'enum class PrefKeyEncryptionScheme : Enum<EncryptedSharedPreferences.PrefKeyEncryptionScheme!>' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:39:9 'class EncryptedSharedPreferences : Any, SharedPreferences' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:39:36 'enum class PrefValueEncryptionScheme : Enum<EncryptedSharedPreferences.PrefValueEncryptionScheme!>' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/viewthread/edits/ViewEditsViewModel.kt:89:27 'static fun setXMLReaderClass(p0: String!): Unit' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/util/LocaleUtils.kt:49:32 'constructor(p0: String!): Locale' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/util/LocaleUtils.kt:86:12 'constructor(p0: String!): Locale' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/util/ThemeUtils.kt:44:31 'static field MODE_NIGHT_AUTO_TIME: Int' is deprecated. Deprecated in Java.

> Task :app:javaPreCompileGreenDebug FROM-CACHE
> Task :app:compileGreenDebugJavaWithJavac
> Task :app:generateGreenDebugAssets UP-TO-DATE
> Task :app:mergeGreenDebugAssets
> Task :app:compressGreenDebugAssets FROM-CACHE
> Task :app:checkGreenDebugDuplicateClasses
> Task :app:desugarGreenDebugFileDependencies FROM-CACHE
> Task :app:mergeExtDexGreenDebug FROM-CACHE
> Task :app:hiltAggregateDepsGreenDebug FROM-CACHE

> Task :app:hiltJavaCompileGreenDebug
warning: Kapt support in Moshi Kotlin Code Gen is deprecated and will be removed in 2.0. Please migrate to KSP. https://github.com/square/moshi#codegen
1 warning

> Task :app:transformGreenDebugClassesWithAsm
> Task :app:dexBuilderGreenDebug
> Task :app:mergeGreenDebugGlobalSynthetics FROM-CACHE
> Task :app:processGreenDebugJavaRes
> Task :app:mergeGreenDebugJavaResource
> Task :app:mergeLibDexGreenDebug FROM-CACHE
> Task :app:mergeProjectDexGreenDebug
> Task :app:mergeGreenDebugJniLibFolders
> Task :app:mergeGreenDebugNativeLibs

> Task :app:stripGreenDebugDebugSymbols
Unable to strip the following libraries, packaging them as they are: libandroidx.graphics.path.so, libanimation-decoder-gif.so, libavif_android.so, libbarhopper_v3.so, libconscrypt_jni.so, libgojni.so, libimage_processing_util_jni.so, libsurface_util_jni.so. Run with --info option to learn more.

> Task :app:validateSigningGreenDebug
> Task :app:writeGreenDebugAppMetadata
> Task :app:writeGreenDebugSigningConfigVersions
> Task :app:packageGreenDebug
> Task :app:createGreenDebugApkListingFileRedirect
> Task :app:assembleGreenDebug
> Task :app:assembleDebug
> Task :app:preGreenReleaseBuild UP-TO-DATE
> Task :app:mergeGreenReleaseJniLibFolders
> Task :app:mergeGreenReleaseNativeLibs

> Task :app:stripGreenReleaseDebugSymbols
Unable to strip the following libraries, packaging them as they are: libandroidx.graphics.path.so, libanimation-decoder-gif.so, libavif_android.so, libbarhopper_v3.so, libconscrypt_jni.so, libgojni.so, libimage_processing_util_jni.so, libsurface_util_jni.so. Run with --info option to learn more.

> Task :app:extractGreenReleaseNativeSymbolTables FROM-CACHE
> Task :app:mergeGreenReleaseNativeDebugMetadata NO-SOURCE
> Task :app:checkGreenReleaseDuplicateClasses
> Task :app:mergeGreenReleaseArtProfile
> Task :app:dataBindingMergeDependencyArtifactsGreenRelease
> Task :app:generateGreenReleaseResValues FROM-CACHE
> Task :app:generateGreenReleaseResources FROM-CACHE
> Task :app:mergeGreenReleaseResources
> Task :app:packageGreenReleaseResources
> Task :app:processGreenReleaseNavigationResources FROM-CACHE
> Task :app:parseGreenReleaseLocalResources FROM-CACHE
> Task :app:dataBindingGenBaseClassesGreenRelease FROM-CACHE
> Task :app:generateGreenReleaseBuildConfig
> Task :app:checkGreenReleaseAarMetadata
> Task :app:compileGreenReleaseNavigationResources FROM-CACHE
> Task :app:mapGreenReleaseSourceSetPaths
> Task :app:createGreenReleaseCompatibleScreenManifests
> Task :app:extractDeepLinksGreenRelease FROM-CACHE
> Task :app:processGreenReleaseMainManifest
> Task :app:processGreenReleaseManifest
> Task :app:processGreenReleaseManifestForPackage
> Task :app:processGreenReleaseResources
> Task :app:kspGreenReleaseKotlin
> Task :app:compileBlueReleaseArtProfile
> Task :app:convertShrunkResourcesToBinaryBlueRelease
> Task :app:optimizeBlueReleaseResources
> Task :app:packageBlueRelease
> Task :app:createBlueReleaseApkListingFileRedirect
> Task :app:assembleBlueRelease
> Task :app:assembleBlue
> Task :app:javaPreCompileGreenRelease FROM-CACHE
> Task :app:mergeGreenReleaseStartupProfile
> Task :app:generateGreenReleaseAssets UP-TO-DATE
> Task :app:mergeGreenReleaseAssets
> Task :app:compressGreenReleaseAssets FROM-CACHE
> Task :app:extractGreenReleaseVersionControlInfo
> Task :app:writeGreenReleaseAppMetadata
> Task :app:writeGreenReleaseSigningConfigVersions

> Task :app:licenseeAndroidBlueDebug FAILED
WARNING: Allowed SPDX identifier 'BSD-3-Clause' is unused

com.google.android.gms:play-services-base:18.5.0
 - ERROR: Unknown license URL 'https://developer.android.com/studio/terms.html' is NOT allowed
com.google.android.gms:play-services-basement:18.4.0
 - ERROR: Unknown license URL 'https://developer.android.com/studio/terms.html' is NOT allowed
com.google.android.gms:play-services-mlkit-barcode-scanning:18.3.1
 - ERROR: Unknown license URL 'https://developers.google.com/ml-kit/terms' is NOT allowed
com.google.android.gms:play-services-tasks:18.2.0
 - ERROR: Unknown license URL 'https://developer.android.com/studio/terms.html' is NOT allowed
com.google.android.odml:image:1.0.0-beta1
 - ERROR: Unknown license URL 'https://developer.android.com/studio/terms.html' is NOT allowed
com.google.mlkit:barcode-scanning:17.3.0
 - ERROR: Unknown license URL 'https://developers.google.com/ml-kit/terms' is NOT allowed
com.google.mlkit:barcode-scanning-common:17.0.0
 - ERROR: Unknown license URL 'https://developers.google.com/ml-kit/terms' is NOT allowed
com.google.mlkit:common:18.11.0
 - ERROR: Unknown license URL 'https://developers.google.com/ml-kit/terms' is NOT allowed
com.google.mlkit:vision-common:17.3.0
 - ERROR: Unknown license URL 'https://developers.google.com/ml-kit/terms' is NOT allowed
com.google.mlkit:vision-interfaces:16.3.0
 - ERROR: Unknown license URL 'https://developers.google.com/ml-kit/terms' is NOT allowed

> Task :app:compileGreenReleaseKotlin
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/ListsActivity.kt:152:102 'static field SOFT_INPUT_ADJUST_RESIZE: Int' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/ViewMediaActivity.kt:153:26 'var systemUiVisibility: Int' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/ViewMediaActivity.kt:153:52 'static field SYSTEM_UI_FLAG_LOW_PROFILE: Int' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/ViewMediaActivity.kt:341:17 'fun setVisibleInDownloadsUi(p0: Boolean): DownloadManager.Request!' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/accountlist/AccountListFragment.kt:196:40 The corresponding parameter in the supertype 'AccountActionListener' is named 'accountId'. This may cause problems when calling this function with named arguments.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/accountlist/AccountListFragment.kt:204:42 The corresponding parameter in the supertype 'AccountActionListener' is named 'accountId'. This may cause problems when calling this function with named arguments.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/compose/dialog/AddPollDialog.kt:136:98 'static field SOFT_INPUT_ADJUST_RESIZE: Int' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/compose/dialog/CaptionDialog.kt:144:65 'static field SOFT_INPUT_ADJUST_RESIZE: Int' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/compose/dialog/FocusDialog.kt:109:36 'static field SOFT_INPUT_ADJUST_RESIZE: Int' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/notifications/NotificationsPagingAdapter.kt:221:33 Unchecked cast of 'RecyclerView.ViewHolder' to 'LoadMoreViewHolder<NotificationViewData.LoadMore>'.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:10:8 'class EncryptedSharedPreferences : Any, SharedPreferences' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:11:8 'class MasterKey : Any' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:32:44 'class EncryptedSharedPreferences : Any, SharedPreferences' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:35:9 'class MasterKey : Any' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:35:19 'constructor(p0: @NonNull() Context): MasterKey.Builder' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:36:27 'class MasterKey : Any' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:36:37 'enum class KeyScheme : Enum<MasterKey.KeyScheme!>' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:38:9 'class EncryptedSharedPreferences : Any, SharedPreferences' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:38:36 'enum class PrefKeyEncryptionScheme : Enum<EncryptedSharedPreferences.PrefKeyEncryptionScheme!>' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:39:9 'class EncryptedSharedPreferences : Any, SharedPreferences' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt:39:36 'enum class PrefValueEncryptionScheme : Enum<EncryptedSharedPreferences.PrefValueEncryptionScheme!>' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/components/viewthread/edits/ViewEditsViewModel.kt:89:27 'static fun setXMLReaderClass(p0: String!): Unit' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/util/LocaleUtils.kt:49:32 'constructor(p0: String!): Locale' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/util/LocaleUtils.kt:86:12 'constructor(p0: String!): Locale' is deprecated. Deprecated in Java.
w: file:///home/runner/work/warpdroid/warpdroid/app/src/main/java/com/keylesspalace/tusky/util/ThemeUtils.kt:44:31 'static field MODE_NIGHT_AUTO_TIME: Int' is deprecated. Deprecated in Java.
gradle/actions: Writing build results to /home/runner/work/_temp/.gradle-actions/build-results/build-1776632450648.json

[Incubating] Problems report is available at: file:///home/runner/work/warpdroid/warpdroid/build/reports/problems/problems-report.html

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:licenseeAndroidBlueDebug'.
> Artifacts failed validation. See output above.

* Try:
> Run with --info or --debug option to get more log output.
> Get more help at https://help.gradle.org.

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:licenseeAndroidBlueDebug'.
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:135)
	at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:288)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:133)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:121)
	at org.gradle.api.internal.tasks.execution.ProblemsTaskPathTrackingTaskExecuter.execute(ProblemsTaskPathTrackingTaskExecuter.java:41)
	at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
	at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51)
	at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
	at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:74)
	at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:209)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:166)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
	at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:45)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:347)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:334)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.lambda$execute$0(DefaultTaskExecutionGraph.java:330)
	at org.gradle.internal.operations.CurrentBuildOperationRef.with(CurrentBuildOperationRef.java:84)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:330)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:319)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:459)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:376)
	at org.gradle.execution.plan.DefaultPlanExecutor.process(DefaultPlanExecutor.java:111)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph.executeWithServices(DefaultTaskExecutionGraph.java:144)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph.execute(DefaultTaskExecutionGraph.java:129)
	at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:35)
	at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:51)
	at org.gradle.execution.BuildOperationFiringBuildWorkerExecutor$ExecuteTasks.call(BuildOperationFiringBuildWorkerExecutor.java:54)
	at org.gradle.execution.BuildOperationFiringBuildWorkerExecutor$ExecuteTasks.call(BuildOperationFiringBuildWorkerExecutor.java:43)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:209)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:166)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
	at org.gradle.execution.BuildOperationFiringBuildWorkerExecutor.execute(BuildOperationFiringBuildWorkerExecutor.java:40)
	at org.gradle.internal.build.DefaultBuildLifecycleController.lambda$executeTasks$10(DefaultBuildLifecycleController.java:313)
	at org.gradle.internal.model.StateTransitionController.doTransition(StateTransitionController.java:266)
	at org.gradle.internal.model.StateTransitionController.lambda$tryTransition$8(StateTransitionController.java:177)
	at org.gradle.internal.work.DefaultSynchronizer.withLock(DefaultSynchronizer.java:45)
	at org.gradle.internal.model.StateTransitionController.tryTransition(StateTransitionController.java:177)
	at org.gradle.internal.build.DefaultBuildLifecycleController.executeTasks(DefaultBuildLifecycleController.java:304)
	at org.gradle.internal.build.DefaultBuildWorkGraphController$DefaultBuildWorkGraph.runWork(DefaultBuildWorkGraphController.java:220)
	at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:263)
	at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:127)
	at org.gradle.composite.internal.DefaultBuildController.doRun(DefaultBuildController.java:181)
	at org.gradle.composite.internal.DefaultBuildController.access$000(DefaultBuildController.java:50)
	at org.gradle.composite.internal.DefaultBuildController$BuildOpRunnable.lambda$run$0(DefaultBuildController.java:198)
	at org.gradle.internal.operations.CurrentBuildOperationRef.with(CurrentBuildOperationRef.java:84)
	at org.gradle.composite.internal.DefaultBuildController$BuildOpRunnable.run(DefaultBuildController.java:198)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
	at org.gradle.internal.concurrent.AbstractManagedExecutor$1.run(AbstractManagedExecutor.java:47)
Caused by: java.lang.RuntimeException: Artifacts failed validation. See output above.
	at app.cash.licensee.LicenseeTask.execute(task.kt:345)
	at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:125)
	at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:58)
	at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:51)
	at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:29)
	at org.gradle.api.internal.tasks.execution.TaskExecution$3.run(TaskExecution.java:252)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:166)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:47)
	at org.gradle.api.internal.tasks.execution.TaskExecution.executeAction(TaskExecution.java:237)
	at org.gradle.api.internal.tasks.execution.TaskExecution.executeActions(TaskExecution.java:220)
	at org.gradle.api.internal.tasks.execution.TaskExecution.executeWithPreviousOutputFiles(TaskExecution.java:203)
	at org.gradle.api.internal.tasks.execution.TaskExecution.execute(TaskExecution.java:170)
	at org.gradle.internal.execution.steps.ExecuteStep.executeInternal(ExecuteStep.java:105)
	at org.gradle.internal.execution.steps.ExecuteStep.access$000(ExecuteStep.java:44)
	at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:59)
	at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:56)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:209)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:166)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
	at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:56)
	at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:44)
	at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:42)
	at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:75)
	at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:55)
	at org.gradle.internal.execution.steps.PreCreateOutputParentsStep.execute(PreCreateOutputParentsStep.java:50)
	at org.gradle.internal.execution.steps.PreCreateOutputParentsStep.execute(PreCreateOutputParentsStep.java:28)
	at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:68)
	at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:38)
	at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:61)
	at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:26)
	at org.gradle.internal.execution.steps.CaptureOutputsAfterExecutionStep.execute(CaptureOutputsAfterExecutionStep.java:69)
	at org.gradle.internal.execution.steps.CaptureOutputsAfterExecutionStep.execute(CaptureOutputsAfterExecutionStep.java:46)
	at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:39)
	at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:28)
	at org.gradle.internal.execution.steps.BuildCacheStep.executeWithoutCache(BuildCacheStep.java:189)
	at org.gradle.internal.execution.steps.BuildCacheStep.executeAndStoreInCache(BuildCacheStep.java:145)
	at org.gradle.internal.execution.steps.BuildCacheStep.lambda$executeWithCache$4(BuildCacheStep.java:101)
	at org.gradle.internal.execution.steps.BuildCacheStep.lambda$executeWithCache$5(BuildCacheStep.java:101)
	at org.gradle.internal.Try$Success.map(Try.java:170)
	at org.gradle.internal.execution.steps.BuildCacheStep.executeWithCache(BuildCacheStep.java:85)
	at org.gradle.internal.execution.steps.BuildCacheStep.lambda$execute$0(BuildCacheStep.java:74)
	at org.gradle.internal.Either$Left.fold(Either.java:116)
	at org.gradle.internal.execution.caching.CachingState.fold(CachingState.java:62)
	at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:73)
	at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:48)
	at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:46)
	at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:35)
	at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:75)
	at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$2(SkipUpToDateStep.java:53)
	at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:53)
	at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:35)
	at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:37)
	at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:27)
	at org.gradle.internal.execution.steps.ResolveIncrementalCachingStateStep.executeDelegate(ResolveIncrementalCachingStateStep.java:49)
	at org.gradle.internal.execution.steps.ResolveIncrementalCachingStateStep.executeDelegate(ResolveIncrementalCachingStateStep.java:27)
	at org.gradle.internal.execution.steps.AbstractResolveCachingStateStep.execute(AbstractResolveCachingStateStep.java:71)
	at org.gradle.internal.execution.steps.AbstractResolveCachingStateStep.execute(AbstractResolveCachingStateStep.java:39)
	at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:64)
	at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:35)
	at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:62)
	at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:40)
	at org.gradle.internal.execution.steps.AbstractCaptureStateBeforeExecutionStep.execute(AbstractCaptureStateBeforeExecutionStep.java:76)
	at org.gradle.internal.execution.steps.AbstractCaptureStateBeforeExecutionStep.execute(AbstractCaptureStateBeforeExecutionStep.java:45)
	at org.gradle.internal.execution.steps.AbstractSkipEmptyWorkStep.executeWithNonEmptySources(AbstractSkipEmptyWorkStep.java:136)
	at org.gradle.internal.execution.steps.AbstractSkipEmptyWorkStep.execute(AbstractSkipEmptyWorkStep.java:61)
	at org.gradle.internal.execution.steps.AbstractSkipEmptyWorkStep.execute(AbstractSkipEmptyWorkStep.java:38)
	at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:38)
	at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:36)
	at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:23)
	at org.gradle.internal.execution.steps.HandleStaleOutputsStep.execute(HandleStaleOutputsStep.java:75)
	at org.gradle.internal.execution.steps.HandleStaleOutputsStep.execute(HandleStaleOutputsStep.java:41)
	at org.gradle.internal.execution.steps.AssignMutableWorkspaceStep.lambda$execute$0(AssignMutableWorkspaceStep.java:35)
	at org.gradle.api.internal.tasks.execution.TaskExecution$4.withWorkspace(TaskExecution.java:297)
	at org.gradle.internal.execution.steps.AssignMutableWorkspaceStep.execute(AssignMutableWorkspaceStep.java:31)
	at org.gradle.internal.execution.steps.AssignMutableWorkspaceStep.execute(AssignMutableWorkspaceStep.java:22)
	at org.gradle.internal.execution.steps.ChoosePipelineStep.execute(ChoosePipelineStep.java:40)
	at org.gradle.internal.execution.steps.ChoosePipelineStep.execute(ChoosePipelineStep.java:23)
	at org.gradle.internal.execution.steps.ExecuteWorkBuildOperationFiringStep.lambda$execute$2(ExecuteWorkBuildOperationFiringStep.java:67)
	at org.gradle.internal.execution.steps.ExecuteWorkBuildOperationFiringStep.execute(ExecuteWorkBuildOperationFiringStep.java:67)
	at org.gradle.internal.execution.steps.ExecuteWorkBuildOperationFiringStep.execute(ExecuteWorkBuildOperationFiringStep.java:39)
	at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:46)
	at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:34)
	at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:47)
	at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:34)
	at org.gradle.internal.execution.impl.DefaultExecutionEngine$1.execute(DefaultExecutionEngine.java:64)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:132)
	... 58 more


Deprecated Gradle features were used in this build, making it incompatible with Gradle 10.

You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.

For more on this, please refer to https://docs.gradle.org/9.0.0/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.

BUILD FAILED in 9m 20s
228 actionable tasks: 194 executed, 34 from cache

Publishing build scan...
gradle/actions: Writing build results to /home/runner/work/_temp/.gradle-actions/build-scans/build-1776632450648.json
https://gradle.com/s/rnvyjlmzuax4c

Configuration cache entry stored.

The tink duplicate-class issue is resolved, but licensee now fails
because the Play Services and ML Kit artifacts pulled in for the QR
scanner publish under Google's Android SDK Terms of Service and ML Kit
Terms of Service rather than an SPDX license. Add the two canonical
URLs to the allowlist so the licenseeAndroidBlueDebug task passes.

https://claude.ai/code/session_01YVkQT5maQWnBN4G59puLBV
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a QR-code pairing flow to connect the Android client to a Warpnet “fat node”, including camera-based QR scanning, validation, pairing handshake, and encrypted persistence of pairing credentials.

Changes:

  • Introduces pairing DTOs + validation, pairing orchestration, and encrypted persistence for paired-node credentials.
  • Adds CameraX + ML Kit QR scanning UI via a new PairingActivity and routes first-run users there from MainActivity.
  • Extends the transport layer with configurable network, multi-address dial attempts (connectAny), and a pairing stream (pair).

Reviewed changes

Copilot reviewed 17 out of 18 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
warpnet-transport/src/main/kotlin/site/warpnet/transport/dto/AuthNodeInfo.kt Adds Moshi wire DTOs for QR pairing payloads.
warpnet-transport/src/main/kotlin/site/warpnet/transport/WarpnetConfig.kt Adds configurable network to transport initialization config.
warpnet-transport/src/main/kotlin/site/warpnet/transport/WarpnetClient.kt Uses configured network; adds connectAny() and pair() APIs.
version Bumps app version.
gradle/libs.versions.toml Adds CameraX, ML Kit barcode scanning, and Security Crypto versions/aliases.
app/src/main/res/values/warpnet_pair.xml Adds pairing-specific UI strings.
app/src/main/res/layout/activity_pairing.xml Adds new pairing screen layout (camera preview + confirmation/progress panel).
app/src/main/java/com/keylesspalace/tusky/di/WarpnetModule.kt Adds DI provider for PairedNodeStore.
app/src/main/java/com/keylesspalace/tusky/components/pairing/QrCodeAnalyzer.kt Implements CameraX analyzer using on-device ML Kit QR decoding.
app/src/main/java/com/keylesspalace/tusky/components/pairing/PairingCoordinator.kt Orchestrates init → dial → pair → persist flow and maps failures to outcomes.
app/src/main/java/com/keylesspalace/tusky/components/pairing/PairingActivity.kt Implements end-to-end pairing UI flow and integrates validator + coordinator.
app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNodeStore.kt Adds keystore-backed encrypted storage for paired node credentials.
app/src/main/java/com/keylesspalace/tusky/components/pairing/PairedNode.kt Defines persisted paired-node model + mapping from QR DTO.
app/src/main/java/com/keylesspalace/tusky/components/pairing/AuthNodeInfoValidator.kt Validates scanned QR JSON and required fields before pairing.
app/src/main/java/com/keylesspalace/tusky/MainActivity.kt Redirects to pairing when no stored pairing exists.
app/src/main/AndroidManifest.xml Declares camera permission/feature and registers PairingActivity.
app/build.gradle Adds dependencies + license allowances; excludes duplicate Tink artifact.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread app/src/main/AndroidManifest.xml Outdated
Comment on lines +12 to +13
required — the scanner activity falls back to a manual JSON paste
when the user denies the permission or no camera is present. -->
Copy link

Copilot AI Apr 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The manifest comment says the pairing scanner “falls back to a manual JSON paste when the user denies the permission or no camera is present”, but PairingActivity currently just shows a fatal message on denial and doesn’t implement any manual-paste fallback (and also doesn’t handle the no-camera case). Please either implement the described fallback, or update/remove this comment so it matches actual behavior.

Suggested change
required the scanner activity falls back to a manual JSON paste
when the user denies the permission or no camera is present. -->
required, so the app remains installable on devices without a
camera. -->

Copilot uses AI. Check for mistakes.
Comment on lines +114 to +120
provider.unbindAll()
provider.bindToLifecycle(
this,
CameraSelector.DEFAULT_BACK_CAMERA,
preview,
imageAnalysis,
)
Copy link

Copilot AI Apr 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

startCamera() assumes a back camera is available and bindToLifecycle() will succeed. Because the manifest declares camera hardware as not required, this can crash on devices without a camera (or without a back camera) / when CameraX can’t bind. Consider checking provider.hasCamera(CameraSelector.DEFAULT_BACK_CAMERA) and wrapping bindToLifecycle() in try/catch to show a user-facing error instead of crashing.

Copilot uses AI. Check for mistakes.
Comment on lines +91 to +95
override fun onDestroy() {
super.onDestroy()
analyzer?.close()
cameraProvider?.unbindAll()
}
Copy link

Copilot AI Apr 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cameraExecutor is created via Executors.newSingleThreadExecutor() but never shut down. This leaves a thread running after the activity is destroyed. Consider using an ExecutorService and calling shutdown()/shutdownNow() in onDestroy (or using a lifecycle-aware executor).

Copilot uses AI. Check for mistakes.
Comment on lines +110 to +123
kotlinx.coroutines.withTimeoutOrNull(DIAL_TIMEOUT_MILLIS) {
mutex.withLock {
if (_state.value == ConnectionState.Uninitialised) {
throw WarpnetException.NotInitialised()
}
_state.value = ConnectionState.Connecting
binding.connect(addr)
}
} ?: "timed out after ${DIAL_TIMEOUT_MILLIS}ms"
}.getOrElse { it.message ?: it.toString() }
if (err.isEmpty()) {
_state.value = ConnectionState.Connected
return@withContext addr
}
Copy link

Copilot AI Apr 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

connectAny()’s per-address timeout is unlikely to work as documented because binding.connect(...) is a blocking (non-suspending) call; coroutine cancellation from withTimeoutOrNull won’t interrupt it, so callers may still wait the full native dial duration. Also, _state is updated to Connected outside the mutex, and failed attempts leave the state at Connecting. Consider moving state transitions inside the mutex, resetting state to Disconnected on per-address failure, and enforcing timeouts by running connect() on an interruptible worker / adding native cancellation support.

Copilot uses AI. Check for mistakes.
Comment on lines +75 to +78
val msg = e.message.orEmpty()
if (msg.contains("peer id mismatch", ignoreCase = true)) {
PairingOutcome.PeerIdMismatch(paired.pinnedPeerId, msg)
} else {
Copy link

Copilot AI Apr 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PairingOutcome.PeerIdMismatch has fields (expected, actual) but the constructor call passes the transport error message as the “actual” value. This is misleading for callers and future UI (it’s not the actual peer ID). Consider either parsing/extracting the actual peer ID (if available) or renaming the field to something like actualOrError/errorMessage.

Copilot uses AI. Check for mistakes.
Comment on lines +197 to +203
// If no fat-node pairing yet, bounce to the QR scanner. The returning
// PairingActivity clears the task, so this branch only fires once per
// cold install (or after "Forget this node").
if (pairedNodeStore.load() == null) {
startActivity(Intent(this, com.keylesspalace.tusky.components.pairing.PairingActivity::class.java))
finish()
return
Copy link

Copilot AI Apr 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pairedNodeStore.load() performs an EncryptedSharedPreferences read plus JSON parsing on the main thread during MainActivity startup. To avoid cold-start jank/StrictMode violations, consider doing this check off the UI thread (e.g., prefetch in a splash/launcher, or load asynchronously and only redirect once the result is known).

Copilot uses AI. Check for mistakes.
claude added 2 commits April 19, 2026 21:37
Three small fixes from the Copilot review on PR #5:

- AndroidManifest: drop the stale comment claiming a manual-JSON-paste
  fallback on camera denial; no such fallback exists, so describe only
  why camera hardware is not required.
- PairingActivity: shut down the single-thread cameraExecutor in
  onDestroy so it doesn't leak a thread past the activity lifecycle.
  Widen its type to ExecutorService to expose shutdown().
- PairingCoordinator: rename PeerIdMismatch.actual to errorMessage.
  The field held the go-libp2p error string, not the observed peer ID,
  which was misleading; the field is not consumed by any caller, so
  the rename is purely cosmetic.

https://claude.ai/code/session_01YVkQT5maQWnBN4G59puLBV
The manifest marks camera hardware as optional, and users may also
deny the permission, so PairingActivity can no longer dead-end on
those paths. Check PackageManager.FEATURE_CAMERA_ANY up front, route
permission denials to the same path, and wrap
ProcessCameraProvider.get() / bindToLifecycle() in try/catch so
bind-time failures (front-only devices, emulators) also recover.

The fallback opens an AlertDialog with a multiline paste field. The
user copies the full pairing JSON (identity, PSK, network, node
addresses) from the desktop app and pastes it there; the existing
AuthNodeInfoValidator then feeds the same data into the pairing
handshake as a QR scan would.

https://claude.ai/code/session_01YVkQT5maQWnBN4G59puLBV
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 17 out of 18 changed files in this pull request and generated 8 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +49 to +53
val input = InputImage.fromMediaImage(media, image.imageInfo.rotationDegrees)
scanner.process(input)
.addOnSuccessListener { barcodes ->
val payload = barcodes.firstNotNullOfOrNull { it.rawValue }
if (!payload.isNullOrBlank() && fired.compareAndSet(false, true)) {
Copy link

Copilot AI Apr 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

analyze() can start multiple concurrent scanner.process() Tasks because it returns immediately and there’s no “in-flight” guard. On a fast camera feed this can queue many ML Kit decodes at once (CPU/memory churn) even though only one result is needed. Consider adding an atomic “processing” flag (drop frames while a Task is running) and clearing it in addOnCompleteListener.

Copilot uses AI. Check for mistakes.
Comment on lines +201 to +217
analyzer = QrCodeAnalyzer { payload -> onQrScanned(payload) }.also { next ->
val provider = cameraProvider ?: return@runOnUiThread
provider.unbindAll()
val preview = Preview.Builder().build().also {
it.surfaceProvider = previewView.surfaceProvider
}
val imageAnalysis = ImageAnalysis.Builder()
.setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST)
.build()
imageAnalysis.setAnalyzer(cameraExecutor, next)
provider.bindToLifecycle(
this,
CameraSelector.DEFAULT_BACK_CAMERA,
preview,
imageAnalysis,
)
}
Copy link

Copilot AI Apr 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The retry path re-binds CameraX without any exception handling. bindToLifecycle() can throw (e.g., no back camera / lifecycle state issues), which would crash on invalid-QR retries even though startCamera() handles these cases. Wrap this rebind in the same try/catch fallback used in startCamera() (or refactor to reuse startCamera()).

Suggested change
analyzer = QrCodeAnalyzer { payload -> onQrScanned(payload) }.also { next ->
val provider = cameraProvider ?: return@runOnUiThread
provider.unbindAll()
val preview = Preview.Builder().build().also {
it.surfaceProvider = previewView.surfaceProvider
}
val imageAnalysis = ImageAnalysis.Builder()
.setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST)
.build()
imageAnalysis.setAnalyzer(cameraExecutor, next)
provider.bindToLifecycle(
this,
CameraSelector.DEFAULT_BACK_CAMERA,
preview,
imageAnalysis,
)
}
analyzer = QrCodeAnalyzer { payload -> onQrScanned(payload) }
startCamera()

Copilot uses AI. Check for mistakes.
Comment on lines +50 to +54
pskHex = paired.identity.psk,
bootstrapAddrs = bootstrap,
desktopPeerAddr = candidates.first(),
network = paired.network,
)
Copy link

Copilot AI Apr 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

desktopPeerAddr = candidates.first() assumes the first address is dialable. Validation only guarantees some address is parseable, so candidates.first() can still be an empty/invalid multiaddr and poison config (and any code paths that rely on desktopPeerAddr). Prefer selecting the first dialable candidate (or setting desktopPeerAddr to the address returned by connectAny()).

Copilot uses AI. Check for mistakes.
Comment on lines +26 to +27
android:background="#99000000"
android:textColor="#FFFFFF"
Copy link

Copilot AI Apr 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

scanPrompt uses hard-coded colors (#99000000 / #FFFFFF), which ignores the Material3 theme and can cause contrast issues in different themes (e.g., black theme / dynamic color). Prefer using theme attributes (e.g., ?attr/colorSurfaceVariant + ?attr/colorOnSurfaceVariant) or a themed style so the overlay adapts correctly.

Suggested change
android:background="#99000000"
android:textColor="#FFFFFF"
android:background="?attr/colorSurfaceVariant"
android:textColor="?attr/colorOnSurfaceVariant"

Copilot uses AI. Check for mistakes.
Comment on lines +50 to +63
<TextView
android:id="@+id/messageTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?attr/textAppearanceHeadline6"
android:paddingBottom="12dp"
tools:text="Connect to my node" />

<TextView
android:id="@+id/messageBody"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?attr/textAppearanceBody2"
android:paddingBottom="24dp"
Copy link

Copilot AI Apr 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tusky uses a Material3 base theme (app/src/main/res/values/styles.xml sets TuskyBaseThemeTheme.Material3.DayNight.NoActionBar), but this layout references Material2 typography attrs (?attr/textAppearanceHeadline6 / ?attr/textAppearanceBody2). These attrs may be unset under Material3, leading to inconsistent text styling. Consider switching to Material3 typography tokens (e.g., ?attr/textAppearanceTitleLarge, ?attr/textAppearanceBodyMedium) or explicit @style/TextAppearance.Material3.*.

Copilot uses AI. Check for mistakes.
Comment on lines +145 to +146
@Inject
lateinit var pairedNodeStore: com.keylesspalace.tusky.components.pairing.PairedNodeStore
Copy link

Copilot AI Apr 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use an import for PairedNodeStore instead of the fully-qualified type in the field declaration to keep the file consistent with the rest of the imports and improve readability.

Copilot uses AI. Check for mistakes.
Comment on lines +110 to +114
kotlinx.coroutines.withTimeoutOrNull(DIAL_TIMEOUT_MILLIS) {
mutex.withLock {
if (_state.value == ConnectionState.Uninitialised) {
throw WarpnetException.NotInitialised()
}
Copy link

Copilot AI Apr 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

connectAny() wraps binding.connect() in withTimeoutOrNull, but binding.connect() is a synchronous gomobile call (see node/mobile.go Connect → host.Connect with a 30s context). Coroutine timeouts won’t interrupt that blocking call, so the per-address 10s cap is ineffective and the UI can still hang ~30s per address. Consider moving the multi-address dial loop into the Go layer (accepting a per-address timeout) or exposing a cancellable/timeout-aware connect API from the binding.

Copilot uses AI. Check for mistakes.
Comment on lines +31 to +40
private val adapter = moshi.adapter<PairedNode>()
private val prefs: SharedPreferences = EncryptedSharedPreferences.create(
context,
PREFS_FILE,
MasterKey.Builder(context)
.setKeyScheme(MasterKey.KeyScheme.AES256_GCM)
.build(),
EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM,
)
Copy link

Copilot AI Apr 19, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

EncryptedSharedPreferences.create() + MasterKey.Builder(...).build() run during DI construction and can do keystore I/O. Because PairedNodeStore is injected into MainActivity, this work is likely happening on the main thread during startup. Consider lazy-initializing the encrypted prefs (or injecting a Lazy<PairedNodeStore>/factory) so keystore setup doesn’t block UI startup.

Suggested change
private val adapter = moshi.adapter<PairedNode>()
private val prefs: SharedPreferences = EncryptedSharedPreferences.create(
context,
PREFS_FILE,
MasterKey.Builder(context)
.setKeyScheme(MasterKey.KeyScheme.AES256_GCM)
.build(),
EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM,
)
private val appContext = context.applicationContext
private val adapter = moshi.adapter<PairedNode>()
private val prefs: SharedPreferences by lazy {
EncryptedSharedPreferences.create(
appContext,
PREFS_FILE,
MasterKey.Builder(appContext)
.setKeyScheme(MasterKey.KeyScheme.AES256_GCM)
.build(),
EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM,
)
}

Copilot uses AI. Check for mistakes.
- PairingActivity invalid-QR retry: replace the inline rebind with a
  second startCamera() call so the retry path inherits the same
  try/catch fallback (prevents a crash on retry for devices that would
  fail bindToLifecycle on first start).
- QrCodeAnalyzer: add an in-flight AtomicBoolean so only one ML Kit
  scanner.process() Task is queued at a time. Stops a fast camera feed
  from piling up parallel decodes before the first success.
- activity_pairing.xml scanPrompt: swap the hardcoded #99000000 / white
  for ?attr/colorSurfaceVariant / colorOnSurfaceVariant so the overlay
  follows the Material3 theme.
- activity_pairing.xml typography: switch textAppearanceHeadline6 /
  Body2 (Material2) to Material3 TitleLarge / BodyMedium to match the
  TuskyBaseTheme parent.
- MainActivity: replace the fully-qualified PairedNodeStore with an
  import so the field matches the style of the surrounding DI fields.
- PairingCoordinator: pick the first syntactically-dialable multiaddr
  for desktopPeerAddr rather than blindly candidates.first(); prevents
  an invalid entry earlier in the list from poisoning the config.

Copilot's timeout and main-thread / lazy-prefs comments are left alone
per the earlier "ignore timeout / ignore main-thread" direction.

https://claude.ai/code/session_01YVkQT5maQWnBN4G59puLBV
@filinvadim filinvadim merged commit a80f03b into main Apr 19, 2026
1 check passed
@filinvadim filinvadim deleted the claude/qr-pairing-android-tRln7 branch April 27, 2026 08:46
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants