Since kotlin 2.4 the kotlin_module generated in th...
# compiler
s
Since kotlin 2.4 the kotlin_module generated in the meta-inf default to "$group:$name" it seem, breaking android building on Windows using one of these aar as ":" can't be extracted and agp extract it ... Is it a wanted behavior to have forbiden character in filename or is it an error ?
โœ… 1
d
Seems to be related to KT-69701 and KT-82216. cc @tapchicoma
๐Ÿ‘ 1
s
We distribute only the .aar to client and QA on a AGP 8.13.2 project got this issue. Before the upgrade no issue on QA, but now there was. Manually renaming the module with just "$name" like before 2.4.0/2.4.10 fix it.
t
breaking android building on Windows using one of these aar as ":" can't be extracted and agp extract it ...
Could you provide more details on the exception itself?
or, ideally, provide a repro
s
I try to make a minimal reproduction project but it's on a complexe internal work project so for now by mimicing the bad module with the same plugins version, it produce it properly sanitized so i'm confused, I continue to try to find the source of the issue
t
at least could you share the exception/error log from AGP?
s
Yeah I need to get on the QA team as it wasn't me the consumer of the AAR
@tapchicoma Here is the minimal "build bad aar" project I got the issue on Windows or MacOS machine
thank you color 1
๐Ÿ‘€ 1
For the exception
Copy code
Caused by: java.nio.file.InvalidPathException: Illegal char <:> at index 23: \META-INF\com.test.lib:some-lib.kotlin_module
	at com.android.build.gradle.internal.packaging.ParsedPackagingOptions.getAction(ParsedPackagingOptions.kt:70)
	at com.android.build.gradle.internal.tasks.MergeJavaResourcesDelegate$run$inputFilter$1.test(MergeJavaResourcesDelegate.kt:122)
	at com.android.build.gradle.internal.tasks.MergeJavaResourcesDelegate$run$inputFilter$1.test(MergeJavaResourcesDelegate.kt:122)
	at com.google.common.collect.CollectSpliterators$1WithCharacteristics.lambda$forEachRemaining$1(CollectSpliterators.java:72)
	at com.google.common.collect.CollectSpliterators$1WithCharacteristics.forEachRemaining(CollectSpliterators.java:72)
	at com.android.builder.merge.FilterIncrementalFileMergerInput.getUpdatedPaths(FilterIncrementalFileMergerInput.java:59)
	at com.android.builder.merge.IncrementalFileMerger.lambda$mergeChangedInputs$4(IncrementalFileMerger.java:187)
	at com.android.builder.merge.IncrementalFileMerger.mergeChangedInputs(IncrementalFileMerger.java:187)
	at com.android.builder.merge.IncrementalFileMerger.merge(IncrementalFileMerger.java:92)
	at com.android.build.gradle.internal.tasks.MergeJavaResourcesDelegate.run(MergeJavaResourcesDelegate.kt:238)
	at com.android.build.gradle.internal.tasks.MergeJavaResWorkAction.run(MergeJavaResWorkAction.kt:115)
	at com.android.build.gradle.internal.tasks.MergeJavaResWorkAction.run(MergeJavaResWorkAction.kt:40)
	at com.android.build.gradle.internal.profile.ProfileAwareWorkAction.execute(ProfileAwareWorkAction.kt:74)
	at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:68)
	at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:64)
	at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:61)
	at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:102)
	at org.gradle.workers.internal.NoIsolationWorkerFactory$1.lambda$execute$0(NoIsolationWorkerFactory.java:61)
	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:210)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:205)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:67)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:60)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:167)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:60)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:54)
	at org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41)
	at org.gradle.workers.internal.NoIsolationWorkerFactory$1.execute(NoIsolationWorkerFactory.java:58)
	at org.gradle.workers.internal.DefaultWorkerExecutor.lambda$submitWork$0(DefaultWorkerExecutor.java:174)
	at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:191)
	at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.access$500(DefaultConditionalExecutionQueue.java:112)
	at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner$1.run(DefaultConditionalExecutionQueue.java:168)
	at org.gradle.internal.Factories$1.create(Factories.java:30)
	at org.gradle.internal.work.DefaultWorkerLeaseService.lambda$withLocksAcquired$0(DefaultWorkerLeaseService.java:280)
	at org.gradle.internal.work.ResourceLockStatistics$1.measure(ResourceLockStatistics.java:43)
	at org.gradle.internal.work.DefaultWorkerLeaseService.withLocksAcquired(DefaultWorkerLeaseService.java:278)
	at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:270)
	at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:129)
	at org.gradle.internal.work.DefaultWorkerLeaseService.runAsWorkerThread(DefaultWorkerLeaseService.java:134)
	at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:163)
	at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:125)
	... 2 more
๐Ÿ‘€ 1
And a consumer project that do the issue when trying to do android compilation
๐Ÿ‘€ 1
a
Looks related to R8. There is a difference between artifacts after minification. R8 rewrites .kotlin_module's filename:
๐Ÿ‘ 1
๐Ÿ‘ 1
thank you color 1
yay 1
โœ… 1