Status Update
Comments
su...@twofortyfouram.com <su...@twofortyfouram.com> #2
this would be nice but given Compose and all other priorities, we are not planning to make any big investments in data binding (support KSP is a very big task).
pa...@google.com <pa...@google.com> #3
Makes sense. And is there any way to trigger data binding without kapt plugin, assuming there are no custom binding adapters in given module?
su...@twofortyfouram.com <su...@twofortyfouram.com> #4
unfortunately no. data binding still needs to be able to read your code and annotation processing is the only API that allows us to do it :(
pa...@google.com <pa...@google.com> #5
It's a very disappointing decision for many projects who heavily depend on data binding, which will never be able to get rid of all bindings code and especially rewrite all UI to Compose.
It means that bindings are essentially deprecated
ar...@gmail.com <ar...@gmail.com> #6
It does not mean data binding is deprecated unless KAPT is deprecated (if that happens, we would need to support KSP).Unfortunately, moving data binding to KSP is a large order so it makes more sense to keep focusing on KAPT than rewrite data binding.
We might re-consider this in the future based on KSP becoming stable, Compose adoption and KAPT stability but it is very unlikely to happen.
su...@twofortyfouram.com <su...@twofortyfouram.com>
nk...@google.com <nk...@google.com>
nk...@google.com <nk...@google.com> #8
Unfortunately this is still a NO for 2022 planning due to reasons mentioned in #2.
nk...@google.com <nk...@google.com> #9
kapt seems no longer adding new feature
kapt is in maintenance mode. We are keeping it up-to-date with recent Kotlin and Java releases but have no plans to implement new features. Please use the Kotlin Symbol Processing API (KSP) for annotation processing. See the list of libraries supported by KSP.
So this mean databinding will also deprecated or will be support KSP?
su...@twofortyfouram.com <su...@twofortyfouram.com> #10
We don't plan to support KSP nor recommend data binding usage at this stage since compose is our recommended UI solution.
az...@lyft.com <az...@lyft.com> #11
We don't plan to support KSP nor recommend data binding usage at this stage since compose is our recommended UI solution.
I have been waited this answer in several years.
Because it is an important basis to convince co-workers and for determining the technology stack of an app.
Description
Version used: Espresso 3.0.0
What steps will reproduce the problem?
1. Create a class that subclasses something from a newer API level, e.g. MyTileService extends android.service.quicksettings.TileService
2. Create a test case that exercises something different (not the code from step 1).
3. Run the tests on a device running an older version of Android, for example API 19
How are you running your tests (via Android Studio, Gradle, adb, etc.)?
adb
What is the expected output? What do you see instead?
Expected the test from step 2 to run.
Actually the tests fail with this exception
java.lang.ClassNotFoundException: com.twofortyfouram.ui.service.RuleEngineToggleTileService
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:251)
at android.support.test.internal.runner.TestLoader.doCreateRunner(TestLoader.java:76)
at android.support.test.internal.runner.TestLoader.getRunnersFor(TestLoader.java:104)
at android.support.test.internal.runner.TestRequestBuilder.build(TestRequestBuilder.java:808)
at android.support.test.runner.AndroidJUnitRunner.buildRequest(AndroidJUnitRunner.java:481)
at android.support.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:367)
I see the same problem with pulling in Google Play Services, which implements a JobService.
java.lang.ClassNotFoundException: com.google.android.gms.measurement.AppMeasurementJobService
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:251)
at android.support.test.internal.runner.TestLoader.doCreateRunner(TestLoader.java:76)
at android.support.test.internal.runner.TestLoader.getRunnersFor(TestLoader.java:104)
at android.support.test.internal.runner.TestRequestBuilder.build(TestRequestBuilder.java:808)
at android.support.test.runner.AndroidJUnitRunner.buildRequest(AndroidJUnitRunner.java:481)
at android.support.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:367)
at com.twofortyfouram.test.runner.ImprovedRunner.onStart(ImprovedRunner.java:45)