AWS DeviceFarmでAndroidアプリを実行する方法

UnsplashのMattHowardによる写真

このブログ投稿では、AWS Device FarmでAndroidアプリを準備、構築、実行する方法について説明しています。この記事は、モバイルエンジニアとQEを対象としており、将来複製する必要がある場合に私たちの生活を楽にするソリューションのドキュメントを提供します。このブログ記事を書きましたウラジミールValouchとズデニェクPapez。

私たちの挑戦の物語

さまざまなモバイルデバイスでスケジュールされたタスクのパフォーマンスを測定するアプリがあります。できるだけ多くの物理デバイスでいつでもアプリを実行できる必要があります。アプリは、システムにログインして操作できる必要があります。

物理デバイスが必要なため、さまざまな物理デバイスとアプリを実行する方法を備えたプラットフォームを探しました。幸い、検索は簡単でした。AWS Device Farm、Google Firebase Labs、Azure DevLabs、Sauce Labsなど、多くの同様のサービスが存在します。もう1つのオプションは、モバイルファームを構築することでしたが、それは私たちの主な目標から注意をそらすことになります。AWS Device Farmは、テスト用に多くの物理モバイルデバイスとWebブラウザーへの管理されたアクセスを提供するサービスです。私たちにとって重要なのは、これらのデバイスやブラウザを保守する必要がないということです。使い方は簡単で、必要なデバイスがあり、AWSですでに他のサービスを使用しています。したがって、AWS DeviceFarmが最終的な選択でした。

私たちのもう1つの課題は、クラウドで実行されているモバイルデバイスに資格情報を渡す方法を決定することでした。モバイルデバイスはDockerコンテナーを実行できないため、Dockerコンテナーで環境変数を使用するような単純なソリューションは適用できません。さらに、資格情報をアプリに直接コンパイルすることは避けたかったのです。したがって、テストを開始するときにコマンドラインから値を渡す方法の解決策を探しました。

アプリの準備

アプリがさまざまなユーザー認証情報、テスト仕様、テストスケールフィルター、またはその他の外部パラメーターにアクセスする必要がある場合は、カスタムAndroidJUnitRunnerを実装することでそれらを提供できます。

カスタムtestInstrumentationRunnerは、特定のGradleモジュールのbuild.gradleファイルで構成する必要があります。

android{
  defaultConfig{
    testInstrumentationRunner “my.pkg.ParametrizedTestRunner”
  }
}

adb shell am instrument -w -e USERNAME testUser -e PASSWORD pass123 my.pkg.test/my.pkg.ParametrizedTestRunner

パッケージがリストにない場合は、gradleタスクを使用してインストールします。

$ gradle :{$project}:installDebugAndroidTest

次のコマンドは、AWS DeviceFarmに必要なAPKファイルをビルドします。

#Run the command in the base dir of your project
./gradlew clean build cC

AWS DeviceFarmでのプロジェクトの作成

このセクションでは、AWS Device Farmでプロジェクトを作成し、実行用に設定する方法について説明します。以下のセットアップはブラウザを使用して手動で完了しますが、表示する内容を自動化する方法については、DeviceFarmのBoto3ドキュメントを確認することを強くお勧めします。

まずブラウザでAWSにログインし、次に「デバイスファーム」セクションに移動して「新しいプロジェクトを作成」をクリックします。次のステップは「プロジェクト名」を入力することなので、好きなものを入力して「プロジェクトの作成」をクリックします。

プロジェクトの作成後、「プロジェクト設定」に移動して「実行タイムアウト」を最適化することをお勧めします。最初のテストでは、5分の値で十分だと思います。テストの初期設定には、「TinyDevicePool」のようなものを作成することをお勧めします。

実行構成

ここでは、デバイス自体で実行を設定し、設定の結果は、選択したデバイスプールに対して実行されるようにスケジュールされています。

