Fix adb path resolution: lazy eval instead of default param
ExternalTools.resolve() called as default constructor param was evaluated at class load time, before the filesystem was checked. Use lazy delegation instead so adb path is resolved on first use.
This commit is contained in:
@@ -19,11 +19,17 @@ import kotlin.io.path.absolutePathString
|
|||||||
* Install via: brew install android-platform-tools
|
* Install via: brew install android-platform-tools
|
||||||
*/
|
*/
|
||||||
class AndroidConnector(
|
class AndroidConnector(
|
||||||
private val adbBin: String = com.bolenpad.photophetch.util.ExternalTools.resolve("adb"),
|
private val adbBin: String = "adb",
|
||||||
) : DeviceConnector {
|
) : DeviceConnector {
|
||||||
|
|
||||||
private val log = LoggerFactory.getLogger(AndroidConnector::class.java)
|
private val log = LoggerFactory.getLogger(AndroidConnector::class.java)
|
||||||
|
|
||||||
|
// Resolve adb path lazily — ExternalTools searches Homebrew paths
|
||||||
|
// so the packaged .app finds adb even without shell PATH
|
||||||
|
private val resolvedAdb: String by lazy {
|
||||||
|
com.bolenpad.photophetch.util.ExternalTools.resolve(adbBin)
|
||||||
|
}
|
||||||
|
|
||||||
// Directories on Android that contain camera-roll originals.
|
// Directories on Android that contain camera-roll originals.
|
||||||
// Used as fallback if dynamic DCIM discovery finds nothing.
|
// Used as fallback if dynamic DCIM discovery finds nothing.
|
||||||
private val fallbackCameraDirs = listOf(
|
private val fallbackCameraDirs = listOf(
|
||||||
@@ -213,7 +219,7 @@ class AndroidConnector(
|
|||||||
|
|
||||||
private fun runAdb(serial: String?, vararg args: String): String {
|
private fun runAdb(serial: String?, vararg args: String): String {
|
||||||
val cmd = buildList {
|
val cmd = buildList {
|
||||||
add(adbBin)
|
add(resolvedAdb)
|
||||||
if (serial != null) {
|
if (serial != null) {
|
||||||
add("-s")
|
add("-s")
|
||||||
add(serial)
|
add(serial)
|
||||||
|
|||||||
Reference in New Issue
Block a user