Status Update
Comments
pa...@google.com <pa...@google.com> #3
lblb636@ Thanks for reporting this bug. I just want to confirm that the issue is the call device
button being not responsive according to the uploaded video. It seems like this issue only happened on Windows.
hu...@google.com <hu...@google.com> #4
And why only from specific API of Android?
On API 28 for example, it doesn't occur...
Please fix this issue for all API versions of the emulator.
hu...@google.com <hu...@google.com> #5
Another similar issue that's related
[Deleted User] <[Deleted User]> #6
RE#4 I need to try this on Windows laptop first and I couldn't repro on MacOS or Linux. But I think this is most likely related to the modem simulator we introduced for API 31. Will need to further investigate.
hu...@google.com <hu...@google.com> #7
Why isn't the emulator tested more on Windows OS?
Windows OS is more popular than Linux and MacOS combined (on desktop) ...
jt...@temp.thunderhead.com <jt...@temp.thunderhead.com> #8
ms...@gmail.com <ms...@gmail.com> #9
I reproduced this bug on Windows with emulator version 31.2.10-8420304
pa...@google.com <pa...@google.com> #10
hu...@google.com <hu...@google.com> #11
Found the root cause when the "call device" button was unresponsive. It became unresponsive because the inbound call failed to initialize. Basically, the modem simulator's shared FD failed. When receive_inbound_call is invoked, it is supposed to make connection to the "host server" via a shared fd but it is flaky on Windows unfortunately.
modem-simulator: receive_inbound_call:101 inbound call from 6505551212
modem-simulator: process_msgs:296 waiting for new messages ...
modem-simulator: main_host_thread:501 got connection at host server at 65094
modem-simulator: start_calling_thread:254 making a connection to main host server 65094
modem-simulator: main_host_thread:507 Detected close from the other side
modem-simulator: start_calling_thread:262 nothing read quit
modem-simulator: main_host_thread:494 looping at main host server at 65094
modem-simulator: start_calling_thread:284 done with this thread
st...@gmail.com <st...@gmail.com> #12
@11 So it could be the same reason that this bug occurs:
?
im...@google.com <im...@google.com> #13
RE#12 I have uploaded a
st...@gmail.com <st...@gmail.com> #14
Have you tested it on all API versions, to make sure that it doesn't cause new issues, and also fixes the issue on other places in case it's there too?
jt...@temp.thunderhead.com <jt...@temp.thunderhead.com> #15
RE#14 This issue is for API 31+, I will check for API 32 and API 33. Thanks for reminding me.
hu...@google.com <hu...@google.com> #16
ne...@gmail.com <ne...@gmail.com> #17
When will the fix be available?
hu...@google.com <hu...@google.com> #18
The fix has been merged in both 31 release and 32 release for since 05/2022.
ne...@gmail.com <ne...@gmail.com> #19
On which version ?
hu...@google.com <hu...@google.com> #20
ri...@gmail.com <ri...@gmail.com> #21
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:kaptGenerateStubsDebugKotlin'
...
Caused by: java.lang.RuntimeException: Failed to transform '/Users/user/.gradle/caches/modules-2/files-2.1/org.xerial/sqlite-jdbc/3.20.1/df3068e837e9490a9554212fcab40a2c55faf0a3/sqlite-jdbc-3.20.1.jar' using Jetifier. Reason: invalid entry size (expected 618164 but got 636977 bytes). (Run with --stacktrace for more details.) To disable Jetifier, set android.enableJetifier=false in your gradle.properties file.
at com.android.build.gradle.internal.dependency.JetifyTransform.transform(JetifyTransform.kt:204)
hu...@google.com <hu...@google.com> #22
ri...@gmail.com <ri...@gmail.com> #23
ri...@gmail.com <ri...@gmail.com> #24
hu...@google.com <hu...@google.com> #25
em...@gmail.com <em...@gmail.com> #26
I have this error but I cannot fix if with blacklist, is it the same issue ? Could `android.jetifier.blacklist` property fix it ?
09:08:56 > Could not resolve all files for configuration ':app:releaseUnitTestCompileClasspath'.
09:08:56 > Failed to transform artifact 'full.jar (project :api)' to match attributes {artifactType=processed-jar, com.android.build.api.attributes.BuildTypeAttr=release, com.android.build.api.attributes.VariantAttr=release, com.android.build.gradle.internal.dependency.AndroidTypeAttr=Aar, org.gradle.usage=java-api, org.jetbrains.kotlin.platform.type=androidJvm}
Thanks
hu...@google.com <hu...@google.com> #27
me...@thomaskeller.biz <me...@thomaskeller.biz> #29
cucumber.runtime.CucumberException: No backends were found. Please make sure you have a backend module on your CLASSPATH.
Cucumber reports that when an artifact like `cucumber-java` (or any other language backend) is not present. Cucumber tries to service-load this automatically when present in the classpath (see
Interestingly, the tests continued to run without issues in Android Studio, they were just failing when executed from command line. A test run with --debug showed me that the Gradle run however used jetified versions of the cucumber libraries in the application classpath. Adding `.*cucumber.*` to the jetifier blacklist solved the issue.
I'm completely unaware of the black magic that Jetifier involves, but I see that it has some very serious consequences when applied broadly on a project, things that are rather hard to track down because subtle things like service locators suddenly stop working.
hu...@google.com <hu...@google.com> #30
If possible, could you attach the original version of the cucumber library and the jetified version, so that we can investigate what was actually modified by Jetifier?
hu...@google.com <hu...@google.com> #31
After updating to AGP 4.0.0-alpha07+, please remove the android.jetifier.blacklist property if you have been using it. And if you still run into issues after doing that, please file a bug with us at
To close the loop on the 3 different approaches outlined at
> We need a way to determine whether a third-party library should be jetified or not. There are a couple of approaches:
> 1. The library adds some metadata stating that it is AndroidX-ready and therefore should not be jetified.
=> Infeasible
> 2. Jetifier automatically detects the presence of AndroidX (e.g., import statements and strings containing references to AndroidX), and if AndroidX is present, assumes that the library is AndroidX-ready and skips converting it.
=> Implemented
> 3. The users need to specify a blacklist of libraries that should not be jetified.
=> Used previously as a workaround (see
Description
Example failures:
(1)
Execution failed for task ':app:kaptGenerateStubsDebugKotlin'.
> Could not resolve all files for configuration ':app:kapt'.
> Failed to transform file 'butterknife-compiler-9.0.0-SNAPSHOT.jar' to match attributes {artifactType=processed-jar} using transform JetifyTransform
> Failed to transform '...\.gradle\caches\modules-2\files-2.1\com.jakewharton\butterknife-compiler\9.0.0-SNAPSHOT\d5efd0795737d4523044335a7faa82b0e3d984c9\butterknife-compiler-9.0.0-SNAPSHOT.jar' using Jetifier.
Reason: The given artifact contains a string literal with a package reference 'android.support.v4.content' that cannot be safely rewritten. Libraries using reflection such as annotation processors need to be updated manually to add support for androidx.
(2)
Execution failed for task ':app:kaptGenerateStubsDebugKotlin'.
> Could not resolve all files for configuration ':app:kapt'.
> Failed to transform file 'jetifier-core-1.0.0-alpha10.jar' to match attributes {artifactType=processed-jar} using transform JetifyTransform
> Failed to transform '/Users/nkotula/.gradle/caches/modules-2/files-2.1/com.android.tools.build.jetifier/jetifier-core/1.0.0-alpha10/9eb7027c383061de12f93aae7a22cbeb97832d2a/jetifier-core-1.0.0-alpha10.jar' using Jetifier. Reason: The given artifact contains a string literal with a package reference 'android/support/v4' that cannot be safely rewritten. Libraries using reflection such as annotation processors need to be updated manually to add support for androidx.
(In this example, Jetifier even tries to jetify itself!)
(3)
Execution failed for task ':app:kaptGenerateStubsDebugKotlin'.
> Could not resolve all files for configuration ':app:kapt'.
> Failed to transform file 'kotlin-compiler-embeddable-1.2.21.jar' to match attributes {artifactType=processed-jar} using transform JetifyTransform
> Failed to transform '/root/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-compiler-embeddable/1.2.21/39456b64a42dc359e385697e2e93b5cba52e197f/kotlin-compiler-embeddable-1.2.21.jar' using Jetifier.
Reason: Malformed input or input contains unmappable characters: javaslang/?.class.
(In this example, kotlin-compiler-embeddable-1.2.21.jar does not need to be jetified but was jetified and then failed.)
We need a way to determine whether a third-party library should be jetified or not. There are a couple of approaches:
1. The library adds some metadata stating that it is AndroidX-ready and therefore should not be jetified. (The Android Gradle plugin can also help to add this information automatically for libraries that are built using the AGP.)
2. Jetifier automatically detects the presence of AndroidX (e.g., import statements and strings containing references to AndroidX), and if AndroidX is present, assumes that the library is AndroidX-ready and skips converting it.
3. The users need to specify a blacklist of libraries that should not be jetified.
We'll need to weigh the pros and cons of these approaches and select the best one (or a combination of them).