#はじめに
こんにちは。CYBIRD Advent Calendar 2021 5日目の@kappysanです。4日目は@chikako_ikedaさんのTargetSDK30対応でハマったことでした。
何か新しいものをインストールするときってハマりがちですよね。ひとりで調べて解決できる力をつけていきたいです。
#Device Farmer
Device Farmerを使うとリモート端末でテストを行うことができます。
リモートワークが当たり前になったCYBIRDにとってはとても重要なサービスです。
私は新卒一年目なのですが、新卒技術研修中にMacにDevice Farmerをインストールしたので、その手順とトラブルシューティングについてまとめました。
要件
様々な依存関係のインストール
オープンソースなのでGithubの英語ドキュメントを参考に進めます。
インストールする前に、予め要件を満たしておく必要があります。
要件を満たすために必要な依存関係をインストールします。
brew install rethinkdb graphicsmagick zeromq protobuf yasm pkg-config cmake
これでnodeとadb以外がインストールできました。
nodeのインストール
次にnodeをインストールします。
こちらを参考にnodeをインストールしました。
しかし、この記事の通りにnodeをインストールすると要件を満たせないことに気づき、後でアンインストールすることになりました。
また、ここではvimの操作が必要になります。
私はまだ不慣れなのでこちらを見ながら慎重に操作しました。
要件を満たせなかった理由ですが、バージョンが合わないためです。
先ほどの記事をそのまま真似ると最新版のnodeがインストールされますが、要件ではv8.xが推奨されています。
そのためこちらを参考にnodeを入れ直しました。
nodeのバージョン一覧を見てv8.xの中で最も新しいv8.17.0をインストールしました。
adbのインストール
次にadbをインストールします。
こちらを参考にインストールしました。
Android Studioのインストールからはじまります。
パスを通すところではAndroid SDK locationのファイルパスの場所が記載の通りに探せなかったので、こちらを参考にしてパスを見つけました。
インストール
要件が揃ったのでDevice Farmerをインストールします。
npm install -g @devicefarmer/stf
ここでxcodeのコマンドライン・デベロッパ・ツールをインストールしてください、とポップアップが出てきたのでインストールしました。
私がインストールしたのはv12.4です。
調べるとhomebrewを利用するためにこれが必要なようなので、それでインストールするよう求められたのだと思います。
これで実行する準備は整いました。
ビルド
開発の場合は実行する代わりにビルドする必要があります。
npmおよびbowerモジュールをフェッチします。
npm install
次にモジュールをリンクしてコマンドラインから直接コマンドにアクセスできるようにします。
npm link
ここでエラーが出ました。
しかし、今回は実行ができればよく、これはできなくても問題ないのでスルーしました。
実行
いよいよ実行していきます。
ホームディレクトリにrethinkdbというディレクトリを作成しました。
このディレクトリに移動します。
cd rethinkdb
RethinkDBを起動します。
rethinkdb
Server ready, ...と準備が整います。
こちらのターミナルは放置し、ここからは別のターミナルで作業します。
新たなターミナルを新規ウインドウで立ち上げます。
ここで先ほど作ったディレクトリに移動します。
cd rethinkdb
さらにこの中にrethinkdb_dataディレクトリができているはずなのでそこに移動します。
cd rethinkdb_data
こちらのターミナルではまだ.bash_profileを読み込めていないので、読み込みます。
source ~/.bash_profile
.bash_profileでnodeとadbの両方をexportしていたのでこれで両方読み込めます。
stfを起動します。
stf local
http://localhost:7100にアクセスします。
nameとEmailが必要です。
デフォルトで以下のように入力すると入れるようになっています。
name: administrator
email: administrator@fakedomain.com
ケーブルでPCにAndroid端末を接続すると自動で認識されます。
これで成功……のはずでしたがcode1エラーが発生し、端末自体は認識するものの、準備中から進まなくなってしまいました。
issuesを見ると、ハードウェアの問題となっています。
本当にハードウェアの問題か確認するためにエミュレータでも実行してみることにしました。
エミュレータの利用
エミュレータはadbを導入するときに入れたAndroid Studioを使います。
こちらを参考に起動しようとしましたが、No target device foundとエラーが出ました。
デバイスを選択していなかったことが原因のようでこちらを参考にデバイスを選択すると起動できました。
もう一度stfを起動します。
stf local
http://localhost:7100にアクセスします。
エミュレータのデバイスが認識され、デバッグ可能な状態になりました。
エミュレータで成功したので、どうやら本当にハードウェアの問題のようです。
ハードウェアに問題がなければ上記の方法でもAndroid端末を認識してデバッグ可能な状態に持っていけると思います。
感想
まだ新しめのオープンソースでネットに情報が少ないものをインストールするのは初めてでいい経験になりましたし、先駆者のありがたみを改めて痛感しました。
トラブルシューティングのアドバイスをくださった品質管理部のみなさん、ありがとうございました。
明日のCYBIRD Advent Calendar 2021 6日目は@cy_ssssが担当します。
ありがとうございました。