<h2 dir="auto">Steps to Reproduce</h2>
<ul dir="auto">
<li>Create a normal Flutter project with the Atom creator project</li>
<li>Remove the internet permission in the manifest</li>
<li>Run the app</li>
</ul>
<h2 dir="auto">Flutter Doctor</h2>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="[✓] Flutter (on Linux, channel alpha)
    • Flutter at /home/kleak/flutter
    • Framework revision 9a0a0d9903 (13 days ago), engine revision f8d80c4617

[✓] Android toolchain - develop for Android devices (Android SDK 24.0.1)
    • Android SDK at /home/kleak/Android/Sdk
    • Platform android-24, build-tools 24.0.1
    • Java(TM) SE Runtime Environment (build 1.8.0_101-b13)

[✓] Atom - a lightweight development environment for Flutter
    • flutter plugin version 0.2.4
    • dartlang plugin version 0.6.38"><pre class="notranslate"><code class="notranslate">[✓] Flutter (on Linux, channel alpha)
    • Flutter at /home/kleak/flutter
    • Framework revision 9a0a0d9903 (13 days ago), engine revision f8d80c4617

[✓] Android toolchain - develop for Android devices (Android SDK 24.0.1)
    • Android SDK at /home/kleak/Android/Sdk
    • Platform android-24, build-tools 24.0.1
    • Java(TM) SE Runtime Environment (build 1.8.0_101-b13)

[✓] Atom - a lightweight development environment for Flutter
    • flutter plugin version 0.2.4
    • dartlang plugin version 0.6.38
</code></pre></div>
<h2 dir="auto">Logs and Crash Reports</h2>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="vm-service: Error: Unhandled exception:
SocketException: Failed to create server socket (OS Error: Permission denied, errno = 13), address = 127.0.0.1, port = 0
#0      _NativeSocket.bind.&lt;anonymous closure&gt; (dart:io-patch/socket_patch.dart:511)
#1      _RootZone.runUnary (dart:async/zone.dart:1404)
#2      _FutureListener.handleValue (dart:async/future_impl.dart:131)
#3      _Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:637)
#4      _Future._propagateToListeners (dart:async/future_impl.dart:667)
#5      _Future._completeWithValue (dart:async/future_impl.dart:477)
#6      _Future._asyncComplete.&lt;anonymous closure&gt; (dart:async/future_impl.dart:528)
#7      _microtaskLoop (dart:async/schedule_microtask.dart:41)
#8      _startMicrotaskLoop (dart:async/schedule_microtask.dart:50)
#9      _runPendingImmediateCallback (dart:isolate-patch/isolate_patch.dart:96)
#10     _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:149)"><pre class="notranslate"><code class="notranslate">vm-service: Error: Unhandled exception:
SocketException: Failed to create server socket (OS Error: Permission denied, errno = 13), address = 127.0.0.1, port = 0
#0      _NativeSocket.bind.&lt;anonymous closure&gt; (dart:io-patch/socket_patch.dart:511)
#1      _RootZone.runUnary (dart:async/zone.dart:1404)
#2      _FutureListener.handleValue (dart:async/future_impl.dart:131)
#3      _Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:637)
#4      _Future._propagateToListeners (dart:async/future_impl.dart:667)
#5      _Future._completeWithValue (dart:async/future_impl.dart:477)
#6      _Future._asyncComplete.&lt;anonymous closure&gt; (dart:async/future_impl.dart:528)
#7      _microtaskLoop (dart:async/schedule_microtask.dart:41)
#8      _startMicrotaskLoop (dart:async/schedule_microtask.dart:50)
#9      _runPendingImmediateCallback (dart:isolate-patch/isolate_patch.dart:96)
#10     _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:149)
</code></pre></div>
<p dir="auto">If your <code class="notranslate">AndroidManifest.xml</code> is missing this line:</p>
<div class="highlight highlight-text-xml notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="&lt;uses-permission android:name=&quot;android.permission.INTERNET&quot;/&gt;"><pre class="notranslate">&lt;<span class="pl-ent">uses-permission</span> <span class="pl-e">android</span><span class="pl-e">:</span><span class="pl-e">name</span>=<span class="pl-s"><span class="pl-pds">"</span>android.permission.INTERNET<span class="pl-pds">"</span></span>/&gt;</pre></div>
<p dir="auto">...then when we try to hook up the observatory port we will get an error 13 (permission denied).</p>
<p dir="auto">We should catch this case and explain what to do about it.</p>