ハートコア株式会社
HeartCore Roboドキュメント一覧
2023-02-27

ADB経由のAndroid自動化

最終更新日:2023年2月27日

目次:
1. はじめに
2. セットアップ
   2.1 PCセットアップ
   2.2 Androidデバイスのセットアップ
   2.3 ロボットへの接続
   2.4 スクリーンストリームミラー
   2.5 パフォーマンス上の注意事項
3. トラブルシューティング
4. 自動化
   4.1 デバイスへの接続
   4.2 画面回転の扱い
   4.3 タッチスクリーンの自動化
   4.4 キーボードの自動化

1.はじめに

HeartCore Robo Desktop v3.1以降では、ADB(Android Debug Bridge)を介したAndroidデバイスの自動化をサポートしています。ADBは、USBに接続されたAndroidデバイスへの接続を提供するAndroid SDKの一部として提供されるツールです。
v4.2以降は、ゲームなどの高速画面応答を必要とするアプリケーションの自動化のためのスクリーン ストリーム ミラーリング (SSM)アプリケーション駆動の画面転送をサポートするようになりました。

HeartCore Robo v5.0.6以降は、さらにAndroid Mirrorという新しい画面転送方法が導入されました。これはSSMを置き換えることを目的とした、

  • セットアップが簡単
  • 起動と操作が速く
  • デバイスにソフトウェアをインストールする必要のない

  • 仕組みです。

    VNC経由の自動化との比較(VMLite VNCおよびDroidVNC

    要素
    スクリーンミラ利用のADBによる自動化
    ADBのみの自動化
    VNCによる自動化
    ルート化
    +不要
    - DroidVNC:デバイスをルート化する必要あり
    + VMLite VNC:デバイスルート化の必要なし
    ネットワーク
    +不要(ネットワークはオプション)
    +ネットワーク不要(USBのみ)
    - DroidVNC:ネットワーク接続が必要(Wi-Fi)
    + VMLite VNC:ネットワークまたはUSB接続が必要
    ソフトウェア要件
    + デバイスへのソフトウェアインストール不要(Androidミラー接続)
    - デバイスに画面ミラーリングアプリケーションが必要(SSM)
    +デバイスにソフトウェアインストール不要
    - デバイスに必要なVNCサーバ
    キーボードのサポート
    + Android ネイティブキーの優れたサポート - Androidネイティブキーのサポートは
    サーバーベンダーで異なります
    画面動作の性能
    +良好な画面リフレッシュレート(パフォーマンス参照
    -   Android SDKで画像圧縮レベルが低いため
    、大画面デバイスの画面更新速度が遅くなる

    +大画面デバイスのフェアスクリーンリフレッシュレート
    推奨される画像エンコーディングに依存
    ゲームサポート
    +サポート
    - 限られたサポート(OpenGLコンテンツなし)
    画面の回転
    +自動および手動の画面回転をサポート
    - 手動での回転のみサポート
    ピンチ&ズーム
    +サポート(HeartCore Robo 3.5+ / Android 4.3+) - サポートされていません

    以上の内容から分かるように、ADB接続は複数のデバイスタイプにまたがるAndroidアプリケーションの非侵入型自動化に適しています。


    2.セットアップ

    Android SDKはWindows、Linux、Mac OS Xでサポートされていますが、自動化の際はMS Windows版のご利用をお勧めします。Linux(およびMacOS)上での自動化(私たちがテストに使うUbuntu Linux等)ではrootアカウントからHeartCore Roboを実行する必要があり、特にテストスクリプト実行中に高負荷がかかるとデバイスへの接続が不安定になります。ほとんどの場合、ロボットは自動的に接続を修復できますが、極端な動作遅延や信頼性低下につながるためです。

    2.1 PCセットアップ

    v5.0.3 以降

    v5.0.3以降では、必要なすべてのJAR ライブラリがAndroid SDKからバンドルされています。Android Studioパッケージ全体をダウンロードして、JARファイルをクラスパスに配置する必要はなくなりました。代わりに Android SDK Platform Tools パッケージをダウンロードしてください。

    手順:
  • プラットフォーム用のAndroid SDKプラットフォームツールをダウンロードし、ローカル ハード ドライブに解凍します。
  • HeartCore Roboを起動し、Android Over ADB 接続へのパスを指定します。

  • v5.0.2 以前

    以下の煩雑な手動手順を避けるために、できるだけHeartCore Robo v5.0.3以上にアップグレードすることをお勧めします。

  • お使いのコンピュータにAndroid SDKリビジョン18以上をダウンロードしてインストールする:

  • 重要: Android 9デバイスの自動化を有効にするには、ddmlibライブラリバージョン26をダウンロードし、HeartCore RoboのRoboディレクトリ(v4.4.7)に保存するか、手動でクラスパスに配置する必要があります(以下の手順)。2019年5月現在のSDKバージョンには、Android 9と互換性のないddmlib v25が含まれています。

  • MS Windowsのみ:完全なAndroid Studioをインストールした場合adb.exeが含まれるフォルダをユーザーまたはシステムのパスに追加します。
    1. Windowsエクスプローラを開く(Windows + E)
    2. コンピュータを右クリックし、[プロパティ ] を選択します。
    3. [システムの詳細設定]を選択し、[ 環境変数 ]ボタンをクリックします 
    4. PATHユーザー変数を選択し、「編集」 をクリックし、adb.exeを含むフォルダーへのパスをリストの先頭に挿入します。元の値からパスを区切るには、 ';' セミコロンを使用します。新しい値は次のようになります。
       
      <SDK_path>\platform-tools;<originalPaths>

    5. OKで保存してください。

    重要: Java 9では新しいセキュリティ制限が導入され、Javaライブラリ(JAR)のロードが無効になったため、クラスパスを更新する必要があります。

    1. 次のいずれかのオプションを使用してJavaバージョンを確認します。バージョン6,7,8はそれ自体が1.6,1.7、および1.8と識別されることにご注意ください。
    2. Javaがバージョン9以上であれば、HeartCore Roboの起動コマンドを編集し、次のライブラリのフルパスを-classpathリストに追加します。

    MS Windows: <SDK_path>\tools\lib\sdklib.jar;<SDK_path>\tools\lib\guavalib.jar;<SDK_path>\tools\lib\ddmlib.jar;<SDK_path>\tools\lib\chimpchat.jar

    Unix / Linux:    <SDK_path>\tools\lib\sdklib.jar:<SDK_path>\tools\lib\guavalib.jar:<SDK_path>\tools\lib\ddmlib.jar:<SDK_path>\tools\lib\chimpchat.jar

    たとえば、SDKがC:\Android Studio\SDKにインストールされている場合は、完全なHeartCore Roboのstartコマンドは次のようになります。

    java -Xmx512m -classpath robot.jar;jh.jar;activation.jar;mail.jar;poi-3.6-20091214.jar;cron4j-2.2.5.jar;gson-2.5.jar;jna-3.5.1.jar;platform-3.5.1.jar;JNativeHook.jar;"C:\Android Studio\SDK\tools\lib\sdklib.jar";"C:\Android Studio\SDK\tools\lib\guavalib.jar";"C:\Android Studio\SDK\tools\lib\ddmlib.jar";"C:\Android Studio\SDK\tools\lib\chimpchat.jar" com.tplan.robot.ApplicationSupport <CLI parameters>
    Mac OS Xアプリケーションとしてパッケージ化されたロボットを使用してMacメニューから起動する場合は、上記のライブラリへのシンボリックリンクを作成することをお勧めします。ターミナルを起動し、次のコマンドを実行します(<SDK_path>を実際のパスに置き換えてください)。
    cd /Applications/TPlanRobot.app/Contents/Java
    ln  <SDK_path>/tools/lib/sdklib.jar  sdklib.jar
    ln  <SDK_path>/tools/lib/guavalib.jar  guavalib.jar
    ln  <SDK_path>/tools/lib/ddmlib.jar  ddmlib.jar
    ln  <SDK_path>/tools/lib/chimpchat.jar  chimpchat.jar

    2.2 Androidデバイスのセットアップ

    1. Androidデバイスで[USBデバッグ ]オプションを有効にする:
    1. [設定]メニューに戻り、[開発者オプション]を選択し、上部のスライダをオンにしてオプションを有効にします。

    2.3 ロボットと接続する

    1. AndroidデバイスをUSBケーブルでコンピュータに接続します。断続的な接続のクラッシュを引き起こすため、ロボットと接続が開始された後にデバイスを接続することは推奨されません。
    2. HeartCore Roboを起動します。あなたのシステムがLinux/Unixシステムの場合は、rootアカウントからrobot.shを直接起動する必要があります(sudoでは十分ではない場合があります)。
    3. ログオンウィンドウで、"接続タイプ""ADB経由のAndroid"に設定し、Android SDKへのパスを指定します。このパスはユーザー設定に保存され、次回から自動的に入力されます。
    4. コンピュータに複数のAndroidデバイスが接続されている場合は、「デバイスシリアル番号」を設定してくださいフィールドにデバイスのシリアル番号を入力します。あなたは"..." ボタンをクリックするか、あなたのAndroid SDKのフォルダplatform-tools/から"adb devices"を実行することで見つけ出すことができます。または、フィールドを「標準」のままにして、最初に検出されたデバイスに接続します。
    5. HeartCore Robo v4.2以降:「画面転送方法」を選択します。
    6. 接続 をクリックしデバイスに接続します。接続が失敗した場合は、「トラブルシューティング」の章を参照してください。

    2.4スクリーンストリームミラー

    ミラーリングは、MS Windows Vista以降で動作するRobot v4.2以降でサポートされているオプションの画面転送方法です。 AndroidデバイスにMobzappによるScreen Stream Mirr oringアプリケーションをインストールする必要があります。画面データは、ネットワークまたはUSBケーブルを介して転送することができます。画面ミラーリングを有効にする手順:
    1. AndroidデバイスにScreen Stream Mirroringアプリケーションをインストールします。試用版(広告が表示され、数分後にシャットダウンします)評価目的なら使えるでしょう。
    2. アプリが起動していることを確認します。ネットワークに接続している場合は、rtsp://<IP_address>:5000/screen」のようなアドレスを表示する必要があります。表示されたURLが"http://localhost:5000/screen"のようなもの か、RTSP以外のものである場合は、以下の手順を実行します。
      1. 左上のボタンをタップする 
      2. メディアプレーヤーを選択
      3. 戻って、URLが適切に変更されていることを確認してください
    スクリーンストリームミラーリング -  RTSP構成
    1. デバイスがRobotから見えるネットワークに接続されていて、TCP / IP経由の画面データ転送を希望する場合は、他の手順は必要ありません。接続する前に手動でアプリを起動する必要はありません。
    2. あなたは、ネットワークを避け、USBスクリーンのデータ転送を設定する必要があります:
      1. アプリを起動し、左上のボタンをタップしてアプリメニューを開きます。環境設定を選択します。
      2. 下にスクロールし、[ 詳細設定]を設定します
      3. 「USB経由のストリーム」オプションで設定し、左上のボタンをタップして変更を保存します。メイン画面には、rtsp://localhost:5000/screenのアドレスが表示されている必要があります。
    USB命令によるミラーリング

    2.5 パフォーマンスに関する考慮事項

    ミラーストリームのパフォーマンスには、次の要因があります。

    動画が遅くなったり、かなり遅れている場合は、

    3.トラブルシューティング

    Android接続の問題を解決するには、[編集 - > プリファレンス設定] ウィンドウの[ADB経由のAndroid]パネルの設定を利用します。 明白な理由がなくロボットがターゲットデバイスに接続できず、ログまたはログインウィンドウで合理的な説明が得られない場合は、
    adb kill-server
    adb devices
    キーボードとタッチスクリーンのサポートの制限は、「オートメーション」の章に記載されています。未解決の問題が発生した場合は、サポートに連絡しログファイルを添付してください。


    4.自動化


    4.1デバイスへの接続

    テストスクリプトからAndroidデバイスに接続するには、Connectコマンド(TPRスクリプト)またはconnect()メソッド(Javaテストスクリプト)を使用します。引数URLは、"adb:// default"または"adb:// <device_serial_No>"のいずれかの形式でなければなりません。Android SDKパスは、ログインウィンドウにパスを入力してデバイスに一度接続するか、プリファレンスウィンドウの「ADB経由のAndroid」パネルで設定するかのいずれかで、スクリプトを実行する前に設定する必要があります。

    例えば、

    TPRテストスクリプト:    Connect adb://default
    Javaテストスクリプト:    connect("adb://default");

    シリアル番号がMB104PY10519のデバイスに接続するには:

    TPRテストスクリプト:     Connect adb://MB104PY10519
    Javaテストスクリプト:    connect("adb://MB104PY10519");

    画面ミラーデータ転送で設定するには:
    TPRテストスクリプト:     Connect adb://MB104PY10519 screen=mirror
    Javaテストスクリプト:    connect("adb://MB104PY10519", "screen", "mirror");
    もう1つの方法は、パラメータを接続URLクエリにエンコードすることです。この形式は、-c / - connect CLI接続にも適しています。最近使用した接続のURLは、Tools-> CLI Wizardウィンドウからコピーすることができます。もう1つの選択肢は、デスクトップ - >接続マネージャーウィンドウで接続名を指定し、URLの代わりに使用することです。
    TPRテストスクリプト:     Connect adb://MB104PY10519?screen=mirror
    Javaテストスクリプト:    connect("adb://MB104PY10519?screen=mirror");

    4.2画面回転の扱い

    ADB接続は、2つの画面回転モードをサポートしています。モードを変更するには、プリファレンス設定ウィンドウの「ADB経由のAndroid」パネルに移動します。

    1.自動画面回転(デフォルト)
    自動モードでは、画面の更新ごとにデバイスから画面の向きを読み取り、それに応じて回転させます。これが画面のパフォーマンスに重大な影響を与えるため、手動モードに切り替えるか、高性能が要求される一定の画面方向に対して自動化ロボットを設計することをお勧めします。

    2.画面の手動回転

    このモードでは、F4キーを押して手動で(またはスクリプトから)ロボットビューで画面を回転させる必要があります。この動作は、Droid VNCサーバーと互換性があります。

    タッチスクリーンイベントが適切に配置され、イメージ比較が期待どおりに機能するように、ロボットのビューを実際のデバイス状態と常に一致させてください。

    正解
                 
    不適切な表示
    正解

    不正確なビュー
    画像比較
    を使用してコンポーネントを検索すると、タッチスクリーンイベント
    正しく配置されません。

    4.3タッチスクリーンの自動化

    タッチスクリーンアクションは、以下のようにマッピングされます。

    デバイスアクション
    コンピュータアクション
    テストスクリプトアクション
    タップ(タッチ)
    マウスの左クリック
    マウスのクリックコマンド(TPRスクリプト)またはmouseClick()メソッド(Javaのスクリプト)を呼び出します。
    長いタップ(タッチ)
    長い左クリック
    マウスの押下WaitおよびMouseのリリースコマンドまたは対応するJavaメソッドのシーケンスを呼び出します。
    スワイプ(ドラッグ) マウスドラッグ(左ボタンダウン)
    コールマウスドラッグコマンド(TPRスクリプト)またはの1 mouseDrag()メソッド(Javaのスクリプト)を呼び出します。
    ピンチ(2本の指でズーム)
    ピンチ/ズーム操作
    マウスピンチ/ズームコマンド(TPRスクリプト)または mousePinch() またはmouseZoom()
    メソッド(Javaのスクリプト)を呼び出します。v3.5以降でサポートされています。Android OS 4.3以降を実行するデバイスが必要です。
    戻る(戻す)
    右クリック
    コールMouse "click" btn=rightコマンド(TPRスクリプト)もしくはmouseRightClick()メソッド(Javaのスクリプト)を呼び出します。
    または、Press "back"コマンド(TPRスクリプト)もしくはpress("back")メソッド(Javaのスクリプト)を呼び出します。

    v3.5.2以降では、UIAutomatorインターフェイス上でマウスクリックを実行するオプションがサポートされています。これは、通常、特定のアプリコントロールのために時折タッチスクリーンの失敗を解決します。Android 4.1.2以降が必要です。

    4.4キーボードの自動化

    スクリプトのタイプをテキストにするには、Type またはTypelineコマンド、またはtype() / typeLine() Javaメソッドを呼び出します。キーボードキーを押すには、Pressコマンドまたはpress() メソッドを呼び出します。キーボードイベントは次のようにサポートされています:
    Androidデバイスキー
    コンピュータ/スクリプトキー
    (アクション)

    説明
    戻る(戻す)
    Escape、右マウスクリック
    戻るキー。
    電話
    PageDown
    コール(電話)キー。
    カメラ
    F6
    カメラキー。カメラアプリケーションの起動や写真の撮影に使用します。 
    クリア
    F7
    クリアキー。
    DEL
    BackSpace
    バックスペースキー。挿入ポイントの前にある文字を削除します。
    DPAD_DOWN
    Down(Arrow Down)
    Mouse wheel down
    方向パッドダウンキー。トラックボールの動きから合成することもできます。
    DPAD_LEFT
    Left(Arrow Left)
    指向性パッド左のキー。トラックボールの動きから合成することもできます。
    DPAD_RIGHT
    Light(Arrow Right)
    方向パッド右キー。トラックボールの動きから合成することもできます。
    DPAD_UP Up(Arrow Up)
    Mouse wheel up
    方向パッドアップキー。トラックボールの動きから合成することもできます。
    通話終了
    End
    通話終了キー。
    フォーカス F5
    カメラフォーカスキー。カメラの焦点を合わせるときに使用します。 
    ホーム
    Home
    ホームキー。このキーはフレームワークによって処理され、アプリケーションには提供されません。
    メニュー
    PageUp
    メニューキー。
    通知
    F9
    通知キー。通知のリストを表示するために使用します。
    パワースイッチ
    F10
    電源ボタン。
    サーチボタン
    F3
    検索キー。
    SOFT_LEFT
    F1
    左ソフトキー。通常、電話機のディスプレイの下にあり、ディスプレイの左下に表示
    されるソフトウェア定義機能を選択するための多機能機能キーとして使用されます。
    SOFT_RIGHT
    F2
    右ソフトキー。通常、電話機のディスプレイの下にあり、ディスプレイの右下に表示
    されるソフトウェア定義機能を選択するための多機能機能キーとして使用されます。
    SYM
    F8
    シンボル修飾キー。代替シンボルの入力に使用されます。
    ほとんどのデバイスでは、「入力方法の選択」ウィンドウがポップアップします。
    ボリュームダウン F11
    音量ダウンキー。スピーカーの音量を下げます。
    ボリュームアップ F12
    ボリュームアップキー。スピーカーの音量を調整します。