Android Studio。エミュレータを使用せずスマホ実機でアプリ動作確認

Android StudioAndroid Studio 3

スマホ実機でアプリ動作確認する方法

 状態:-  閲覧数:2,875  投稿日:2018-03-03  更新日:2018-03-07

A.USB接続 / スマホ実機でアプリ動作確認

 閲覧数:301 投稿日:2018-03-03 更新日:2018-03-07

手順


Android Studioで開発したAndroidアプリをスマホ実機でテストするには以下の手順が必要になる
・1.スマホ実機側の設定
・2.実機とPCをUSBで接続する
・3.Android Studio側の設定
・4.アプリ実行

1.スマホ実機側の設定


デベロッパーになる
・設定→システム→端末情報 の一番下にある項目「ビルド番号」
・見つけたら「ビルド番号」部分を連続でタップ!
すると「デベロッパーになるまであと○ステップです。」と表示されるので、連打し続ける
「これでデベロッパーになりました!」と表示されたらOK
「設定」->「システム」->「端末情報」->「ビルド番号」を7回タップ

USBデバッグができるよう設定変更
・[設定]→システムを開き、[開発者向けオプション]を開く
・[開発者向けオプション]で、開発者オプションがONになっていることを確認する
・「USBデバッグ」のチェックボックスにチェックをする

2.スマホ実機とPCをUSBで接続する


スマホ実機とPCをUSBケーブルで接続する
・接続すると、実機に「USBデバックを許可しますか?」というダイアログボックスが表示されるので、[OK]をタップする
・PC とスマホを USB ケーブルでつなぐとスマホ画面(左上の一番右側)にデバッグ・アイコンが表示される

3.Android Studio側の設定


run→Edit Configurations を選択する
・「Target Device」の「USB device」を選択

4.アプリを実行する


開発したアプリを実機で起動してみる
・Android Studioのメニューバー
run
runapp
・しばらくするとアプリが実機にインストールされ、アプリが実行される

これで完了

一度設定をしてしまえば、今後は実機とPCをUSBで接続すれば簡単にテストが行えるようになる

B.無線LAN接続失敗 / スマホ実機でアプリ動作確認

 閲覧数:322 投稿日:2018-03-05 更新日:2018-03-07

1.PATH


PATHを確認
・Android Studioを使用している場合、下記からPATHを確認
File > Other Settings > Default Project Structure
L:\Android\Sdk


Windows10にパスを通す
Windows10でパスを通す
L:\Android\Sdk\platform-tools

気が付いた点
・「システム環境変数」に「L:\Android\Sdk\platform-tools」を設定するだけ。「L:\Android\Sdk\tools」設定は不要
・理由は、adb ツールが「▼android_sdk/platform-tools/」にあるため

2.コマンドプロンプトで確認


コマンドプロンプト起動
・[ スタートボタン ]をクリック
・ [ すべてのアプリ ] をクリック
・ [ Windows システムツール ] をクリック
・ [ コマンドプロンプト ] をクリック

adbコマンド入力
>adb version
Android Debug Bridge version 1.0.39
Version 0.0.1-4500957
Installed as L:\Android\Sdk\platform-tools\adb.exe


adbバージョンが表示されない場合
・コマンドプロンプト起動し直してみる
※コマンドプロンプト起動後にパスを通した内容は、反映されない

3.IPアドレス確認


A.Android端末で確認する方法
B.PC(Windows)で確認する方法

A.Android端末で確認する方法
・「Nexus 6P」の場合
・[設定] - [ネットワークとインターネット] -  [Wi-Fi] -  [接続済み] -  [IPアドレス]

B.PC(Windows)で確認する方法
・コマンドプロンプト起動
>ipconfig
Windows IP 構成
イーサネット アダプター ローカル エリア接続:
//中略
  IPv4 アドレス . . . . . . . . . . . .:
  サブネット マスク . . . . . . . . . .:
  デフォルト ゲートウェイ . . . . . . .:


4.ネットワーク経由でadb接続


>adb tcpip 5555
error: no devices/emulators found


エラー原因
・事前にUSB接続が必要

