diff --git a/README.md b/README.md index 19fdb28..c069ccf 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,22 @@ -# ISO Drive +# ISO Droid Android app for mounting ISO/IMG files as USB mass storage or CD-ROM devices on rooted Android devices. +## Screenshots + +Screenshots are available in the [docs/screenshots/](docs/screenshots/) directory. + ## Features - Mount ISO/IMG files as USB mass storage or CD-ROM +- Create blank IMG files for writable USB drives - Read-only or read-write mount options - Persistent notification with quick unmount button -- Browse and select ISO files from device storage +- Browse and select ISO/IMG files from device storage +- OS-specific icons for popular distributions (Linux, BSD, etc.) - Download links to popular operating systems (Linux, BSD, Windows, Recovery tools) -- Material 3 dynamic theming +- Rename and delete files +- Material 3 dynamic theming with dark mode support ## Requirements @@ -19,26 +26,73 @@ Android app for mounting ISO/IMG files as USB mass storage or CD-ROM devices on ## Installation -1. Install the [isodrive](https://github.com/nitanmarcel/isodrive) binary via the [Magisk module](https://github.com/nitanmarcel/isodrive-magisk/releases/latest) or manually -2. Install the ISO Drive APK +### Option 1: Install APK (Recommended) +1. Download the latest ISO Droid APK from releases +2. Install the APK +3. Grant root access when prompted +4. The app includes a bundled isodrive binary +5. Place your ISO/IMG files in `/sdcard/isodrive/` (or configure a different directory in settings) + +### Option 2: Install with Magisk Module +1. Install the [isodrive Magisk module](https://github.com/nitanmarcel/isodrive-magisk/releases/latest) +2. Install the ISO Droid APK 3. Grant root access when prompted 4. Place your ISO/IMG files in `/sdcard/isodrive/` (or configure a different directory in settings) +## Building from Source + +### Prerequisites + +Before building the app, you need to obtain the `isodrive` binary: + +1. The `isodrive` binary is compiled from [nitanmarcel/isodrive](https://github.com/nitanmarcel/isodrive) +2. Place the compiled binary at `app/src/main/assets/bin/isodrive` before building +3. The binary must be executable and compiled for the appropriate Android architecture + +### Build Steps + +```bash +# Clone the repository +git clone https://github.com/yourusername/ISODroid.git +cd ISODroid + +# Ensure isodrive binary is present +ls -la app/src/main/assets/bin/isodrive + +# Build the APK +./gradlew assembleRelease +``` + ## Usage -1. Open ISO Drive +1. Open ISO Droid 2. Select an ISO/IMG file from the list 3. Choose mount options (Mass Storage or CD-ROM, Read-Only or Read-Write) 4. Tap Mount -5. Connect your phone to a PC via USB - it will appear as a USB drive +5. Connect your phone to a PC via USB - it will appear as a USB drive/CD-ROM 6. Unmount via the app or notification when done +### Creating Custom IMG Files + +1. Tap the "+" button in the top bar +2. Enter a filename and size +3. The app will create a blank IMG file that can be mounted as a writable USB drive +4. Format it on your PC after mounting (FAT32, exFAT, NTFS, etc.) + ## Credits -- [isodrive](https://github.com/nitanmarcel/isodrive) by nitanmarcel - The CLI tool that powers ISO Drive +- [isodrive](https://github.com/nitanmarcel/isodrive) by nitanmarcel - The CLI tool that powers ISO Droid - [ISODriveUT](https://github.com/fredldotme/ISODriveUT) by fredldotme - Original inspiration for isodrive - OS icons from [Simple Icons](https://simpleicons.org/) +## Technical Details + +ISO Droid uses the `isodrive` binary to interface with the Linux USB gadget subsystem. The app: +- Bundles the isodrive binary in `app/src/main/assets/bin/` +- Extracts and executes it with root permissions at runtime +- Supports both configfs (modern) and sysfs (legacy) USB gadget modes +- Dynamically detects available OS icons for file display + ## License MIT diff --git a/docs/screenshots/create_img_digalogbox.jpg b/docs/screenshots/create_img_digalogbox.jpg new file mode 100644 index 0000000..85172b0 Binary files /dev/null and b/docs/screenshots/create_img_digalogbox.jpg differ diff --git a/docs/screenshots/list_images_home.jpg b/docs/screenshots/list_images_home.jpg new file mode 100644 index 0000000..5be9c2e Binary files /dev/null and b/docs/screenshots/list_images_home.jpg differ diff --git a/docs/screenshots/list_listing_download.jpg b/docs/screenshots/list_listing_download.jpg new file mode 100644 index 0000000..9ce86f1 Binary files /dev/null and b/docs/screenshots/list_listing_download.jpg differ diff --git a/docs/screenshots/mount_options_dialogbox.jpg b/docs/screenshots/mount_options_dialogbox.jpg new file mode 100644 index 0000000..0d096db Binary files /dev/null and b/docs/screenshots/mount_options_dialogbox.jpg differ diff --git a/docs/screenshots/mounted_status_home.jpg b/docs/screenshots/mounted_status_home.jpg new file mode 100644 index 0000000..15b9d90 Binary files /dev/null and b/docs/screenshots/mounted_status_home.jpg differ