Nasty Dependencies: Surviving and fixing bugs in 3rd-party libra…
summary
Step‑by‑step options for when a dependency breaks: use composite builds with dependency substitution to edit and debug a local library without mixing Gradle plugins, or publish a frozen snapshot via publishToMavenLocal or a private Maven repo to keep POMs and transitive deps; fork and sync upstream (watch for CLAs and company IP), or use git submodules or squash‑copied repos for frequent edits; for closed binaries patch with recaf bytecode edits or reflection (example: change WorkManager default dispatcher), add lightweight in‑library logging, then publish your artifact and monitor crash limits (Crashlytics/Sentry quotas).
AI-written summary · about
chapters (10)
- 0:00Third-party dependency issues
- 1:27Investigating library bugs
- 4:01Debugging with Gradle builds
- 9:18Forking and maintaining fixes
- 14:03Hosting patched libraries
- 21:03Alternatives to forking
- 24:39Contributing fixes upstream
- 27:31Fixing closed-source with reflection
- 30:20Patching bytecode
- 35:27Summary
related talks
39mSurviving and fixing bugs in 3rd-party libraries
43mLibrary Developer Confidential
16mMaven - Taming the Beast
28mTowards Automated Updates of Software Dependencies
39mThe definitive guide to Android library development
27mComposite Builds with Gradle
34mSolving Poly-Repo Dependency Nightmares
41mThe future of dependency management, seen from 2022
