I've spent some time building a navigation library for Android. It's similar to Square/Flow and Zhuinden/simple-stack in the way that you interact with navigation - defining parcelable keys for screens, and then navigating between these. It's different in that it supports both Activities and Fragments as navigation destinations, and provides a "NavigationHandle" that works in much the same way as the SavedStateHandle for ViewModels - to allow your ViewModels to perform navigation actions (such as opening a key, or closing the current key).
It's still a work in progress, and there a few missing features, but I would really love some feedback!
https://github.com/isaac-udy/Enro