雑にAPKを管理しやすいファイル名にしたい


前置き

よくリリースAPKを作って、Driveに保存したりするのだけど、 app-develop.apk みたいな名前だと管理しにくい。
いい感じの名前に変えてくれる君を書いたのでメモ。

分かりやすい名前

APKの特徴を表す情報がほしい

  • PackageName
  • VersionName

いつ作ったのか知りたい (同じversionでAPK作り直しとかあるので)

  • Year/Month/Day/Hour/Minute/Second

これらを統合して次のような名前のAPKがよさそう

  • <packagename>-<version>-<%Y%m%d%H%M%S>.apk
  • me.mattak.example-0.0.1-20161013112233.apk

Script

apkup
#!/usr/bin/env ruby

AAPT=`find #{ENV['ANDROID_HOME']}/build-tools -type f -name 'aapt' | sort -r | head -1`.chomp
raise "aapt not found" unless File.exist? AAPT

if ARGV.size > 0
  APK_SRC=`find . -type f -name '*.apk' | grep -v unaligned | grep #{ARGV[0]} | peco --select-1 --prompt 'Source>'`.chomp
else
  APK_SRC=`find . -type f -name '*.apk' | grep -v unaligned | peco --select-1 --prompt 'Source>'`.chomp
end

LINE=`#{AAPT} dump badging #{APK_SRC} | grep package:`.chomp
LINE.sub (/name='(\S+)'/) {|it| PACKAGE = $1 }
LINE.sub (/versionName='(\S+)'/) {|it| VERSION = $1 }

FILE="#{PACKAGE}-#{VERSION}-#{Time.now.strftime('%Y%m%d%H%M%S')}.apk"
`cp #{APK_SRC} #{FILE}`
puts FILE

雑にこんな感じの書いて使ってる.
pecoだけinstallが必要なので注意.
APKだけあれば、Directoryの場所を気にせず実行できるのでべんりだ.