flutter / flutter

Flutter makes it easy and fast to build beautiful apps for mobile and beyond
https://flutter.dev
BSD 3-Clause "New" or "Revised" License
165.17k stars 27.25k forks source link

`fluttter doctor` should check for incompatible adb in path #6514

Open sethladd opened 7 years ago

sethladd commented 7 years ago

I used the Android Virtual Device Manager to create a new x86 + 7.1.1 instance, with API 25.

~/tmp/testpixel $ flutter --version
Flutter • channel master • git@github.com:flutter/flutter.git
Framework • revision 80d578d93e (32 hours ago) • 2016-10-23 17:20:38
Engine • revision db12c5e621
Tools • Dart 1.21.0-dev.0.0

I've tried a few times, I can't get the starter app to start...

~/tmp/testpixel $ flutter -d An run
Launching loader on Android SDK built for x86...
--------- beginning of main
W/ActivityManager: Force removing ActivityRecord{9558fc1 u0 com.yourcompany.testpixel/org.domokit.sky.shell.SkyActivity t7}: app died, no saved state
Observatory listening on http://127.0.0.1:8100
Diagnostic server listening on http://127.0.0.1:8101
Syncing files to device...                               
Exception from flutter run: HttpException: Connection closed before full header was received, uri = http://127.0.0.1:8100
dart:io                                          _HttpClient.putUrl
package:flutter_tools/src/devfs.dart 225         _DevFSHttpWriter._scheduleWrite.<async>
===== asynchronous gap ===========================
dart:async                                       Future.Future.microtask
package:flutter_tools/src/devfs.dart             _DevFSHttpWriter._scheduleWrite
package:flutter_tools/src/devfs.dart 218         _DevFSHttpWriter._scheduleWrites
package:flutter_tools/src/devfs.dart 206         _DevFSHttpWriter.write.<async>
===== asynchronous gap ===========================
dart:async                                       Future.Future.microtask
package:flutter_tools/src/devfs.dart             _DevFSHttpWriter.write
package:flutter_tools/src/devfs.dart 387         DevFS.update.<async>
dart:async                                       _SyncCompleter.complete
package:flutter_tools/src/devfs.dart 540         DevFS._scanDirectory.<async>
===== asynchronous gap ===========================
dart:async                                       _asyncThenWrapperHelper
package:flutter_tools/src/devfs.dart             DevFS.update
package:flutter_tools/src/hot.dart 357           HotRunner._updateDevFS.<async>
dart:async                                       _SyncCompleter.complete
package:flutter_tools/src/asset.dart 145         AssetBundle.build.<async>
dart:async                                       _SyncCompleter.complete
package:flutter_tools/src/asset.dart 291         _obtainLicenses.<async>
===== asynchronous gap ===========================
dart:async                                       _asyncThenWrapperHelper
package:flutter_tools/src/hot.dart               HotRunner._updateDevFS
package:flutter_tools/src/hot.dart 263           HotRunner._run.<async>
dart:async                                       _SyncCompleter.complete
package:flutter_tools/src/devfs.dart 280         DevFS.create.<async>
dart:async                                       _SyncCompleter.complete
package:flutter_tools/src/devfs.dart 133         ServiceProtocolDevFSOperations.create.<async>
dart:async                                       _SyncCompleter.complete
package:flutter_tools/src/vmservice.dart 582     VM.createDevFS.<async>
dart:async                                       _SyncCompleter.complete
package:flutter_tools/src/vmservice.dart 561     VM.invokeRpcRaw.<async>
dart:async                                       _SyncCompleter.complete
package:json_rpc_2/src/client.dart 175           Client._handleSingleResponse
package:json_rpc_2/src/client.dart 165           Client._handleResponse
dart:async                                       _StreamController.add
package:json_rpc_2/src/peer.dart 92              Peer.listen.<fn>
===== asynchronous gap ===========================
dart:async                                       _asyncThenWrapperHelper
package:flutter_tools/src/hot.dart               HotRunner._run
package:flutter_tools/src/hot.dart 150           HotRunner.run.<fn>
package:stack_trace                              Chain.capture
package:flutter_tools/src/hot.dart 149           HotRunner.run
package:flutter_tools/src/commands/run.dart 221  RunCommand.runCommand.<async>

