Fixed
Status Update
Comments
as...@google.com <as...@google.com>
ap...@google.com <ap...@google.com> #2
A couple of questions:
1. Have you saw crash in real device or only in simulators?
2. Do you use dynamic feature for language ID?
1. Have you saw crash in real device or only in simulators?
2. Do you use dynamic feature for language ID?
am...@gmail.com <am...@gmail.com> #3
Tested on Android 12 Emulator with custom executor, but cannot repro this issue.
as...@google.com <as...@google.com> #4
Comment has been deleted.
as...@google.com <as...@google.com> #5
Hmm, I feel the crash might be something related to separate/secondary process.
I also changed compileSdk and targetSDK to 31 but still cannot repro this issue.
Description
Jetpack Compose compiler version: 1.5.4 Android Studio Build: #AI-223.8836.35.2231.11090377, built on November 13, 2023 Kotlin version: 1.9.20
The change introduced by commit
22421ef1f3aab2bb317e164845bf1630606a099c
usescurrentFile.fileEntry.name
field to generate keys to be passed tostartReplaceableGroup
call. I discovered that this field contains the absolute file path, not just the part relative to the project root.In practice that results in binary different artifacts being produced for binary equivalent sources stored under different paths. E.g. builds under
/tmp/ci-build-42/
will always produce binary equal artifacts for a given source code revision, but these artifacts will be different from the ones produced from the same revision under/tmp/ci-build-43/
.Steps to Reproduce or Code Sample to Reproduce:
./gradlew clean build --no-daemon
, store./app/build/intermediates/compile_app_classes_jar/release/classes.jar
ReproducerComposableKt.class
will be the only file different between the resulting jars. By applyingjavap -c
and comparing the output for these classes, you'll see the only difference there is a value for a constant used instartReplaceableGroup
call.For your convenience I also provide projects for compiler versions 1.5.4 and 1.5.3 I used to verify my findings (see
reproducer.tgz
). Also, thefileName
value I extracted with a debugger from 1.5.4 project looks like this: