LoginSignup
3
2

More than 5 years have passed since last update.

パッケージ名が必要なadbコマンドを、パッケージ名を省略して使う

Posted at

先日、以下のような記事を書きました。

コマンドでAndroidのアプリ情報画面を起動する - Qiita [キータ]

appinfo パッケージ名 でアプリ情報画面を表示させるコマンドを用意したのですが、今度はパッケージ名を打つのが面倒になってきました。

なんとか現在開発中のアプリを推測して、パッケージ名の入力を省略できないものか考えました。

  • パッケージ名はどこから取るか → AndroidManifest.xml から取るのが確実
  • 開発中のアプリはどう推測するか → 開発中はgitコマンドを打つためにだいたいプロジェクトのディレクトリ(AndroidManifest.xmlと同じディレクトリ)にいる

この条件下なら意外と簡単そうです。
とりあえず、以下のコマンドでAndroidManifest.xmlからパッケージ名を取得出来ました。

コマンド
grep package= AndroidManifest.xml | cut -d '=' -f 2

コマンドは詳しくないので、簡単な方法しかわかりませんでした。
以下のように1行にpackageのみ書かれていないとうまく動きません。

AndroidManifest.xml
<?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としました。

.bashrc
alias mypkg='grep package= AndroidManifest.xml | cut -d '=' -f 2'

続いて、前回のappinfo パッケージ名と組み合わせて呼べるようにします。
関数はexport -fしないとうまく呼べないようです。
あとアンインストールコマンドも引数なしで呼べるようにしました。
以下の様な形になりました。

.bashrc
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

上でも書いたとおり、コマンドは詳しくないので、きっともっと良い書き方があるんだろうな、と思っています。
が、まずは動いたので良しとします。以上です。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2