Exception from flutter run: HttpException: Connection closed before full header was received, uri = http://127.0.0.1:8100
dart:io                                          _HttpClient.putUrl
package:flutter_tools/src/devfs.dart 225         _DevFSHttpWriter._scheduleWrite.<async>
===== asynchronous gap ===========================
dart:async                                       Future.Future.microtask
package:flutter_tools/src/devfs.dart             _DevFSHttpWriter._scheduleWrite
package:flutter_tools/src/devfs.dart 218         _DevFSHttpWriter._scheduleWrites
package:flutter_tools/src/devfs.dart 206         _DevFSHttpWriter.write.<async>
===== asynchronous gap ===========================
dart:async                                       Future.Future.microtask
package:flutter_tools/src/devfs.dart             _DevFSHttpWriter.write
package:flutter_tools/src/devfs.dart 387         DevFS.update.<async>
dart:async                                       _SyncCompleter.complete
package:flutter_tools/src/devfs.dart 540         DevFS._scanDirectory.<async>
===== asynchronous gap ===========================
dart:async                                       _asyncThenWrapperHelper
package:flutter_tools/src/devfs.dart             DevFS.update
package:flutter_tools/src/hot.dart 357           HotRunner._updateDevFS.<async>
dart:async                                       _SyncCompleter.complete
package:flutter_tools/src/asset.dart 145         AssetBundle.build.<async>
dart:async                                       _SyncCompleter.complete
package:flutter_tools/src/asset.dart 291         _obtainLicenses.<async>
===== asynchronous gap ===========================
dart:async                                       _asyncThenWrapperHelper
package:flutter_tools/src/hot.dart               HotRunner._updateDevFS
package:flutter_tools/src/hot.dart 263           HotRunner._run.<async>
dart:async                                       _SyncCompleter.complete
package:flutter_tools/src/devfs.dart 280         DevFS.create.<async>
dart:async                                       _SyncCompleter.complete
package:flutter_tools/src/devfs.dart 133         ServiceProtocolDevFSOperations.create.<async>
dart:async                                       _SyncCompleter.complete
package:flutter_tools/src/vmservice.dart 582     VM.createDevFS.<async>
dart:async                                       _SyncCompleter.complete
package:flutter_tools/src/vmservice.dart 561     VM.invokeRpcRaw.<async>
dart:async                                       _SyncCompleter.complete
package:json_rpc_2/src/client.dart 175           Client._handleSingleResponse
package:json_rpc_2/src/client.dart 165           Client._handleResponse
dart:async                                       _StreamController.add
package:json_rpc_2/src/peer.dart 92              Peer.listen.<fn>
===== asynchronous gap ===========================
dart:async                                       _asyncThenWrapperHelper
package:flutter_tools/src/hot.dart               HotRunner._run
package:flutter_tools/src/hot.dart 150           HotRunner.run.<fn>
package:stack_trace                              Chain.capture
package:flutter_tools/src/hot.dart 149           HotRunner.run
package:flutter_tools/src/commands/run.dart 221  RunCommand.runCommand.<async>

