本記事は Android 初心者 Advent Calendar 2018 3 日目の記事です。
私が Android 開発を行うにあたって、もっと早く知っていれば…と思ったいくつかの Tips を紹介します。
Android Studio の声に Alt+Enter で応える
Android Studio(以下 AS)は優秀な IDE なので、様々な場面で的確なエラーや警告を出して開発を強力にサポートしてくれます。このメッセージは F1 や Alt/Option+F1 を押すと見れるように AS にも表示されますが、更にここで Alt+Enter を押すとエラーや警告に適した自動修正の候補を AS が提案してくれます。
例えば IOException や ParseException などの検査例外を try/catch していないとエラー表示がされますが、ここで Alt+Enter を押すと適切な try/catch で囲ってくれます。更には埋め込み文字列の string.xml への展開や、連結文字列⇔StringBuilder の相互変換、@SuppressWarning の挿入なども可能です。
Ctrl/Cmd+Alt/Opt+L でコードのオートフォーマット
これは無いと普通に不便なので知っている人が多いかもしれませんが、IdeaVim を使っている人は = でインデント整形が可能なのでもしかしたら知らない人もいるかもしれません(私がそうでした)。
Java/Kotlin などのコードは普通に書いても比較的整い易いですが、layout などの xml ファイルは書き方によって見辛くなり易いので必ずこれで整えるようにしています。属性の順序も規則通りに入れ変えてくれるので迷うことがありません。
最近はオートフォーマッターが流行っているので、プロジェクト内で意思を疎通して https://qiita.com/konifar/items/1f56c82490986d1613a8 のように自動で動くよう設定するのもいいかもしれません。
adb exec-out で端末からの標準出力を利用する
adb コマンドを利用してスクリーンキャプチャやアプリ内データのダンプなどを行うことは比較的よくあるかと思います。しかし adb shell
コマンドは pty を介すので標準出力が mangle されてしまい、screencap や cat を直接リダイレクトすることが出来ません(データが破損することがある)。
こういった場合には adb exec-out
コマンドを利用します。
# スクリーンキャプチャを直接マシンローカルにリダイレクトし png で保存する
adb exec-out screencap -p > ~/Downloads/out.png
# アプリ内 sqlite db を cat で標準出力させマシンローカルにリダイレクトし保存する
adb exec-out run-as your.package.name cat databases/data.db > data.db
こうすることで端末内に一時ファイルを作成せず、ローカルにファイルを出力・取得することが出来ます。
しかし adb exec-out
は help を見ても出なかったりとアンドキュメンテッドな部分があるので、もしかするといつぞや使えなくなったりするのかもしれません。
adb over TCP/IP を積極的に利用する
adb over TCP/IP は聞いたことがあるという人も多いかと思いますが、USB 接続で不便していないので使ったことが無いという方もまた結構いるのではないでしょうか。
ドキュメントもありますし解説記事も多く特に難しいわけでもないので方法自体は割愛しますが、敢えて取り上げた理由があります。それはデバッグの為に頻繁に端末をケーブルで接続していると、端末側のコネクタが消耗・故障してしまうことがある為です。
インターネット上の様々な記事では耐久度は MicroUSB でおよそ 3000 回、USB Type-C では 10000 回程度が通説となっているようですが、これが十分かと言われると個人的には心許ない気がしています。また実際に Type-C コネクタを持つ端末が 1 度駄目になってしまったこともありました。adb over TCP/IP を積極的に利用することでこういった事態を防ぐことが出来そうです。
まとめ
以上、コードからやや離れましたがすぐにでも使える Tips で固めてみました。皆さんのこれからの Android 開発のお役に立てば幸いです。