迷走履歴1。「USBデバッグの認証ダイアログ」への対応が必要 / B.無線LAN接続

 閲覧数:328 投稿日:2018-03-05 更新日:2018-03-07

問題発生


USB接続後再度挑戦するも、早速問題発生
>adb tcpip 5555
error: device unauthorized.
This adb server's $ADB_VENDOR_KEYS is not set
Try 'adb kill-server' if that seems wrong.
Otherwise check for a confirmation dialog on your device.


>adb kill-server

>adb tcpip 5555
* daemon not running; starting now at tcp:5037
* daemon started successfully
error: device unauthorized.
This adb server's $ADB_VENDOR_KEYS is not set
Try 'adb kill-server' if that seems wrong.
Otherwise check for a confirmation dialog on your device.


>adb devices
List of devices attached
CVH7N15B27000423        unauthorized


>adb start-server


>adb devices
List of devices attached
CVH7N15B27000423        unauthorized


>adb
Android Debug Bridge version 1.0.39
Version 0.0.1-4500957
Installed as L:\Android\Sdk\platform-tools\adb.exe

global options:
-a         listen on all network interfaces, not just localhost
-d         use USB device (error if multiple devices connected)
-e         use TCP/IP device (error if multiple TCP/IP devices available)
-s SERIAL  use device with given serial (overrides $ANDROID_SERIAL)
-t ID      use device with given transport id
-H         name of adb server host [default=localhost]
-P         port of adb server [default=5037]
-L SOCKET  listen on given socket for adb server [default=tcp:localhost:5037]

general commands:
devices [-l]             list connected devices (-l for long output)
help                     show this help message
version                  show version num

networking:
connect HOST[:PORT]      connect to a device via TCP/IP [default port=5555]
disconnect [HOST[:PORT]]
    disconnect from given TCP/IP device [default port=5555], or all
forward --list           list all forward socket connections
forward [--no-rebind] LOCAL REMOTE
    forward socket connection using:
      tcp:<port> (<local> may be "tcp:0" to pick any open port)
      localabstract:<unix domain socket name>
      localreserved:<unix domain socket name>
      localfilesystem:<unix domain socket name>
      dev:<character device name>
      jdwp:<process pid> (remote only)
forward --remove LOCAL   remove specific forward socket connection
forward --remove-all     remove all forward socket connections
ppp TTY [PARAMETER...]   run PPP over USB
reverse --list           list all reverse socket connections from device
reverse [--no-rebind] REMOTE LOCAL
    reverse socket connection using:
      tcp:<port> (<remote> may be "tcp:0" to pick any open port)
      localabstract:<unix domain socket name>
      localreserved:<unix domain socket name>
      localfilesystem:<unix domain socket name>
reverse --remove REMOTE  remove specific reverse socket connection
reverse --remove-all     remove all reverse socket connections from device

file transfer:
push [--sync] LOCAL... REMOTE
    copy local files/directories to device
    --sync: only push files that are newer on the host than the device
pull [-a] REMOTE... LOCAL
    copy files/dirs from device
    -a: preserve file timestamp and mode
sync [system|vendor|oem|data|all]
    sync a local build from $ANDROID_PRODUCT_OUT to the device (default all)
    -l: list but don't copy

shell:
shell [-e ESCAPE] [-n] [-Tt] [-x] [COMMAND...]
    run remote shell command (interactive shell if no command given)
    -e: choose escape character, or "none"; default '~'
    -n: don't read from stdin
    -T: disable PTY allocation
    -t: force PTY allocation
    -x: disable remote exit codes and stdout/stderr separation
emu COMMAND              run emulator console command

app installation:
install [-lrtsdg] PACKAGE
install-multiple [-lrtsdpg] PACKAGE...
    push package(s) to the device and install them
    -l: forward lock application
    -r: replace existing application
    -t: allow test packages
    -s: install application on sdcard
    -d: allow version code downgrade (debuggable packages only)
    -p: partial application install (install-multiple only)
    -g: grant all runtime permissions
uninstall [-k] PACKAGE
    remove this app package from the device
    '-k': keep the data and cache directories

backup/restore:
  to show usage run "adb shell bu help"

