-
Notifications
You must be signed in to change notification settings - Fork 21
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Introduce new Android artifact distribution strategy #32
Conversation
5951cef
to
e07fc77
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, nice work!
a2a2ce3
to
71a58d0
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
very nice work! Thank you for the detailed descriptions of why this option makes the most sense. Especially the parts about the discarded alternatives. It's very helpful background.
I flagged a handful of typos and some minor scripting things but none feel blocking.
24148c3
to
812dc7e
Compare
@complexspaces WDYT about rebasing this and merging it as-is (maybe modulo the small fixes called out by tshepang)? I think my feedback about more documentation for the release process doesn't need to be blocking. We could iterate on those parts based on experience. |
@complexspaces small bump. Would it be helpful if I rebased this branch and addressed tshepang's comments? |
Hi, sorry for the delay @cpu. I've once again gotten behind on things. I will address tshepang's comments this week and try to clean up some of the other smaller comments as well before Monday next week. At that point, we can evaluate if this looks good enough for an initial publishing attempt? |
Great, thank you! I know it's a busy time of year :-)
Sounds good to me. I'm eager to get something out into the world before the new year if we can convince ourselves that all of our ducks are in a row. It might be nice to land #42 but it seems unlikely that Reqwest and the other blocking dependencies will be ready on a short timescale. The very recent Hyper 1.0 update layers a bit more complication into the mix. |
Checking in again: anything I can do to help move closer to publishing a release? |
Here's an updated branch that's been rebased on |
29d6cda
to
b6fe594
Compare
I believe that I've finished this branch and it's ready for another review. It took a bit longer then expected (1-2 days last week), and I apologize for the inconsistency. I ended up needing to port the In the extra time I also discovered some Gradle performance/correctness improvements as well so IMO the initial release will be more polished as a result. New changes include:
Using all of the now-documented steps, I tested a few things to build confidence in the first release we make:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you! The latest revisions look good to me 🚀
b6fe594
to
ca372c9
Compare
The goal of this pull request is to resolve the outstanding issues with the current Android component distribution system and provide a new one that checks as many boxes as possible without causing issues elsewhere.
To accomplish this, a new method has been built to completely replace the old way. For the exact details, see the documentation included in the changes. At a high level, we've switched to distributing pre-compiled versions of the Android component via a Maven local repository. A new crate,
rustls-platform-verifier-android
, is responsible for containing these artifacts. Upon downloading this new crate viacargo
, Gradle is able to seamlessly locate the files inside Cargo's dependency cache and compile the packaged AAR into the main application's build.This approach eliminates the toolchain synchronization problems and poor Gradle workarounds that affected the last approach. Additionally, it has minimal-to-no affect on Gradle build or configuration performance and fits in much better with its compilation model.
Further Improvements
See #33, which builds upon this packaging logic to provide always-available Android artifacts based off the current
main
. The idea behind this is to attempt to preserve the convenience of the Git dependencies thatcargo
supports. Depending on the release cadence here in the future, people may need to depend on hot-fixes for short periods. By hosting these pre-compiled artifacts in a dedicated, opt-in branch, those with Android apps can add a Git dependency onmain-with-maven
instead to avoid the need to temporarily vendor AAR artifacts.