pm list コマンド
androidアプリ開発をしている場合は、adb コマンドは必須でしょう。adbコマンド以外にもいくつもAndroid SDK DevGuide Toolsに記載されているようなコマンドが提供されています。
今回紹介する pm list コマンドは、上記のようなSDKが提供しているコマンドではなく、端末内で提供されているコマンドです。これはどういう意味かというと、端末のバージョンや開発元(HTCやSamsungなど)によって利用できるものが異なるということです。
3台の端末(emulator込み)の比較
Androidバージョンの異なる2台の端末とエミュレータで pm list コマンドのオプションの比較を行います。差分は、pm list libraries コマンドのみ(pm clear PACKAGEはあまり利用しないだろうと独断と偏見で除外)がAndroidVersion 2.3(今回の場合、Nexus Sとエミュレータ(2.3.3)で提供されていました。
Nexus S(Version:2.3.6, Build number:GRK39F)と Emulator(Version:2.3.3)
IS03(Version:2.2.1, Build number:01.01.08)
pm list libraries コマンド
このコマンドは何を表示してくれるものかというと以下の実行結果のように端末の中に入っているライブラリを一覧表示してくれます。このライブラリを必要とするアプリ(Google Maps を利用しているアプリやusb.accessoryを利用しているアプリなど)は、インストーラーが端末側に利用するライブラリが存在するかどうかを確認し、存在しなければ以下のようなエラーメッセージ(INSTALL_FAILED_MISSING_SHARED_LIBRARY)が表示されて、アプリのインストールが失敗します。
必要なライブラリが端末に存在しない場合のエラーメッセージ(例として、ADKのサンプルアプリDemoKitLaunchをlibrary:com.android.future.usb.accessory が搭載されていない端末にインストールした場合)
Nexus S への pm list libraries コマンド
Android Emulator(Version;2.3.3) (作成時のtarget は、Google APIs ではない方)
結論
- 今回の調査対象とした Nexus S(2.3.6)や emulator(2.3.3)にはpm list に追加オプション(libraries)が存在
- 但し、2.3(GB)の全端末で提供されているかどうかは不明。(ありそうな気がしますが・・・)
- アプリインストール時に利用ライブラリがないエラーがでた場合に、pm list libraries で調査が可能
- 2.2以下でpm list libraries が提供されていない場合の調査方法は不明。(adb install してみるしかない?)
ほむ
ほむ / “adb shell pm list コマンドの端末やOSバージョンごとの違いを調査 | Bescottee” http://t.co/ICR3pE9K
adb shell pm list コマンドの端末やOSバージョンごとの違いを調査 | Bescottee – http://andbrowser.com/develop...
[Android] / “adb shell pm list コマンドの端末やOSバージョンごとの違いを調査 | Bescottee” http://t.co/E3eWU4Ta
adb shell pm list コマンドの端末やOSバージョンごとの違いを調査 | Bescottee – http://andbrowser.com/develop...
adb shell pm list コマンドの端末やOSバージョンごとの違いを調査 | Bescottee http://t.co/vsqO54GS
おお、これでADK対応かどうかわかるのか RT @vvakame: [Android] / “adb shell pm list コマンドの端末やOSバージョンごとの違いを調査 | Bescottee” http://t.co/7eJX1kP9
おお、これでADK対応かどうかわかるのか RT @vvakame: [Android] / “adb shell pm list コマンドの端末やOSバージョンごとの違いを調査 | Bescottee” http://t.co/7eJX1kP9