JakeWharton

JakeWharton/diffuse

Kotlin Apache-2.0 Mobile

Diffuse is a tool for diffing APKs, AABs, AARs, and JARs

2.2k stars
119 forks
recent
GitHub +2 / week

2.2k

Stars

119

Forks

22

Open issues

18

Contributors

0.3.0 21 Feb 2024

AI Analysis

Diffuse is a specialized tool for analyzing and comparing binary artifacts (APKs, AABs, AARs, JARs) in Android development, showing detailed breakdowns of size changes, DEX bytecode modifications, and resource differences. It serves best for code reviewers and developers tracking the impact of dependency updates or feature changes on app binaries. This tool is primarily for Android/JVM developers who need to understand what changed in compiled artifacts, not a general-purpose utility.

Mobile Developer Tool Discovery value: 6/10
Documentation 8/10
Activity 9/10
Community 8/10
Code quality 5/10

Inferred from signals mentioned in the README (tests, CI, type safety) — not a review of the actual code.

Overall score 8/10

AI's overall editorial judgment — not an average of the bars above, can weigh other factors too.

android binary-analysis apk-comparison developer-tool bytecode-inspection
Actively maintained Well documented Niche/specialized use case Apache-2.0 licensed Popular Production ready
Deep Analysis · Based on README and public signals
1w ago

Specialized APK/JAR diff tool built for Android developers to analyze binary changes at fine granularity

Diffuse is a command-line tool for comparing Android binaries (APKs, AABs, AARs, JARs) with formatted output showing high-level and detailed changes. Built by Jake Wharton in 2015, it serves Android developers and CI/CD pipelines that need to understand binary size and method-level deltas. Adoption appears concentrated among Android teams that track build artifacts, particularly those using tools by Wharton's ecosystem (Square, Google, etc.). Not a replacement for general diff tools — fills a specific niche in the Android build workflow.

Origin

Created December 2015 by Jake Wharton, originally derived from the `dex-member-list` tool. Evolved as Android's packaging formats (APK, AAB, AAR) matured, addressing a gap in tooling for understanding what actually changed in compiled binaries versus source code.

Growth

Modest, stable growth over 10+ years with 2,182 stars and 118 forks. No significant spike detected in recent 7 days (0 stars gained). Growth likely driven by word-of-mouth within Android dev community and Wharton's speaking engagements (Droidcon Toronto talk documented in README). Slow adoption curve consistent with a specialized, developer-tools category that doesn't benefit from broad marketing.

In production

Adoption not verified beyond inference. README references only one case study (SDK Search app). No public testimonials, published case studies, or documented corporate usage listed. Tool is cited by Wharton's talks and blog, suggesting internal use at organizations where he was influential (likely Square/Kotlin ecosystem), but production adoption at scale is not documented.

Code analysis
Architecture

Likely a CLI tool written in Kotlin with subcommands for `diff`, `info`, and `members`. Appears to parse multiple binary formats (DEX, ARSC, ZIP metadata, manifest) and emit formatted tables and summaries. README shows sophisticated output handling (side-by-side diffs, method/string deltas) but actual parser and diffing implementation not inspectable from README alone.

Tests

Not documented in README. No mention of test suites, CI, or coverage metrics.

Maintenance

Last commit 2026-07-01 (within last 24 hours as of analysis date 2026-07-02), indicating active maintenance. Repository shows consistent, low-frequency updates over its 10-year lifespan rather than abandonment. Single maintainer (Jake Wharton) model suggests continuity risk if maintainer loses interest, but current push activity shows no signs of that.

Honest verdict

ADOPT IF: You maintain an Android app or library with frequent releases and need CI-integrated visibility into binary changes (size, method count, string changes) across builds. AVOID IF: You lack a CLI-heavy workflow, need visual/interactive diff exploration, or are not releasing Android binaries regularly. MONITOR IF: You are building internal binary analysis tooling and considering open-source alternatives; Diffuse's maturity and low maintenance overhead make it worth evaluating, but adoption risk remains tied to single maintainer.

Independent dimensions

Mainstream potential

3/10

Technical importance

6/10

Adoption evidence

3/10

Risks
  • Single maintainer (Jake Wharton) with no documented succession plan; loss of interest or availability could leave the tool unmaintained.
  • Adoption not verified at scale — unclear how many teams actually use this in production; network effects and community momentum appear limited.
  • No test coverage documented, making code quality and regression detection uncertain.
  • Limited extensibility apparent (CLI-only interface) — difficult for teams to integrate into custom workflows beyond shell scripting.
  • Android binary format evolution (AAB maturity, new DEX extensions, etc.) requires ongoing maintenance; Diffuse may lag behind Android tooling releases.
Prediction

Diffuse will likely remain a stable, low-growth specialist tool used by a small fraction of Android teams that prioritize CLI-driven workflows and binary visibility. Unlikely to expand into adjacent ecosystems (Java GraalVM native images, iOS, etc.) based on historical scope. Continued maintenance probable but passive; no indicators of planned feature expansion.

0 found this helpful

Newsletter

Get analyses like this every Monday

Free weekly digest of the most interesting open-source discoveries.

Languages

Kotlin
100%

Information

Language
Kotlin
License
Apache-2.0
Last updated
1w ago
Created
128mo ago
Analyzed with
anthropic/claude-haiku-4-5

Stars over time

Loading…

Contributors over time

Top 100 contributors only — repos with more will plateau at 100.

Loading…

Similar repos

google

google/bindiff

BinDiff is an open-source binary comparison tool that identifies differences...

3.1k Java Security
joxeankoret

joxeankoret/diaphora

Diaphora is a specialized binary diffing (bindiff) tool designed as an IDA Pro...

4.3k Python Security
java-diff-utils

java-diff-utils/java-diff-utils

Java Diff Utils is a mature, open-source library for computing diffs, applying...

1.5k Java Dev Tools
apk-editor

apk-editor/APK-Explorer-Editor

APK Explorer & Editor (AEE) is a specialized Android tool for inspecting,...

1.3k Java Mobile
skylot

skylot/jadx

JADX is a specialized decompiler that converts Android DEX bytecode and APK...

49.6k Java Security
vs. alternatives
Bundletool (Google)

Google's official tool for analyzing AABs; broader feature set for Play Store integration. Diffuse is more specialized for source-level diffing and historical comparison.

google/bindiff

Binary diffing for reverse engineering; targets security/malware analysis. Diffuse targets developer workflow, not security analysis.

APKAnalyzer (Android Studio)

Built into IDE; visual, interactive. Diffuse is CLI-based, scriptable, suited for CI/CD and batch processing.

java-diff-utils

Generic Java object diffing library. Diffuse is a curated, domain-specific tool for Android artifacts.

Custom in-house scripts

Many large Android teams build proprietary binary diff tools. Diffuse reduces duplication but hasn't achieved market dominance for that use case.