Exception from flutter run: HttpException: Connection closed before full header was received, uri = http://127.0.0.1:8100
dart:io                                          _HttpClient.putUrl
package:flutter_tools/src/devfs.dart 225         _DevFSHttpWriter._scheduleWrite.<async>
===== asynchronous gap ===========================
dart:async                                       Future.Future.microtask
package:flutter_tools/src/devfs.dart             _DevFSHttpWriter._scheduleWrite
package:flutter_tools/src/devfs.dart 218         _DevFSHttpWriter._scheduleWrites
package:flutter_tools/src/devfs.dart 206         _DevFSHttpWriter.write.<async>
===== asynchronous gap ===========================
dart:async                                       Future.Future.microtask
package:flutter_tools/src/devfs.dart             _DevFSHttpWriter.write
package:flutter_tools/src/devfs.dart 387         DevFS.update.<async>
dart:async                                       _SyncCompleter.complete
package:flutter_tools/src/devfs.dart 540         DevFS._scanDirectory.<async>
===== asynchronous gap ===========================
dart:async                                       _asyncThenWrapperHelper
package:flutter_tools/src/devfs.dart             DevFS.update
package:flutter_tools/src/hot.dart 357           HotRunner._updateDevFS.<async>
dart:async                                       _SyncCompleter.complete
package:flutter_tools/src/asset.dart 145         AssetBundle.build.<async>
dart:async                                       _SyncCompleter.complete
package:flutter_tools/src/asset.dart 291         _obtainLicenses.<async>
===== asynchronous gap ===========================
dart:async                                       _asyncThenWrapperHelper
package:flutter_tools/src/hot.dart               HotRunner._updateDevFS
package:flutter_tools/src/hot.dart 263           HotRunner._run.<async>
dart:async                                       _SyncCompleter.complete
package:flutter_tools/src/devfs.dart 280         DevFS.create.<async>
dart:async                                       _SyncCompleter.complete
package:flutter_tools/src/devfs.dart 133         ServiceProtocolDevFSOperations.create.<async>
dart:async                                       _SyncCompleter.complete
package:flutter_tools/src/vmservice.dart 582     VM.createDevFS.<async>
dart:async                                       _SyncCompleter.complete
package:flutter_tools/src/vmservice.dart 561     VM.invokeRpcRaw.<async>
dart:async                                       _SyncCompleter.complete
package:json_rpc_2/src/client.dart 175           Client._handleSingleResponse
package:json_rpc_2/src/client.dart 165           Client._handleResponse
dart:async                                       _StreamController.add
package:json_rpc_2/src/peer.dart 92              Peer.listen.<fn>
===== asynchronous gap ===========================
dart:async                                       _asyncThenWrapperHelper
package:flutter_tools/src/hot.dart               HotRunner._run
package:flutter_tools/src/hot.dart 150           HotRunner.run.<fn>
package:stack_trace                              Chain.capture
package:flutter_tools/src/hot.dart 149           HotRunner.run
package:flutter_tools/src/commands/run.dart 221  RunCommand.runCommand.<async>

Exception from flutter run: HttpException: Connection closed before full header was received, uri = http://127.0.0.1:8100
dart:io                                          _HttpClient.putUrl
package:flutter_tools/src/devfs.dart 225         _DevFSHttpWriter._scheduleWrite.<async>
===== asynchronous gap ===========================
dart:async                                       Future.Future.microtask
package:flutter_tools/src/devfs.dart             _DevFSHttpWriter._scheduleWrite
package:flutter_tools/src/devfs.dart 218         _DevFSHttpWriter._scheduleWrites
package:flutter_tools/src/devfs.dart 206         _DevFSHttpWriter.write.<async>
===== asynchronous gap ===========================
dart:async                                       Future.Future.microtask
package:flutter_tools/src/devfs.dart             _DevFSHttpWriter.write
package:flutter_tools/src/devfs.dart 387         DevFS.update.<async>
dart:async                                       _SyncCompleter.complete
package:flutter_tools/src/devfs.dart 540         DevFS._scanDirectory.<async>
===== asynchronous gap ===========================
dart:async                                       _asyncThenWrapperHelper
package:flutter_tools/src/devfs.dart             DevFS.update
package:flutter_tools/src/hot.dart 357           HotRunner._updateDevFS.<async>
dart:async                                       _SyncCompleter.complete
package:flutter_tools/src/asset.dart 145         AssetBundle.build.<async>
dart:async                                       _SyncCompleter.complete
package:flutter_tools/src/asset.dart 291         _obtainLicenses.<async>
===== asynchronous gap ===========================
dart:async                                       _asyncThenWrapperHelper
package:flutter_tools/src/hot.dart               HotRunner._updateDevFS
package:flutter_tools/src/hot.dart 263           HotRunner._run.<async>
dart:async                                       _SyncCompleter.complete
package:flutter_tools/src/devfs.dart 280         DevFS.create.<async>
dart:async                                       _SyncCompleter.complete
package:flutter_tools/src/devfs.dart 133         ServiceProtocolDevFSOperations.create.<async>
dart:async                                       _SyncCompleter.complete
package:flutter_tools/src/vmservice.dart 582     VM.createDevFS.<async>
dart:async                                       _SyncCompleter.complete
package:flutter_tools/src/vmservice.dart 561     VM.invokeRpcRaw.<async>
dart:async                                       _SyncCompleter.complete
package:json_rpc_2/src/client.dart 175           Client._handleSingleResponse
package:json_rpc_2/src/client.dart 165           Client._handleResponse
dart:async                                       _StreamController.add
package:json_rpc_2/src/peer.dart 92              Peer.listen.<fn>
===== asynchronous gap ===========================
dart:async                                       _asyncThenWrapperHelper
package:flutter_tools/src/hot.dart               HotRunner._run
package:flutter_tools/src/hot.dart 150           HotRunner.run.<fn>
package:stack_trace                              Chain.capture
package:flutter_tools/src/hot.dart 149           HotRunner.run
package:flutter_tools/src/commands/run.dart 221  RunCommand.runCommand.<async>