debugging:
bugreport [PATH]
    write bugreport to given PATH [default=bugreport.zip];
    if PATH is a directory, the bug report is saved in that directory.
    devices that don't support zipped bug reports output to stdout.
jdwp                     list pids of processes hosting a JDWP transport
logcat                   show device log (logcat --help for more)

security:
disable-verity           disable dm-verity checking on userdebug builds
enable-verity            re-enable dm-verity checking on userdebug builds
keygen FILE
    generate adb public/private key; private key stored in FILE,
    public key stored in FILE.pub (existing files overwritten)

scripting:
wait-for[-TRANSPORT]-STATE
    wait for device to be in the given state
    State: device, recovery, sideload, or bootloader
    Transport: usb, local, or any [default=any]
get-state                print offline | bootloader | device
get-serialno             print <serial-number>
get-devpath              print <device-path>
remount
    remount /system, /vendor, and /oem partitions read-write
reboot [bootloader|recovery|sideload|sideload-auto-reboot]
    reboot the device; defaults to booting system image but
    supports bootloader and recovery too. sideload reboots
    into recovery and automatically starts sideload mode,
    sideload-auto-reboot is the same but reboots after sideloading.
sideload OTAPACKAGE      sideload the given full OTA package
root                     restart adbd with root permissions
unroot                   restart adbd without root permissions
usb                      restart adb server listening on USB
tcpip PORT               restart adb server listening on TCP on PORT

internal debugging:
start-server             ensure that there is a server running
kill-server              kill the server if it is running
reconnect                kick connection from host side to force reconnect
reconnect device         kick connection from device side to force reconnect
reconnect offline        reset offline/unauthorized devices to force reconnect

environment variables:
$ADB_TRACE
    comma-separated list of debug info to log:
    all,adb,sockets,packets,rwx,usb,sync,sysdeps,transport,jdwp
$ADB_VENDOR_KEYS         colon-separated list of keys (files or directories)
$ANDROID_SERIAL          serial number to connect to (see -s)
$ANDROID_LOG_TAGS        tags to be used by logcat (see logcat --help)

C:\Users\e1blue>adb
Android Debug Bridge version 1.0.39
Version 0.0.1-4500957
Installed as L:\Android\Sdk\platform-tools\adb.exe

global options:
-a         listen on all network interfaces, not just localhost
-d         use USB device (error if multiple devices connected)
-e         use TCP/IP device (error if multiple TCP/IP devices available)
-s SERIAL  use device with given serial (overrides $ANDROID_SERIAL)
-t ID      use device with given transport id
-H         name of adb server host [default=localhost]
-P         port of adb server [default=5037]
-L SOCKET  listen on given socket for adb server [default=tcp:localhost:5037]

general commands:
devices [-l]             list connected devices (-l for long output)
help                     show this help message
version                  show version num

networking:
connect HOST[:PORT]      connect to a device via TCP/IP [default port=5555]
disconnect [HOST[:PORT]]
    disconnect from given TCP/IP device [default port=5555], or all
forward --list           list all forward socket connections
forward [--no-rebind] LOCAL REMOTE
    forward socket connection using:
      tcp:<port> (<local> may be "tcp:0" to pick any open port)
      localabstract:<unix domain socket name>
      localreserved:<unix domain socket name>
      localfilesystem:<unix domain socket name>
      dev:<character device name>
      jdwp:<process pid> (remote only)
forward --remove LOCAL   remove specific forward socket connection
forward --remove-all     remove all forward socket connections
ppp TTY [PARAMETER...]   run PPP over USB
reverse --list           list all reverse socket connections from device
reverse [--no-rebind] REMOTE LOCAL
    reverse socket connection using:
      tcp:<port> (<remote> may be "tcp:0" to pick any open port)
      localabstract:<unix domain socket name>
      localreserved:<unix domain socket name>
      localfilesystem:<unix domain socket name>
reverse --remove REMOTE  remove specific reverse socket connection
reverse --remove-all     remove all reverse socket connections from device

file transfer:
push [--sync] LOCAL... REMOTE
    copy local files/directories to device
    --sync: only push files that are newer on the host than the device
