Turning on R8 immediately surfaced a latent runtime bug: the ffmpeg-kit-next wrapper references com.arthenica.smartexception.java.Exceptions from AbstractSession.fail() in eighteen places, but a local .aar carries no transitive dependencies, so nothing was pulling it in. Debug builds tolerate this through lazy class loading -- the class is only touched on an error path -- so it would have shipped as a crash the first time an FFmpeg conversion failed. Declared explicitly now. Keep rules cover the JNI boundary. The native library resolves classes and methods by name, which R8 cannot see, so without them the FFmpeg calls fail with NoSuchMethodError in release builds only. Workers are kept too, since WorkManager reconstructs them reflectively from a class name persisted in its database, and a rename breaks jobs enqueued before the update. Verified on the produced artifacts rather than assumed: all 22 native libraries survive minification and every one is still 16 KB aligned inside the APK. Release is 82 MB against 115 MB for debug; the AAB is 40 MB and Play splits it per ABI. The privacy policy lists every permission, including the three WorkManager adds automatically (WAKE_LOCK, RECEIVE_BOOT_COMPLETED, ACCESS_NETWORK_STATE). Checking the merged manifest showed those, and a policy that omitted them would look dishonest to anyone who inspected the app. INTERNET is genuinely absent, so "files stay on the device" is enforced by the OS rather than a promise. CI runs unit tests on every push and builds the FFmpeg AAR only for release tags, since that is a full cross-compile. Releases attach the FFmpeg corresponding source next to the APK: GPL-3.0 requires it, and FFmpeg's instruction to host it "on the same webserver" cannot be satisfied by a Play listing. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
19 lines
905 B
Plaintext
19 lines
905 B
Plaintext
A media converter that runs entirely on your device. Nothing is uploaded anywhere.
|
|
|
|
Convert video between MP4, MKV and WebM. Extract and convert audio to MP3, AAC,
|
|
FLAC, Opus or WAV. Export GIFs and PNG frame sequences. Join several clips into one
|
|
file.
|
|
|
|
Two conversion engines work together. Common video jobs run on your device's video
|
|
hardware, which is several times faster than software encoding and much easier on the
|
|
battery. Everything the hardware cannot do — Matroska, MP3, GIF, frame export, and the
|
|
highest quality settings — runs through a bundled FFmpeg build. The app tells you which
|
|
one it used and why, and lets you force software encoding if you prefer.
|
|
|
|
Quality settings:
|
|
|
|
* Fast — hardware accelerated, ideal for sharing and batches
|
|
* Best quality — software encoding with CRF rate control, for archiving
|
|
|
|
Free and open source. No advertising, no analytics, no network access.
|