Exception from flutter run: HttpException: Connection closed before full header was received, uri = http://127.0.0.1:8100
dart:io                                          _HttpClient.putUrl
package:flutter_tools/src/devfs.dart 225         _DevFSHttpWriter._scheduleWrite.<async>
===== asynchronous gap ===========================
dart:async                                       Future.Future.microtask
package:flutter_tools/src/devfs.dart             _DevFSHttpWriter._scheduleWrite
package:flutter_tools/src/devfs.dart 218         _DevFSHttpWriter._scheduleWrites
package:flutter_tools/src/devfs.dart 206         _DevFSHttpWriter.write.<async>
===== asynchronous gap ===========================
dart:async                                       Future.Future.microtask
package:flutter_tools/src/devfs.dart             _DevFSHttpWriter.write
package:flutter_tools/src/devfs.dart 387         DevFS.update.<async>
dart:async                                       _SyncCompleter.complete
package:flutter_tools/src/devfs.dart 540         DevFS._scanDirectory.<async>
===== asynchronous gap ===========================
dart:async                                       _asyncThenWrapperHelper
package:flutter_tools/src/devfs.dart             DevFS.update
package:flutter_tools/src/hot.dart 357           HotRunner._updateDevFS.<async>
dart:async                                       _SyncCompleter.complete
package:flutter_tools/src/asset.dart 145         AssetBundle.build.<async>
dart:async                                       _SyncCompleter.complete
package:flutter_tools/src/asset.dart 291         _obtainLicenses.<async>
===== asynchronous gap ===========================
dart:async                                       _asyncThenWrapperHelper
package:flutter_tools/src/hot.dart               HotRunner._updateDevFS
package:flutter_tools/src/hot.dart 263           HotRunner._run.<async>
dart:async                                       _SyncCompleter.complete
package:flutter_tools/src/devfs.dart 280         DevFS.create.<async>
dart:async                                       _SyncCompleter.complete
package:flutter_tools/src/devfs.dart 133         ServiceProtocolDevFSOperations.create.<async>
dart:async                                       _SyncCompleter.complete
package:flutter_tools/src/vmservice.dart 582     VM.createDevFS.<async>
dart:async                                       _SyncCompleter.complete
package:flutter_tools/src/vmservice.dart 561     VM.invokeRpcRaw.<async>
dart:async                                       _SyncCompleter.complete
package:json_rpc_2/src/client.dart 175           Client._handleSingleResponse
package:json_rpc_2/src/client.dart 165           Client._handleResponse
dart:async                                       _StreamController.add
package:json_rpc_2/src/peer.dart 92              Peer.listen.<fn>
===== asynchronous gap ===========================
dart:async                                       _asyncThenWrapperHelper
package:flutter_tools/src/hot.dart               HotRunner._run
package:flutter_tools/src/hot.dart 150           HotRunner.run.<fn>
package:stack_trace                              Chain.capture
package:flutter_tools/src/hot.dart 149           HotRunner.run
package:flutter_tools/src/commands/run.dart 221  RunCommand.runCommand.<async>