pull [-a] REMOTE... LOCAL
    copy files/dirs from device
    -a: preserve file timestamp and mode
sync [system|vendor|oem|data|all]
    sync a local build from $ANDROID_PRODUCT_OUT to the device (default all)
    -l: list but don't copy

shell:
shell [-e ESCAPE] [-n] [-Tt] [-x] [COMMAND...]
    run remote shell command (interactive shell if no command given)
    -e: choose escape character, or "none"; default '~'
    -n: don't read from stdin
    -T: disable PTY allocation
    -t: force PTY allocation
    -x: disable remote exit codes and stdout/stderr separation
emu COMMAND              run emulator console command

app installation:
install [-lrtsdg] PACKAGE
install-multiple [-lrtsdpg] PACKAGE...
    push package(s) to the device and install them
    -l: forward lock application
    -r: replace existing application
    -t: allow test packages
    -s: install application on sdcard
    -d: allow version code downgrade (debuggable packages only)
    -p: partial application install (install-multiple only)
    -g: grant all runtime permissions
uninstall [-k] PACKAGE
    remove this app package from the device
    '-k': keep the data and cache directories

backup/restore:
  to show usage run "adb shell bu help"

debugging:
bugreport [PATH]
    write bugreport to given PATH [default=bugreport.zip];
    if PATH is a directory, the bug report is saved in that directory.
    devices that don't support zipped bug reports output to stdout.
jdwp                     list pids of processes hosting a JDWP transport
logcat                   show device log (logcat --help for more)

security:
disable-verity           disable dm-verity checking on userdebug builds
enable-verity            re-enable dm-verity checking on userdebug builds
keygen FILE
    generate adb public/private key; private key stored in FILE,
    public key stored in FILE.pub (existing files overwritten)

scripting:
wait-for[-TRANSPORT]-STATE
    wait for device to be in the given state
    State: device, recovery, sideload, or bootloader
    Transport: usb, local, or any [default=any]
get-state                print offline | bootloader | device
get-serialno             print <serial-number>
get-devpath              print <device-path>
remount
    remount /system, /vendor, and /oem partitions read-write
reboot [bootloader|recovery|sideload|sideload-auto-reboot]
    reboot the device; defaults to booting system image but
    supports bootloader and recovery too. sideload reboots
    into recovery and automatically starts sideload mode,
    sideload-auto-reboot is the same but reboots after sideloading.
sideload OTAPACKAGE      sideload the given full OTA package
root                     restart adbd with root permissions
unroot                   restart adbd without root permissions
usb                      restart adb server listening on USB
tcpip PORT               restart adb server listening on TCP on PORT

internal debugging:
start-server             ensure that there is a server running
kill-server              kill the server if it is running
reconnect                kick connection from host side to force reconnect
reconnect device         kick connection from device side to force reconnect
reconnect offline        reset offline/unauthorized devices to force reconnect

environment variables:
$ADB_TRACE
    comma-separated list of debug info to log:
    all,adb,sockets,packets,rwx,usb,sync,sysdeps,transport,jdwp
$ADB_VENDOR_KEYS         colon-separated list of keys (files or directories)
$ANDROID_SERIAL          serial number to connect to (see -s)
$ANDROID_LOG_TAGS        tags to be used by logcat (see logcat --help)


検索結果


手順
・1.USB DEBUGGING認証を取り消す
・2.USBデバッグを再度有効にする
Android adb devices unauthorized

USBデバッグ認証って何なの?
USB デバッグを無効にする必要がある
・そう言えば、何かスマホで設定したかも
Androidデバイスがunauthorizedで認識されない場合の対処法

解決


スマホ画面確認してみる
・「USBデバッグの認証ダイアログ」が表示されていた
・全然気が付かなかった
・「常に認証許可」を選択
USBデバッグの認証ダイアログが出ない場合の対処法

動作確認


>adb devices
List of devices attached
CVH7N15B27000423        device


迷走履歴2。「ネットワーク分離機能」を使用しないよう変更が必要 / B.無線LAN接続

 閲覧数:311 投稿日:2018-03-05 更新日:2018-03-07