プロジェクトに移動し、「実行」をクリックします。次のステップでは、「AWS用のAPKファイルのビルド」で作成したアプリAPKをアップロードし、「次へ」をクリックして「構成」ステップに進みます。Device Farmでパラメーター化されたインストルメンテーションを実行するには、「テストの構成」ステップで「カスタム環境でテストを実行する」を選択する必要があります。

カスタムテスト環境を選択すると、上記のように、adb shell am instrumentコマンドを調整し、カスタム-eパラメーターとランナークラスを提供できます。

新しい実行

「サービス名が長すぎる」問題

パラメータが長すぎると、「サービス名が長すぎます」というエラーが発生する可能性があります。これはadb shell、1024バイトまでの入力テキストのみを受け入れるという制限によるものです。

解決策は、長いコマンドをファイルに保存し、それをデバイスにプッシュしてから、を使用して実行することadb shell shです。

デバイスファームでこのトリックを実行している完全なTestSpecyamlを参照してください。

最後の言葉

記事に欠けているものを見つけたり、詳細について質問がある場合は、コメントを残してください。このブログ投稿は、さまざまなディスカッションフォーラム、公式ドキュメント、および私たち自身の経験で見つけた、フィルターと並べ替えられた情報のコレクションです。私はへの大きな感謝と言いたいクリス・イスマエル、ヤクブSNOR、ロバート・リードとズデニェクPapezを記事の口コミを彼らの助けのために、。

AWS DeviceFarmでiOSアプリを実行する方法

提案された投稿

マルチモジュール プロジェクトで Dagger2 から Hilt に移行する

マルチモジュール プロジェクトで Dagger2 から Hilt に移行する

マルチモジュール プロジェクトで Dagger から Hilt に移行するためのステップバイステップ ガイド。プロジェクトの構造 プロジェクトを視覚化するには、NetworkModule、StorageModule、CommonModule、FeatureModule などの複数のモジュールが含まれています。

アンドロイド | Gboard がタブレット用の新しいレイアウトで更新されました

Google は、Pixel Fold と Pixel Tab の発売に合わせてキーボードのレイアウトを更新しました。

アンドロイド | Gboard がタブレット用の新しいレイアウトで更新されました

Google は最近、Android 用の Gboard キーボード アプリを更新し、タブレット向けに最適化された新しいレイアウトを追加しました。今朝、入力しにくいことに気づき、よく調べてみると、キーボードが交換されていることがわかりました。

関連記事

ライティングスキルを向上させる実証済みの 3 つの方法

書くことの利点とそれを助けるための戦略

ライティングスキルを向上させる実証済みの 3 つの方法

2022 年には GPT-3 がリリースされるため、ライティング スキルの重要性は低くなるようです。AI を使えば、文章が苦手な人でも質の高い人材を生み出すことができます。

キリスト教徒の迫害: 私たちが語らないヘイトクライム

イスラム嫌悪のことは忘れてください。宗教的憎悪犯罪の主な犠牲者はキリスト教徒(そしてユダヤ人)です。

キリスト教徒の迫害: 私たちが語らないヘイトクライム

理性的な人なら誰でも、政界とメディア界が左派、さらには極左によって支配されており、政治的言説に不均衡を生み出している状況を知っています。宗教の分野では、この不均衡は明らかです。左翼の新聞やネットワークは急いでキリスト教の信仰を擁護していません。

仕事週間で学ぶことはあなたが思っている以上に重要です

仕事週間で学ぶことはあなたが思っている以上に重要です

私たちは、自分にとって良いとわかっていることを実行するのに苦労していることによく気づきます。大切な人に愛していると伝えることから、海賊のように話すことを忘れないことまで、すでにそうしたことを行っているため、1日、1週間、または1か月のイベントは必要ないと主張する人が常にいます。

脅威ハンティングのための OSINT の収集

脅威ハンティングのための OSINT の収集

サイバー愛好家の皆さん、こんにちは!OSINT for Threat Hunting シリーズへようこそ。最初の記事では、OSINT の概要と脅威ハンティングにおけるその重要性について説明しました。