動機
先日、Google Pixel 3aを購入した。 付属のアダプタを使用して古いAndroid端末からデータを移行してみたが、すべてのアプリのデータを移行できるわけではなかった。 仕方ないのでアプリをひとつひとつ開いてデータの移行ができているかチェックすることにしたのだが、結構な量のアプリがあるから、チェックリストを作りたくなった。 そこで、インストール済みアプリの一覧を出力するワンライナーを書いた。
前提
ADBコマンドを使える状態である。
ワンライナー
adb shell pm list package -3 \ | cut -d: -f2 \ | sort \ | while read pkg do url="https://play.google.com/store/apps/details?id=${pkg}" app=$(curl -s "${url}" \ | grep -o '<title id="main-title">.*</title>' \ | sed -e 's/<[^>]*>//g' -e 's/ - Google Play の Android アプリ//g' -e 's/ - Apps on Google Play//g') echo -e "${pkg}\t${app}" sleep 1 done \ | tee 3party_applist.tsv
出力例
air.jp.lptc.molee.enterprise.kiriharanomori きりはらの森 app.greyshirts.firewall NoRoot Firewall co.speechnotes.speechnotes Speechnotes - Speech To Text
パッケージ名だけだと何のアプリかわかりづらいから、Google Playで表示されるアプリ名も一緒に出力する。
それから、GoogleスプレッドシートやExcelに貼り付けやすいようにTSV形式で出力するようにした。
Macなら cat 3party_applist.tsv | pbcopy
でクリップボードにコピーして、スプレッドシートにペーストすればチェックリストの出来上がり。