Skip to content

kamaravichow/Prodroid

Repository files navigation

Prodroid

macOS app for talking to Android phones over USB: MTP for storage and the usual ADB workflow when you need it. The UI is Swift; the heavy lifting on the MTP side is a small Go/C layer (kalam-bridge) exported as libkalam.dylib and linked from the app bundle.

Requirements

  • Mac with Apple Silicon (the Xcode project targets arm64 only).
  • Xcode recent enough to open this project (it was last touched with the Xcode 26.x series).
  • macOS 14.6+ as the app deployment target (your machine can be newer).

Build in Xcode

  1. Clone the repo and open Prodroid.xcodeproj.
  2. Pick the Prodroid scheme, choose My Mac, then Product → Build (⌘B) or Run (⌘R).

The app expects libkalam.dylib, libusb-1.0.dylib, and the libkalam.h header under Prodroid/Resources/. Those are in the tree so a normal clone should build without extra steps.

Configurations (short version)

  • Debug — Bundled adb in the app is kept and gets code-signed during the build (when a signing identity is available).
  • Release — Defines APPSTORE; the post-build script strips adb from the bundle (store-friendly). Use Debug or adjust flags if you still want adb in a release-style build.

Command-line build

From the repo root, same idea as the included helper:

xcodebuild -project Prodroid.xcodeproj -scheme Prodroid -configuration Debug -arch arm64 clean build

There is also build_dmg.sh, which does a Debug build and packages a test DMG.

Rebuilding libkalam.dylib (optional)

If you change code under Native/, you need Go with CGO and libusb available to the linker. From Native/:

go build -buildmode=c-shared -o ../Prodroid/Resources/libkalam.dylib .

Shippable binaries should not bake in Homebrew paths for libusb. The Xcode target runs “Sanitize libkalam dylib paths” before linking: it rewrites obvious /opt/homebrew/.../libusb references to @rpath/libusb-1.0.dylib and fails the build if other absolute paths leak in. When building the dylib yourself, set install names accordingly (see that script’s comments in the project file if the build starts failing there).

Copy or sync Native/libkalam.h to Prodroid/Resources/libkalam.h if the exported API changed.

Notes

  • App Sandbox is on, with USB access enabled for the device use case.
  • Swap Development Team / bundle identifier in the target settings if you’re not building with the original signing setup.

About

macOS app for talking to Android phones over USB: MTP for storage and the usual ADB workflow when you need it.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors