LoginSignup
1
0

More than 3 years have passed since last update.

AWS Device FarmのホストマシンにAndroid SDKをインストールする

Posted at

AWS Device FarmのホストマシンでAndroid SDKを利用する方法をメモする。

なお通常Device Farmのホストマシンでは、ビルド済みのapkを端末へインストールする程度のことしか行わないので、基本的にAndroid SDKは必要ない。( adb などの platform-tools はプリインストールされているので)

とはいえ、あると便利な場合もまれにある(ホストマシン上でapkのビルドをしたいなど)ので、ここで方法をまとめる。

はじめに

AWS Device Farmのテスト実行環境は、

  • モバイル端末(クライアント)
  • そのクライアントと接続されたLinuxサーバー(ホスト)

から構成されている。

今回は、上記のホストマシンにAndroid SDKをインストールする方法をまとめる。

方法

Device Farmのカスタムテスト環境の機能を用いる。
適当なスタンダードテスト環境に対して、カスタマイズした test_spec.yml をアップロードすれば良い。

test_spec.yml
phases:
  install:
    commands:
      - mkdir ~/android_sdk
      - cd ~/android_sdk
      # download and install commandline tools
      - curl https://dl.google.com/android/repository/commandlinetools-linux-6858069_latest.zip -o sdk.zip
      - unzip sdk.zip
      # set environment variables for android sdk
      - export ANDROID_HOME_OLD=$ANDROID_HOME
      - export ANDROID_HOME=$HOME/android_sdk
      - export ANDROID_SDK_ROOT=$HOME/android_sdk
      # install android sdk
      - yes | $ANDROID_HOME/cmdline-tools/bin/sdkmanager "build-tools;28.0.3" "platforms;android-29" --sdk_root=$ANDROID_HOME
      # use existing platform-tools (which is a specific build for AWS device farm)
      - rm -rf $ANDROID_HOME/platform-tools
      - ln -s $ANDROID_HOME_OLD/platform-tools $ANDROID_HOME
      - export PATH="$PATH":"$ANDROID_HOME/platfom-tools"
      # return to the previous directory
      - cd -

ポイントは下記3点:

1. commandline toolsを利用した最小限のインストール

Android Studioをインストールすると必要なものが全部入る認識だが、サイズが大きく不要なものも多いので、今回は利用しない。
sdkmanager を利用すると、必要なものだけをインストールできる。参照

また、Command line toolsのURLはこちらから入手できる。

2. platform-tools は既存の物を使う

新規にインストールされるplatform-toolsを利用すると、端末との通信ができなくなるなどの不具合があった。
もともとインストールされているplatform-toolsは、AWS Device Farm用にカスタマイズされたものらしい。
このため、新しい$ANDROID_HOME下にシンボリックリンクを張って、既存のplatform-toolsが参照されるようにする。

3. test_spec.yml のアップロード方法

文法はこちらを参照: Working with Custom Test Environments in AWS Device Farm

アップロードする際は、既存のスタンダードテスト環境をベースに、カスタムされたtest_spec.ymlをアップロードする形になる。

Appium等を用いる場合は、素直に対応する環境を選べば良い。
一方で、Flutter driveを用いる場合は、そもそも対応するスタンダード環境が存在しない。

この場合は、適当な環境(e.g. APPIUM_PYTHON)を選んだ上で、テストパッケージもアップロードし、その上で test_spec.yml をアップロードする。
次のStackoverflowに方法がまとめられている: Running Flutter Integration Tests in AWS Device Farm, Saucelabs, Firebase Test Lab etc

以上です。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0