Android TIPS

ADB再起動

ADBでTCPIPで端末接続

  • TCP 5555~5585 いずれかの指定したポートを使用して端末に接続する
  • いきなりTCPIP接続を試みようとすると「unable to connect to xxx.xxx.xxx.xxx:5555: cannot connect to xxx.xxx.xxx.xxx:5555: 対象のコンピューターによって拒否されたた め、接続できませんでした。 (10061)」と出て接続できなかった。
    • USBモードで一回接続させる必要あり?
      # 端末をUSBで接続
      # USBモードに変更
      adb usb
      # TCPIPモードに変更 ポートは5555を指定
      adb tcpip 5555
      # 端末IPアドレスに接続(この時点でUSB接続は解除していい?)
      adb connect xxx.xxx.xxx.xxx:5555
      # 端末の接続状態確認
      adb devices
      # 切断
      adb disconnect
  • 参考: ネットワーク経由でadb実行する - Qiita
  • 参考:Android Studio wireless ADB error (10061) - Stack Overflow

ADB経由でAndroidを操作

  • adb shell input コマンドで接続端末に入力イベントを発生させることができる
    # タップ(タッチスクリーンがデフォルトデバイスなので省略可)
    adb shell input [touchscreen] tap x y
    # スワイプ(長押し操作もこれを使う)
    adb shell input [touchscreen] swipe x1 y1 x2 y2 [duration]
  • adb shell wm size で画面サイズを取得できるのでそれを目星にできそう
    # 画面サイズ取得
    adb shell wm size
  • 参考:androidの操作を自動化したときの覚書

端末にインストールされたアプリの apk ファイルの抽出

  • USB接続でAndroid端末を接続して adb コマンドを使って インストール済みパッケージ(apk)を抽出する
    # パッケージの検索 (*** は任意のキーワード)
    adb shell pm list packages -f | findstr ***
    
    # パッケージファイルをPCにコピー (検索で出てきたパスのapkファイルをカレントディレクトリにコピーする)
    adb pull /data/app/***.apk
  • 2017/05/31追記: Android7だと adb pull に失敗するので adb shell cp で他の場所にコピーしてそこから pull する必要があるらしい
    # パッケージの検索 (*** は任意のキーワード)
    adb shell pm list packages -f | findstr ***
    
    # パッケージファイルをPCにコピー (検索で出てきたパスのapkファイルをカレントディレクトリにコピーする)
    adb shell cp /data/app/***.apk /storage/emulated/0/Download
    abb pull /storage/emulated/0/Download/***.apk
  • 参考: 【adb shell】Android端末からapkを取り出してパソコンに保存する方法┃新!あんどろいどマニア
  • 参考: Android 7.0 Nougatにおいて adb pull でapkを抽出できない問題の解決策 - Qiita

NFCを特定条件で自動オンオフする

  • NFC(Felica) 搭載端末で決済可能にしている場合、端末スリープ状態でもNFCがオンなら機能は有効。
    これは便利でもあるが、逆に言うと端末に機器を近付ければ勝手に支払いされる電子的なスリ行為も可能であるということ。
    でも必要時だけ手動でオンにするというのは面倒だし、オフにし忘れるかもしれない。
  • MacroDroid を使うと特定条件時に特定の処理をさせるというようなことができる。
    例えばロック解除したらNFCをオン、画面オフでNFCをオフにする、決済用アプリ起動/終了時にオン/オフにする、など。
    • ただし、NFC操作など一部機能は root化 または adb hack を行わないといけない。
      # adb hack - MacroDroidアプリに対して権限を付与する
      adb shell pm grant com.arlosoft.macrodroid android.permission.WRITE_SECURE_SETTINGS
      adb shell pm grant com.arlosoft.macrodroid android.permission.CHANGE_CONFIGURATION
  • 参考:AndroidのNFCを自動で無効にする方法! 特定アプリごとオンオフを切り替えて誤作動を防ごう
  • 参考:MacroDroidの高度設定をroot不要で解放する方法! ADB hackでAndroidの自動化を強化しよう

Amazon Fire タブレットに Google Playをインストール