<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Иван Плесских</title>
    <description>The latest articles on DEV Community by Иван Плесских (@amareis).</description>
    <link>https://dev.to/amareis</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F54876%2Fd71fe66a-0a3c-4a3a-9ea4-71e7795b69c8.jpg</url>
      <title>DEV Community: Иван Плесских</title>
      <link>https://dev.to/amareis</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/amareis"/>
    <language>en</language>
    <item>
      <title>How to (almost) forget about wires in Android/Flutter/mobile-web development</title>
      <dc:creator>Иван Плесских</dc:creator>
      <pubDate>Tue, 23 Mar 2021 10:56:46 +0000</pubDate>
      <link>https://dev.to/amareis/how-to-almost-forget-about-wires-in-android-flutter-mobile-web-development-96</link>
      <guid>https://dev.to/amareis/how-to-almost-forget-about-wires-in-android-flutter-mobile-web-development-96</guid>
      <description>&lt;p&gt;Ok, this is pretty straightforward. If you a android developer (or flutter/react native developer, or web developer who wants to test your local code in real device browser), your phone is permanently connected to your working station. &lt;/p&gt;

&lt;p&gt;If you don't like this and want to use some modern technologies like, you know, some wireless solutions, adb can connect your phone via wi-fi, and even forward port from your computer to phone's localhost.&lt;/p&gt;

&lt;p&gt;But it's not really fun to type all this commands by hands every time when you start working, so there is simple bash script to switch connected Android phone to wi-fi adb mode and optionally forward port from computer to phone:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="nb"&gt;command&lt;/span&gt; &lt;span class="nt"&gt;-v&lt;/span&gt; adb &amp;amp;&amp;gt; /dev/null
&lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"adb is not globally installed, using android sdk version"&lt;/span&gt;
    &lt;span class="c"&gt;#you can just set your path to android platform tools&lt;/span&gt;
    &lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;PATH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$PATH&lt;/span&gt;&lt;span class="s2"&gt;:~/Android/Sdk/platform-tools"&lt;/span&gt;
&lt;span class="k"&gt;fi

&lt;/span&gt;adb disconnect
adb usb
&lt;span class="nb"&gt;sleep &lt;/span&gt;1

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Wait for USB device..."&lt;/span&gt;
adb wait-for-usb-device
adb devices

&lt;span class="nv"&gt;IP&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;adb shell ip route | &lt;span class="nb"&gt;cut&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt;&lt;span class="s1"&gt;' '&lt;/span&gt; &lt;span class="nt"&gt;-f9&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"IP: &lt;/span&gt;&lt;span class="nv"&gt;$IP&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Switch to tcpip"&lt;/span&gt;
adb tcpip 5555

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Connecting..."&lt;/span&gt;
&lt;span class="k"&gt;while &lt;/span&gt;&lt;span class="nb"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do
  &lt;/span&gt;&lt;span class="nv"&gt;res&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;adb connect &lt;span class="nv"&gt;$IP&lt;/span&gt; | &lt;span class="nb"&gt;cut&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt;&lt;span class="s1"&gt;' '&lt;/span&gt; &lt;span class="nt"&gt;-f1&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;
  &lt;span class="o"&gt;[[&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$res&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;"connected"&lt;/span&gt; &lt;span class="o"&gt;]]&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;break
  sleep &lt;/span&gt;1
&lt;span class="k"&gt;done
&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Connected!"&lt;/span&gt;

&lt;span class="nv"&gt;PORT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$PORT&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="k"&gt;then
  &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Forward port &lt;/span&gt;&lt;span class="nv"&gt;$PORT&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
  &lt;span class="nb"&gt;sleep &lt;/span&gt;2
  adb &lt;span class="nt"&gt;-e&lt;/span&gt; reverse tcp:&lt;span class="nv"&gt;$PORT&lt;/span&gt; tcp:&lt;span class="nv"&gt;$PORT&lt;/span&gt;
&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There is gist, which you could just star or add to bookmarks: &lt;br&gt;
&lt;a href="https://gist.github.com/Amareis/a39e0fa39260a7d23abb7908fc295226"&gt;https://gist.github.com/Amareis/a39e0fa39260a7d23abb7908fc295226&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Note what you still need to connect phone over wire at first time, but then while it connected to same wi-fi as your computer, you can safely remove wire.&lt;/p&gt;

&lt;p&gt;Script can use android platform-tools adb version (if there is no globally installed adb), wait for phone connect (if there is no any connected device) and, of course, forward your local port to phone.&lt;/p&gt;

&lt;p&gt;Usage is really simple:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#simple turning connected phone to adb wi-fi mode
./connect.sh

#turning phone to adb wi-fi mode and then forward local port to it
./connect.sh 8080
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tested on some ubuntu, and maybe it can works on mac or wsl, but not for sure. If you'll make it, you can propose changes to gist.&lt;/p&gt;

&lt;p&gt;Care about your wires and use wi-fi!&lt;/p&gt;

</description>
      <category>flutter</category>
      <category>android</category>
      <category>mobile</category>
      <category>adb</category>
    </item>
  </channel>
</rss>
