5 Commits
v1.1 ... v1.3

19 changed files with 31 additions and 20 deletions

View File

@@ -5,6 +5,16 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [1.3] - 2025-03-11
### Changed
- Fix default image dir to be /sdcard/isodroid instead of /sdcard/isodrive
## [1.2] - 2025-03-10
### Changed
- Fix app name displaying as "ISO Drive" instead of "ISO Droid" in some places
## [1.1] - 2025-03-10
### Changed

View File

@@ -35,7 +35,7 @@ Android app for mounting ISO/IMG files as USB mass storage or CD-ROM devices on
1. Download the APK from the links above
2. Install the APK on your rooted Android device
3. Grant root access when prompted
4. Place your ISO/IMG files in `/sdcard/isodrive/` (or configure a different directory in settings)
4. Place your ISO/IMG files in `/sdcard/isodroid/` (or configure a different directory in settings)
> **Note**: The app includes a bundled `isodrive` binary. No additional setup required!

View File

@@ -13,7 +13,7 @@ android {
minSdk = 26
targetSdk = 36
versionCode = 1
versionName = "1.1"
versionName = "1.3"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}

View File

@@ -89,7 +89,7 @@ fun MainScreen(
Scaffold(
topBar = {
TopAppBar(
title = { Text("ISO Drive") },
title = { Text("ISO Droid") },
colors = TopAppBarDefaults.topAppBarColors(
containerColor = MaterialTheme.colorScheme.primaryContainer,
titleContentColor = MaterialTheme.colorScheme.onPrimaryContainer

View File

@@ -231,11 +231,11 @@ fun SettingsScreen(
Spacer(modifier = Modifier.width(12.dp))
Column {
Text(
text = "ISO Drive",
text = "ISO Droid",
style = MaterialTheme.typography.titleMedium
)
Text(
text = "Version 1.0",
text = "Version 1.2",
style = MaterialTheme.typography.bodySmall,
color = MaterialTheme.colorScheme.onSurfaceVariant
)
@@ -259,13 +259,13 @@ fun SettingsScreen(
color = MaterialTheme.colorScheme.primary
)
Text(
text = "git.shihaam.dev/shihaam/ISODrive",
text = "git.shihaam.dev/shihaam/ISODroid",
style = MaterialTheme.typography.bodySmall.copy(
textDecoration = TextDecoration.Underline
),
color = MaterialTheme.colorScheme.primary,
modifier = Modifier.clickable {
openUrl("https://git.shihaam.dev/shihaam/ISODrive")
openUrl("https://git.shihaam.dev/shihaam/ISODroid")
}
)
}
@@ -306,7 +306,7 @@ fun SettingsScreen(
}
}
Text(
text = "The CLI tool that powers ISO Drive. Mounts ISO/IMG files as bootable USB devices using configfs.",
text = "The CLI tool that powers ISO Droid. Mounts ISO/IMG files as bootable USB devices using configfs.",
style = MaterialTheme.typography.bodySmall,
color = MaterialTheme.colorScheme.onSurfaceVariant,
modifier = Modifier.padding(top = 8.dp)

View File

@@ -8,6 +8,7 @@ package sh.sar.isodroid.ui.screens
import android.Manifest
import android.content.pm.PackageManager
import android.os.Build
import android.os.Environment
import androidx.core.content.ContextCompat
import androidx.activity.compose.rememberLauncherForActivityResult
import androidx.activity.result.contract.ActivityResultContracts
@@ -97,7 +98,7 @@ private fun WelcomeStep(
Spacer(modifier = Modifier.height(24.dp))
Text(
text = "Welcome to ISO Drive",
text = "Welcome to ISO Droid",
style = MaterialTheme.typography.headlineMedium,
fontWeight = FontWeight.Bold
)
@@ -152,7 +153,7 @@ private fun RootAccessStep(
title = "Root Access",
description = when (hasRoot) {
false -> "Root access was denied. The app requires root to mount ISO files. You can try again or skip and grant access later from your root manager."
else -> "ISO Drive needs superuser (root) access to mount ISO files as USB devices. This is required because mounting USB gadgets is a system-level operation."
else -> "ISO Droid needs superuser (root) access to mount ISO files as USB devices. This is required because mounting USB gadgets is a system-level operation."
},
granted = hasRoot
)
@@ -258,7 +259,7 @@ private fun NotificationStep(
description = when {
permanentlyDenied -> "Notification permission was denied. You can enable it later in system settings if you change your mind."
wasDenied -> "Notification permission was denied. You can try again or continue without notifications."
else -> "ISO Drive shows a notification when an ISO is mounted, with a quick unmount button. This helps you keep track of the mount status."
else -> "ISO Droid shows a notification when an ISO is mounted, with a quick unmount button. This helps you keep track of the mount status."
},
granted = if (wasDenied) false else if (hasPermission) true else null
)
@@ -323,7 +324,7 @@ private fun CompleteStep(
Spacer(modifier = Modifier.height(16.dp))
Text(
text = "ISO Drive is ready to use. Place your ISO or IMG files in the isodrive folder and start mounting.",
text = "ISO Droid is ready to use. Place your ISO or IMG files in the isodroid folder and start mounting.",
style = MaterialTheme.typography.bodyLarge,
textAlign = TextAlign.Center,
color = MaterialTheme.colorScheme.onSurfaceVariant
@@ -332,7 +333,7 @@ private fun CompleteStep(
Spacer(modifier = Modifier.height(8.dp))
Text(
text = "Default directory: /sdcard/isodrive/",
text = "Default directory: ${Environment.getExternalStorageDirectory().absolutePath}/isodroid/",
style = MaterialTheme.typography.bodySmall,
textAlign = TextAlign.Center,
color = MaterialTheme.colorScheme.onSurfaceVariant.copy(alpha = 0.7f)
@@ -344,7 +345,7 @@ private fun CompleteStep(
onClick = onFinish,
modifier = Modifier.fillMaxWidth()
) {
Text("Start Using ISO Drive")
Text("Start Using ISO Droid")
}
}

View File

@@ -52,7 +52,7 @@ class MainViewModel(application: Application) : AndroidViewModel(application) {
companion object {
private val KEY_ISO_DIRECTORY = stringPreferencesKey("iso_directory")
private val DEFAULT_ISO_DIRECTORY = "${Environment.getExternalStorageDirectory().absolutePath}/isodrive"
private val DEFAULT_ISO_DIRECTORY = "${Environment.getExternalStorageDirectory().absolutePath}/isodroid"
}
private var initialized = false

View File

@@ -229,13 +229,13 @@ fun toCommandArgs(): List<String> {
**Example commands:**
```bash
# Mount as read-only mass storage
isodrive "/sdcard/isodrive/ubuntu.iso" -configfs
isodrive "/sdcard/isodroid/ubuntu.iso" -configfs
# Mount as writable drive
isodrive "/sdcard/isodrive/drive.img" -rw -configfs
isodrive "/sdcard/isodroid/drive.img" -rw -configfs
# Mount as CD-ROM
isodrive "/sdcard/isodrive/windows.iso" -cdrom -configfs
isodrive "/sdcard/isodroid/windows.iso" -cdrom -configfs
```
## Event System
@@ -338,7 +338,7 @@ private val KEY_ISO_DIRECTORY = stringPreferencesKey("iso_directory")
```
Stores:
- Custom ISO directory path (default: `/sdcard/isodrive/`)
- Custom ISO directory path (default: `/sdcard/isodroid/`)
### SharedPreferences

Binary file not shown.

Before

Width:  |  Height:  |  Size: 117 KiB

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 162 KiB

After

Width:  |  Height:  |  Size: 165 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 94 KiB

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 104 KiB

After

Width:  |  Height:  |  Size: 109 KiB

View File

@@ -16,7 +16,7 @@ Requirements:
* Android 8.0+ (API 26)
Usage:
1. Place your ISO/IMG files in /sdcard/isodrive/
1. Place your ISO/IMG files in /sdcard/isodroid/
2. Select an ISO/IMG file from the list
3. Choose mount options (Mass Storage or CD-ROM)
4. Tap Mount

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 104 KiB

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 94 KiB

After

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 117 KiB

After

Width:  |  Height:  |  Size: 165 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 162 KiB

After

Width:  |  Height:  |  Size: 124 KiB