Apktool vs Refinery
Apktool
apktool.orgRefinery
github.comSide by side
| Figure | Apktool | Refinery |
|---|---|---|
| Price from | Free | Free |
| Free plan | Yes | Yes |
| Free trial | — | — |
| Open source | — | — |
| Windows | Yes | Yes |
| macOS | Yes | Yes |
| Linux | Yes | Yes |
| Self-hosted | — | Yes |
| Plans published | 1 | 1 |
| Spec score · Reverse Engineering Tools | 8.1 (#12) | 7.6 (#32) |
| Purpose | Apktool is a tool for reverse engineering Android APK files. | Refinery is a SQL migration toolkit for Rust that runs migrations on a provided database connection. |
Plans
In their own words
Apktool
Apktool is a command-line tool for reverse engineering Android APK files. It can disassemble an app’s resources into a form close to their original structure, then rebuild an app after changes such as translation or permission edits. Its analysis mode attempts to extract resources and the manifest for inspection without rebuilding. Apktool runs on Windows, Linux, and macOS; its official installation guide describes wrapper-script steps for those systems and requires Java 8 or later. Decode options include choosing resource-resolution behavior, skipping resources or source disassembly, and setting a framework directory. Build options include selecting an aapt2 binary, adding a generic Network Security Configuration file, and disabling APK repacking. The Apache license permits redistribution, modification, and integration into another project. Apktool is free, with no pricing tiers stated. Its FAQ says Android devices are not officially supported, and some OEM-modified “Magic APKs” may not decode or build. Builds are unsigned; copying a signature retains only the original APK signature v1 scheme.
Refinery
Refinery is a free, MIT-licensed SQL migration toolkit for Rust applications. It runs migrations against a database connection supplied by the application, either from embedded Rust code or through the refinery_cli command-line tool. Migrations can be SQL files or Rust modules whose migration function returns a String. Refinery records applied versions and metadata, then checks for missing or divergent migrations before running unapplied work. By default, each migration runs in its own transaction; grouped mode can place all migrations in one transaction. Migrations can also be built into a binary, so separate files are not needed at deployment. Listed drivers include postgres, tokio-postgres, mysql, mysql_async, rusqlite, and tiberius; SQLx can be used with a Config implementing Migrate. Driver selection is handled through features. Maintainers describe limited capacity to maintain additional drivers and point to external repositories, naming Klickhouse as an example. Refinery aims to support stable Rust, the previous Rust version, and nightly. To reverse a migration, users must create another migration with the reversing changes.