問題発生


>adb tcpip 5555
restarting in TCP mode port: 5555


>adb connect □□:5555
unable to connect to □□:5555: cannot connect to □□:5555: 対象のコンピューターによって拒否されたため、接続できませんでした。 (10061)


>adb connect ◇◇:5555
unable to connect to ◇◇:5555: cannot connect to ◇◇:5555: 接続済みの呼び出し先が一定の時間を過ぎても正しく応答しなかったため、接続できませんでした。または接続済みのホストが応答しなかった ため、確立された接続は失敗しました。 (10060)


>adb tcpip 1234
restarting in TCP mode port: 1234


>adb connect ◇◇:1234
unable to connect to ◇◇:1234: cannot connect to ◇◇:1234: 接続済みの呼び出し先が一定の時間を過ぎても正しく応答しなかったため、接続できませんでした。または接続済みのホストが応答しなかった ため、確立された接続は失敗しました。 (10060)


>adb kill-server

>adb devices
List of devices attached
* daemon not running; starting now at tcp:5037
* daemon started successfully
CVH7N15B27000423        device



>adb start-server

>adb tcpip 5555
restarting in TCP mode port: 5555


>adb connect ◇◇:5555
unable to connect to ◇◇:5555: cannot connect to ◇◇:5555: 接続済みの呼び出し先が一定の時間を過ぎても正しく応答しなかったため、接続できませんでした。または接続済みのホストが応答しなかった ため、確立された接続は失敗しました。 (10060)


>tracert ◇◇
◇◇ へのルートをトレースしています。経由するホップ数は最大 30 です

 1  ■■ [PCIPアドレス]  レポート: 宛先ホストに到達できません。

トレースを完了しました。



PCから(同じ無線LAN接続している)Android端末にpingが通らない。相手ホストに到達できません。
インターネット側にはPingが通るが、ローカルネットワーク側にPingが通らない事象解決
ルーター / Aterm WG1200HS

Q


PCから(同じ無線LAN接続している)Android端末にpingが通らない。相手ホストに到達できません。

環境
・無線LANルータ。Aterm®WG1200HS
・Windows10
・Android

・Windows10 PC のコマンドプロンプトでipconfig
IPv4 アドレス . . . . . ◇

内容
・Android端末のGUI画面にてIPアドレス確認後、Windows10 PC のコマンドプロンプトで ping IPアドレス
◇からの応答:相手ホストに到達できません。

Q
・ルータのフレームウェアを最新に更新してみましたが、効果ありませんでした
・原因として考えられることは??

原因判明


ネットワーク分離機能
・LAN側に接続されている端末へのアクセスなどを制限する機能
・初期値:プライマリSSIDは「使用しない」、セカンダリSSIDは「使用する」
無線LAN環境でPINGが通らない

対応


ルータ管理画面へアクセス
・「Wi-Fi詳細設定(5GHz)」-[Wi-Fi機能設定]の「ネットワーク分離機能」で設定する
ネットワーク分離機能

感想


もっと分かりやすい名前をつけて欲しい
・分かるかよこんなの!

試したけれども効果がなかったこと
WAN側からのPING要求
・いや、分かっていたよ。関係ないってことは。インターネット側からだからね
・やりたいことと逆だってことは
・しかし、他に関係ありそうな項目がないんだもの
・藁にもすがる思いで試してみるでしょうよ
・再起動まで待っても
・やっぱり全く効果なし

ネットワーク分離機能
・この名前から、LAN側のping拒否する、って機能は想像できないでしょう
・出来ないって言ってくれ
・畜生、もう1時半だよ!

B.無線LAN接続成功 / スマホ実機でアプリ動作確認

 閲覧数:352 投稿日:2018-03-06 更新日:2018-03-07
>adb shell
angler:/ $ ifconfig
rmnet_ipa0 Link encap:UNSPEC
         UP RUNNING  MTU:2000  Metric:1
         RX packets:0 errors:0 dropped:0 overruns:0 frame:0
         TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:1000
         RX bytes:0 TX bytes:624

