メソッド数調査、エミュレーターのファイルダウンロードなどを楽にする Android プロジェクト用のシェルスクリプト
アクトインディ Advent Calendar 2016 13日目の記事になります。子どもとおでかけ情報アプリ「いこーよ」は、マップ上で簡単におでかけ先を探せる検索アプリです。記事を見てくれたパパさん、ママさん、ぜひ一度使ってみてください^^
今回の記事は Android プロジェクト用に利用しているシェルスクリプトについて書きたいと思います。一つ一つは簡単なコマンドですが、頻繁に利用しないとすぐコマンド忘れてしまうので、覚えなくても良いコマンドはシェルスクリプトに書くようにしています。
現在のメソッド数を確認する
ライブラリを導入する際は、導入前、導入後でメソッド数を計測し、導入すべきか検討するようにしているので、開発初期は結構使います。./gradlew clean assembleDebug
はいらないかもしれません。
dex.sh
./gradlew clean assembleDebug ~/tools/dex-method-counts/dex-method-counts app/build/outputs/apk/app-debug.apk
- dex-method-counts をインストールする場所は任意です
- プロジェクト直下に dex.sh を置いていることを想定した path です
実行結果
Read in 49829 method IDs. <root>: 49829 <default>: 1 a: 22 android: 14348 accounts: 3 ... Overall method count: 49829
dex-method-counts の導入方法
github に公開されているソースを適当なディレクトリにダウンロードするだけです
今回の例では ~/tools
にインストールすることにします
cd ~/tools
git clone https://github.com/mihaip/dex-method-counts.git
Realm ファイルを adb でダウンロードする
Realm に格納されているデータを見たい時に便利です。RealmBrowser を入れている場合は、実行後に open default.realm で RealmBrowser を開くことができます。
fetch_realm.sh
adb kill-server
adb root
adb pull /data/data/com.example.sample/files/default.realm
実行結果
シェルを実行すると以下のファイルがダウンロードされます。
- default.realm
- default.realm.lock
- default.realm.management/
keyhash の取得
Firebase や Line SDK を導入する際に必要になるのですが、利用するシーンが少なく、すぐ忘れてしまうので。Debugビルド用です。
key-hash.sh
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore -list -v -storepass android
実行結果
別名: androiddebugkey 作成日: 2017/01/01 エントリ・タイプ: PrivateKeyEntry 証明書チェーンの長さ: 1 証明書[1]: 所有者: C=US, O=Android, CN=Android Debug 発行者: C=US, O=Android, CN=Android Debug シリアル番号: 1 有効期間の開始日: Mon Sep 30 10:00:00 JST 2017終了日: Wed Sep 23 10:00:00 JST 2100 証明書のフィンガプリント: MD5: ************ SHA1: ************ SHA256: ************ 署名アルゴリズム名: ****** バージョン: 1
Git のブランチ整理
プルリクエストが master にマージされた後などに良く実行しています。master ブランチを最新にして、既に master ブランチにマージされたローカルの作業ブランチを削除してくれます。
pull_and_fetch.sh
git checkout master && git pull origin master && git fetch -p origin && git branch --merged | grep -vE '^\*|master$|develop$' | xargs -I % git branch -d %
その他
プロジェクトの git の管理対象にならないように .git/info/exclude に以下のように設定して git 管理対象外になるようにして利用しています。
pull_and_fetch.sh fetch_realm.sh default.realm default.realm.lock default.realm.management/ dex.sh key-hash.sh