| GitHub Issue | n/a |
| Type | Bug |
| Priority | Critical |
| Status | Resolved |
| Resolution | Fixed |
| Resolution Date | 2017-12-04T19:04:30.000+0000 |
| Affected Version/s | Appc Daemon 1.0.0 |
| Fix Version/s | Appc Daemon 1.0.0 |
| Components | androidlib, appcd-plugin-android |
| Labels | n/a |
| Reporter | Satyam Sekhri |
| Assignee | Chris Barber |
| Created | 2017-12-04T09:33:32.000+0000 |
| Updated | 2017-12-05T16:50:55.000+0000 |
Steps to Reproduce:
1. Restart the system and make sure to plug out connected android device
2. Start Daemon
3. Run the command "/android/1.x/info". The devices section is blank as no device connected yet
4. Connect the device.
5. Again run the command "/android/1.x/info".
Actual Result:
The device section still shows blank and does not show the connected device.
The device is shown in "appc ti info".
Note: Repeating step 5 continues to give device as blank untill daemon is restarted.
Find attached the daemon dump.
androidlib: https://github.com/appcelerator/androidlib/commit/0c58c695970ebd3833b32c1b2b58b3af5c313988 Appc Daemon master PR: https://github.com/appcelerator/appc-daemon/pull/216 Appc Daemon 1_0_X PR: https://github.com/appcelerator/appc-daemon/pull/217
I am still having issues with master.56. [~amukherjee],is having the same issue as well. 1. Disconnect the connected device/s. 2. Do a
adb kill-server. 3. Do aadb start-server. 4. Connect the device. 5. Runappc appcd exec /android/latest/info/devices. 6. I get an empty array object. 7. Runappc appcd restart. 8. Runappc appcd exec /android/latest/info/devices. 9. Device is detected successfully.Please attach a dump file immediately after reproducing the problem.
[~lchoudhary] Am I right in assuming that prior to killing the adb server the daemon is running and the android info service has been exec'd once? I was able to reproduce if everything was running beforehand. [~cbarber] Looking at it I think that it's tangentially related to DAEMON-164, in that we don't reinit adb if we get a close event. Restart obviously works as we're resetting back to the beginning, a simple change like the below isn't pretty but fixes it in the short-term, alternatively I guess the info service could poll an adb.connect call from androidlib and call initDevices() when it gets a valid response to maybe make it less chatty
diff --git a/plugins/appcd-plugin-android/src/android-info-service.js b/plugins/appcd-plugin-android/src/android-info-service.js index a271c38..c5ef498 100644 --- a/plugins/appcd-plugin-android/src/android-info-service.js +++ b/plugins/appcd-plugin-android/src/android-info-service.js @@ -62,6 +62,9 @@ export default class AndroidInfoService extends DataServiceDispatcher { .on('close', () => { console.log('ADB connection was closed'); gawk.set(this.data.devices, []); + setTimeout(async () => { + await this.initDevices(); + }, 1000); }) .once('error', err => { console.log('Track devices returned error: %s', err.message);[~eharris], yes I would assume so as I had studio running which was showing the devices, which means
android info servicewould have been called by studio.[~cbarber], here's the dump: [^dump.json] .