Skip to content

Commit 5c6a5e1

Browse files
committed
Add exception handling and detailed logging to AdbWrapper.isReady()
Add try-catch around isReady() to capture exceptions that prevent device discovery. Log each condition separately: bridge null status, isConnected, hasInitialDeviceList. Also add catch in ConnectedDeviceInfoProvider as double protection.
1 parent 8340394 commit 5c6a5e1

3 files changed

Lines changed: 35 additions & 10 deletions

File tree

src/main/kotlin/com/github/grishberg/android/li/ShowLayoutInspectorAction.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,13 @@ class ShowLayoutInspectorAction : AsAction() {
2525

2626
override fun actionPerformed(e: AnActionEvent, project: Project) {
2727
val settings = StorageService.getInstance().state ?: PluginState()
28+
val logger = PluginLogger()
2829
val adbProvider = object : AdbProvider {
2930
override fun getAdb(): AdbWrapper {
30-
return AdbWrapperImpl(project)
31+
return AdbWrapperImpl(logger, project)
3132
}
3233
}
3334
val notificationHelper = NotificationHelperImpl(project)
34-
val logger = PluginLogger()
3535
val provider = ConnectedDeviceInfoProvider(adbProvider, notificationHelper, logger)
3636

3737
createUi()

src/main/kotlin/com/github/grishberg/androidstudio/plugins/AdbWrapper.kt

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,39 @@ package com.github.grishberg.androidstudio.plugins
33
import com.android.ddmlib.IDevice
44
import com.intellij.openapi.project.Project
55
import org.jetbrains.android.sdk.AndroidSdkUtils
6+
import com.android.layoutinspector.common.AppLogger
67

78
interface AdbWrapper {
89
fun isReady(): Boolean
910
fun connectedDevices(): List<IDevice>
1011
}
1112

12-
class AdbWrapperImpl(project: Project) : AdbWrapper {
13+
class AdbWrapperImpl(private val logger: AppLogger, project: Project) : AdbWrapper {
1314
val androidBridge = AndroidSdkUtils.getDebugBridge(project)
1415

16+
init {
17+
logger.d("AdbWrapperImpl created, androidBridge = ${if (androidBridge != null) "NOT NULL" else "NULL"}")
18+
}
19+
1520
override fun isReady(): Boolean {
16-
if (androidBridge == null) {
17-
return false
18-
}
21+
return try {
22+
logger.d("AdbWrapperImpl.isReady() - checking bridge: ${if (androidBridge != null) "NOT NULL" else "NULL"}")
23+
if (androidBridge == null) {
24+
logger.d("AdbWrapperImpl.isReady() - bridge is NULL, returning false")
25+
return false
26+
}
1927

20-
return androidBridge.isConnected && androidBridge.hasInitialDeviceList()
28+
val isConnected = androidBridge.isConnected
29+
val hasInitialList = androidBridge.hasInitialDeviceList()
30+
logger.d("AdbWrapperImpl.isReady() - isConnected=$isConnected, hasInitialDeviceList=$hasInitialList")
31+
val result = isConnected && hasInitialList
32+
logger.d("AdbWrapperImpl.isReady() - FINAL result: $result")
33+
result
34+
} catch (t: Throwable) {
35+
logger.e("AdbWrapperImpl.isReady() FAILED with exception", t)
36+
logger.e(" androidBridge is null: ${androidBridge == null}")
37+
false
38+
}
2139
}
2240

2341
override fun connectedDevices(): List<IDevice> {

src/main/kotlin/com/github/grishberg/androidstudio/plugins/ConnectedDeviceInfoProvider.kt

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,19 @@ class ConnectedDeviceInfoProvider(
2626
logger.d("AdbWrapper obtained: ${adb.hashCode()}")
2727

2828
logger.d("Checking adb.isReady()...")
29-
if (!adb.isReady()) {
30-
logger.d("adb.isReady() returned false")
29+
val ready = try {
30+
adb.isReady()
31+
} catch (t: Throwable) {
32+
logger.e("provideDeviceInfo() - adb.isReady() THREW exception", t)
33+
false
34+
}
35+
logger.d("adb.isReady() returned: $ready")
36+
if (!ready) {
37+
logger.d("adb.isReady() is FALSE - will return null with error notification")
3138
notificationHelper.error("No platform configured")
3239
return null
3340
}
34-
logger.d("adb.isReady() returned true")
41+
logger.d("adb.isReady() returned true, continuing to device enumeration")
3542

3643
logger.d("Calling adb.connectedDevices()...")
3744
val devices = adb.connectedDevices()

0 commit comments

Comments
 (0)