Exception from flutter run: HttpException: Connection closed before full header was received, uri = http://127.0.0.1:8100
dart:io                                          _HttpClient.putUrl
package:flutter_tools/src/devfs.dart 225         _DevFSHttpWriter._scheduleWrite.<async>
===== asynchronous gap ===========================
dart:async                                       Future.Future.microtask
package:flutter_tools/src/devfs.dart             _DevFSHttpWriter._scheduleWrite
package:flutter_tools/src/devfs.dart 218         _DevFSHttpWriter._scheduleWrites
package:flutter_tools/src/devfs.dart 206         _DevFSHttpWriter.write.<async>
===== asynchronous gap ===========================
dart:async                                       Future.Future.microtask
package:flutter_tools/src/devfs.dart             _DevFSHttpWriter.write
package:flutter_tools/src/devfs.dart 387         DevFS.update.<async>
dart:async                                       _SyncCompleter.complete
package:flutter_tools/src/devfs.dart 540         DevFS._scanDirectory.<async>
===== asynchronous gap ===========================
dart:async                                       _asyncThenWrapperHelper
package:flutter_tools/src/devfs.dart             DevFS.update
package:flutter_tools/src/hot.dart 357           HotRunner._updateDevFS.<async>
dart:async                                       _SyncCompleter.complete
package:flutter_tools/src/asset.dart 145         AssetBundle.build.<async>
dart:async                                       _SyncCompleter.complete
package:flutter_tools/src/asset.dart 291         _obtainLicenses.<async>
===== asynchronous gap ===========================
dart:async                                       _asyncThenWrapperHelper
package:flutter_tools/src/hot.dart               HotRunner._updateDevFS
package:flutter_tools/src/hot.dart 263           HotRunner._run.<async>
dart:async                                       _SyncCompleter.complete
package:flutter_tools/src/devfs.dart 280         DevFS.create.<async>
dart:async                                       _SyncCompleter.complete
package:flutter_tools/src/devfs.dart 133         ServiceProtocolDevFSOperations.create.<async>
dart:async                                       _SyncCompleter.complete
package:flutter_tools/src/vmservice.dart 582     VM.createDevFS.<async>
dart:async                                       _SyncCompleter.complete
package:flutter_tools/src/vmservice.dart 561     VM.invokeRpcRaw.<async>
dart:async                                       _SyncCompleter.complete
package:json_rpc_2/src/client.dart 175           Client._handleSingleResponse
package:json_rpc_2/src/client.dart 165           Client._handleResponse
dart:async                                       _StreamController.add
package:json_rpc_2/src/peer.dart 92              Peer.listen.<fn>
===== asynchronous gap ===========================
dart:async                                       _asyncThenWrapperHelper
package:flutter_tools/src/hot.dart               HotRunner._run
package:flutter_tools/src/hot.dart 150           HotRunner.run.<fn>
package:stack_trace                              Chain.capture
package:flutter_tools/src/hot.dart 149           HotRunner.run
package:flutter_tools/src/commands/run.dart 221  RunCommand.runCommand.<async>

Application finished.
sethladd commented 7 years ago

The problem here was that I had some old version of adb on my path. I somehow installed adb via homebrew, and it was version 23. I was trying here to connect to API version 25.

I removed all android packages from homebrew, and went into Android Studio and downloaded the proper SDK tools for version 25.

flutter doctor didn't report any issue, because it was just saying:

[✓] Android toolchain - develop for Android devices (Android SDK 23.0.2)
    • Android SDK at /Users/sethladd/homebrew/opt/android-sdk
    • Platform android-23, build-tools 23.0.2
    • Java(TM) SE Runtime Environment (build 1.8.0_91-b14)

Maybe we can do some version checking when flutter run is run, and check if my tools are sufficient to connect to the Android version?

Basically, this bug could be reconsidered as "flutter doctor isn't helping me when I have older adb/android sdk when I'm targeting a newer android sdk version"

eseidelGoogle commented 7 years ago

Sounds like a very good warning to add to flutter doctor. FYI @danrubel

danrubel commented 7 years ago

Similar to part 2 of https://github.com/flutter/flutter/issues/6513#issuecomment-255968306

zoechi commented 5 years ago

It seems to check if adb is in a valid SDK directory and SDK version is >= 25

https://github.com/flutter/flutter/blob/34fa90b062ca5ac075633ecec2c2f8e888a4ab47/packages/flutter_tools/lib/src/android/android_sdk.dart#L43

Not sure if this fully covers the problem.

christopherfujino commented 4 years ago

Related to https://github.com/flutter/flutter/issues/9709