Skip to content

abakCroc/croc-app

 
 

Repository files navigation

Croc app icon

croc-app


croc-app is an Android client for croc with a modern, mobile-first UI built in Kotlin and Jetpack Compose.

It is designed to make file and text sharing feel much more natural on Android: quick send, quick receive, QR-assisted flows, saved codes, transfer history, and better handling for the small details that matter on phones.

Download Now

F-Droid GitHub Release
Get it on F-Droid Download from GitHub

Why this project exists

This project was inspired by croc-gui, which showed that a mobile-friendly croc experience could work.

But croc-gui is older, written in Go, and lacks a number of features and UX improvements we wanted in a modern Android app. croc-app is our attempt to build a more polished, more maintainable, and more feature-complete Android experience around croc.


Screenshots

Send screen Quick screen Recieve screen Send Mutliple Files Quick Send - Clipboard Quick Recieve

Features

  • Quick send and quick receive flows
  • Send files or clipboard text
  • QR code generation for fast pairing
  • QR scanning for receive
  • Saved send and receive codes
  • Transfer history and favorites
  • Android share-sheet support
  • Received files published to Downloads/croc-received
  • Material 3 UI designed specifically for Android

Current version

  • Version name: 4.1.0

Project status

croc-app is under active development.

How I use croc-app

My primary use case is simple: quick clipboard transfer between phone and desktop — notes, code snippets, links, anything.

On my desktop, I use a small PowerShell helper (ccs) that:

  • starts croc in sending mode with my saved code
  • automatically sends text from the clipboard

Desktop -> Phone workflow

  1. Run ccs in the desktop terminal
  2. Open croc-app and tap Receive
  3. The text appears on the phone, ready to copy or open

A similar flow works in reverse for sending text from my phone to my desktop.

Project structure

  • app/ - main Android application module
  • gradle/ - Gradle configuration used by the Android project

Building

Standard build (quick)

If you just want to build and run the app locally:

./gradlew assembleRelease

Or open the project in Android Studio and run the app configuration.

This produces a working APK, but it may not be reproducible.


Reproducible build

For deterministic builds (matching CI / F-Droid), use the scripts in:

reproducible-build/

This setup uses Docker to ensure:

  • consistent environment
  • reproducible dependency resolution
  • deterministic signing

Steps (Linux/macOS)

cd reproducible-build

docker build -t croc-app-build .
docker run --rm \
  -e REPO_BRANCH=main \
  -e KEYSTORE_PASS=your_keystore_password \
  -e KEY_ALIAS=your_key_alias \
  -e KEY_PASS=your_key_password \
  -v $(pwd)/key.jks:/secrets/release.jks:ro \
  -v $(pwd)/output:/output \
  croc-app-builder \
  bash /build/build.sh

Output:

output/croc-app-release.apk

Reproducible build (Windows)

You can use the provided batch script:

reproducible-build/run-build.bat

Before running, edit the script and configure:

set "KEYSTORE_FILE=%~dp0key.jks"
set "KEY_ALIAS=ALIAS"
set /p KEYSTORE_PASS=<kspass.txt
set /p KEY_PASS=<kpass.txt

Then:

  1. Place your keystore:
reproducible-build/key.jks
  1. Add passwords in:
reproducible-build/kspass.txt
reproducible-build/kpass.txt
  1. Run:
run-build.bat

The signed APK will be generated in the output/ directory.


Contributing

Contributions are welcome, checkout CONTRIBUTING.md.

Design goals

The app tries to stay true to croc while feeling native on Android:

  • fast to use
  • easy to understand
  • polished enough for daily use

Related project

  • croc-gui - earlier mobile-oriented GUI work around croc
  • croc - croc

About

croc-app is an Android client for croc with a modern, mobile-first UI built in Kotlin and Jetpack Compose.

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • Kotlin 94.9%
  • Shell 2.7%
  • Dockerfile 1.2%
  • Other 1.2%