wlan0     Link encap:UNSPEC
         inet addr:192.168.10.102  Bcast:192.168.10.255  Mask:255.255.255.0



>adb tcpip 5555
* daemon not running; starting now at tcp:5037
* daemon started successfully
restarting in TCP mode port: 5555



USB接続を外す

>adb connect 192.168.10.102:5555
connected to 192.168.10.102:5555

>adb devices
List of devices attached
192.168.10.102:5555     device
CVH7N15B27000423        device



アプリを実行する


開発したアプリを実機で起動してみる
・Android Studioのメニューバー
run
runapp
・しばらくすると実機でアプリが実行される

接続を切る
>adb disconnect 192.168.10.102
disconnected 192.168.10.102



気が付いた点
・コマンドプロンプトを複数起動した場合、画面間で情報は共有されない
※画面Aで「adb tcpip 5555」しても、画面Bでは「adb tcpip 5555」していることにならない

プライベートIPアドレスとは

B.無線LAN接続 / 次回から

 閲覧数:382 投稿日:2018-03-06 更新日:2018-03-07

最初の疑問


>adb tcpip 5555
error: no devices/emulators found


USB 接続なし (無線LAN) でアプリを実機デバッグする方法について


USB 接続なし (無線LAN) でアプリを実機デバッグするには、その都度、最初にUSB接続する必要があるでしょうか?
このリンク先内容を試しました
・正常動作したと思うのですが、毎回最初にUSB接続することが地味に面倒です
・USB 接続を全くせずに、 (無線LAN) でアプリを実機デバッグする方法はあるでしょうか?

環境
・「Window10PC」と「Android端末」を、家の無線LANで接続

下記が表示されたので駄目だと思ったけれども
>adb tcpip 5555
error: no devices/emulators found


IPアドレスを指定して実際に接続を試してみると成功する
・ポート番号を登録している?
>adb connect 192.168.10.102:5555
connected to 192.168.10.102:5555


>adb disconnect 192.168.10.102
disconnected 192.168.10.102


設定時にUSB接続していない他のポート番号では駄目


理由不明
・どういう仕組なの?
>adb tcpip 5554
error: no devices/emulators found


>adb connect 192.168.10.102:5554
unable to connect to 192.168.10.102:5554: cannot connect to 192.168.10.102:5554: 対象のコンピューターによって拒否されたため、接続できませんでした。 (10061)


元に戻す場合は以下のように USB 接続待ち受け状態にする
>adb usb


上記コマンドを打たない限りは、無線LAN実機デバッグ可能?
・「adb disconnect」していても可能?

最終的に


最初にUSB接続
・前回の接続が生きている場合はこの手順は不要
・但し必要要件不明なため、取り敢えず「最初にUSB接続」しておいた方が無難
>adb tcpip 5555
restarting in TCP mode port: 5555


>adb connect 192.168.10.102:5555
connected to 192.168.10.102:5555


最初にUSB接続せず失敗するケース


大人しく「最初にUSB接続」しておいた方が無難
>adb connect 192.168.10.102:5555
unable to connect to 192.168.10.102:5555: cannot connect to 192.168.10.102:5555: 対象のコンピューターによって拒否されたため、接続できませんでした。 (10061)


>adb tcpip 5555
error: no devices/emulators found


>adb connect 192.168.10.102:5555
unable to connect to 192.168.10.102:5555: cannot connect to 192.168.10.102:5555: 対象のコンピューターによって拒否されたため、接続できませんでした。 (10061)



Wi-Fi越しにadb接続する
Android端末とネットワーク越しにadb接続する
ネットワーク経由でadb実行した後について


adb の仕組み

 閲覧数:281 投稿日:2018-03-06 更新日:2018-03-07
サーバーは、エミュレータ / 端末が使用する 5555~5585 の範囲で奇数番号のポートをスキャンすることによりエミュレータ / 端末インスタンスを見つけます
Android Debug Bridge


My Application / 3アプリ目

「Android Studio 3.1.1 for Windows」設定



週間人気ページランキング / 5-11 → 5-17
順位 ページタイトル抜粋 アクセス数
アクセスが、ありませんでした! 0
2024/5/18 1:01 更新