先日、以下のような記事を書きました。
コマンドでAndroidのアプリ情報画面を起動する - Qiita [キータ]
appinfo パッケージ名
でアプリ情報画面を表示させるコマンドを用意したのですが、今度はパッケージ名を打つのが面倒になってきました。
なんとか現在開発中のアプリを推測して、パッケージ名の入力を省略できないものか考えました。
- パッケージ名はどこから取るか → AndroidManifest.xml から取るのが確実
- 開発中のアプリはどう推測するか → 開発中は
git
コマンドを打つためにだいたいプロジェクトのディレクトリ(AndroidManifest.xmlと同じディレクトリ)にいる
この条件下なら意外と簡単そうです。
とりあえず、以下のコマンドでAndroidManifest.xmlからパッケージ名を取得出来ました。
grep package= AndroidManifest.xml | cut -d '=' -f 2
コマンドは詳しくないので、簡単な方法しかわかりませんでした。
以下のように1行にpackageのみ書かれていないとうまく動きません。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.app"
android:versionCode="1"
とりあえず、自分の環境では動いたので良しとします。
これをエイリアスとして登録しておきます。
名前はmypkg
としました。
alias mypkg='grep package= AndroidManifest.xml | cut -d '=' -f 2'
続いて、前回のappinfo パッケージ名
と組み合わせて呼べるようにします。
関数はexport -f
しないとうまく呼べないようです。
あとアンインストールコマンドも引数なしで呼べるようにしました。
以下の様な形になりました。
appinfo() {
adb shell am start -a android.settings.APPLICATION_DETAILS_SETTINGS -d package:$1;
}
export -f appinfo
alias mypkg='grep package= AndroidManifest.xml | cut -d '=' -f 2'
alias infpkg='mypkg | xargs -I % bash -c "appinfo %"'
alias rmpkg='mypkg | xargs adb uninstall'
これでAndroidManifest.xmlと同じディレクトリにいるときであれば、わざわざパッケージ名を入力しなくても良くなりました。
使うときは以下のとおりです。
# アプリ情報を表示するとき
infpkg
# アプリをアンインストールするとき
rmpkg
上でも書いたとおり、コマンドは詳しくないので、きっともっと良い書き方があるんだろうな、と思っています。
が、まずは動いたので良しとします。以上です。