f2prateek/dart

The plugin does not support Configuration Caching

Opened this issue ยท 27 comments

Dart & Henson is not actively maintained anymore. It's Gradle plugin does not support configuration caching.
We encourage users to switch to other solutions such as https://developer.android.com/guide/navigation.

Clarifies: #243

Hi @stephanenicolas, if you don't want switch to Google's navigation library because its too much work do you have any other navigation libraries to recommend? The effort to move to Google's navigation library would probably takes months and we are looking for an option where we only have have spend 1 - 2 weeks to replace the dart henson library and I think Google's navigation component library is overly complex and requires too much configuration.

Its a pity this library isn't maintained now because I did some research and there are few navigation libraries out there but nothing that has anywhere near the star count as this library.

https://github.com/gaelmarhic/Quadrant
https://github.com/isaac-udy/Enro
https://github.com/jeziellago/FlowNav
https://github.com/hakobast/flowzard
https://github.com/aartikov/Alligator

Hopefully someone will fix this PR- #245 so it builds successfully and we get another official release so we can upgrade to higher versions of gradle.

Yeah it would be great if we have last official release that support gradle 6.6 and config cache. So we have more time on finding alternative library. My app not using fragment and single activity architecture so will need extra effort to adjust with google navigation library.
Recently I tried to make this lib supporting gradle configuration cache and upload on my local artifactory. But i am not that familiar with gradle plugin development. So if anyone willing to help or managed to fix the issue please share it here.

I created this PR to support config cache: https://github.com/f2prateek/dart/pull/248/files to solve build error. Please let me know if you have any feedback on it.

I need this too, any updates? Google's nav component sucks, they need to simplify it how they added hilt to dagger.

Any news ?

The PR works fine - https://github.com/f2prateek/dart/pull/248/files any chance we can get an official release version?

I created this PR to support config cache: https://github.com/f2prateek/dart/pull/248/files to solve build error. Please let me know if you have any feedback on it.

I created this PR to support config cache: https://github.com/f2prateek/dart/pull/248/files to solve build error. Please let me know if you have any feedback on it.

Hi @doniwinata0309, the project doesn't build with Gradle 7.1 any chance that you could do a new PR and fix the issue? Would be much appreciated if you have time.

@markchristopherng i'm not sure yet with 7.1. But I able to fix issue on gradle 7:
#248

I added new commit to support config cache: doniwinata0309@1248af9

I will try with gradle 7.1 later, but what kind of error you have with 7.1 ?

I will try your new PR tomorrow with gradle 7.1 and let you know how it goes. Trying to make sure we can run the new version of Android Studio - Artic Fox.

Sadly, we haven't had time to get off this library and still might be on it for a while. Thanks for the new PR

yes we also not able to migrate it yet, do you have in mind which library that perfect to replace DH3 ?

yes we also not able to migrate it yet, do you have in mind which library that perfect to replace DH3 ?

we are thinking about jetpack navigation component, but it could take 1 developer 3 months to do the whole migration and we would need a good business case to convince the product owner to green light it. I think we might be on this library for another 12 months, our options are pretty limited because i don't want to choose another library that stops being supported again like this one.

@markchristopherng i'm not sure yet with 7.1. But I able to fix issue on gradle 7:
#248

I added new commit to support config cache: doniwinata0309@1248af9

I will try with gradle 7.1 later, but what kind of error you have with 7.1 ?

Hi @doniwinata0309, it works with Gradle 7.1 and I was able to run it with the beta version of Artic Fox. Thanks for this PR much appreciated.

yes i just updating my project to 7.2 and seems working fine.
by the way, so you already starting migrating to jetpack navigation component ? does it works for you @markchristopherng ?

Yeah its working for me thanks. There is no time at the moment to migrate to jetpack navigation component. Hopefully this fix can last another 12 months :)

ah i see, same condition here. thanks for your info :D

Hi @doniwinata0309 I am not sure if you are stilling using this library however Gradle 8.0 came out this week and I got the following error when running with the new version of Gradle. The failure is due to the UnionFileCollection now taking a TaskDependencyFactory.
I don't have any experience writing Gradle plugins just wondering if passing either null or this would be okay.

DefaultProject defaultProject = DefaultProject.class.cast(project);
TaskDependencyFactory taskDependencyFactory = defaultProject.getTaskDependencyFactory();

I tried null and its seems to work but not sure if I would run into any issues later on.

Screen Shot 2023-02-15 at 11 09 11 am

hi @markchristopherng
https://github.com/doniwinata0309/dart/blob/gradle-8/henson-plugin/src/main/java/dart/henson/plugin/internal/GenerateHensonNavigatorTask.java#L89

i already try to use gradle 8 on plugin. This seems to be work but got another fail on jar files.
but you can try to fix that error by replace that with plus()

I will let you know if able to solve all error for gradle 8, there still some error during the task execution where jar not properly generated. still not sure which one causing the issue. But we actually in progress removing this library, but still need this to support gradle 8 as migration take times.

Hi @doniwinata0309 thanks for that, we were able to build successfully because we don't use configuration caching but when you do get it all working please share the code. Also are you replacing this library with any particular framework?

@markchristopherng i just push new commit to fix jar, probably now work perfectly. I think i will use this version for now. No i dont replace it, just make sure henson plugin works and just doing minor fix without adding more libs.

you can check that branch for gradle 8
https://github.com/doniwinata0309/dart/tree/gradle-8/henson-plugin

henson-plugin.jar.zip
this is the jar, or if u want to run just run ./gradlew henson-plugin:assemble and copy the jar

For our DH3 replacement, we just use simple kotlin classes to handle intent extras, so no more library in our case to handle extras

we were thinking about doing the same

For our DH3 replacement, we just use simple kotlin classes to handle intent extras, so no more library in our case to handle extras

We were thinking about doing the same.

henson-plugin.jar.zip this is the jar, or if u want to run just run ./gradlew henson-plugin:assemble and copy the jar

Thanks alot saves me from cloning the projects and building it myself.

sure, let me know if you have some issue. actually i dont test that yet on runtime ๐Ÿ˜„

Hi @doniwinata0309, when i turned on configuration caching I got the following issues with the prebuilt jar. The jar works if we don't use configuration caching though

Configuration cache problems found in this build.

66 problems were found storing the configuration cache.

yes I think I messed up with config cache when refactoring some field. will let you know if I find solution for it