getprop
読み取りのみシステムプロパティを表示します。端末自身が語る「これは何か」です。
- コマンド
- adb shell getprop
- コマンド
- システムとログ
- リスク
- 読み取りのみ
構文
getprop [-T | -Z] [<name> [<default>]]フラグと引数
| トークン | 意味 |
|---|---|
| <name> | プロパティ 1 つの値を、括弧なしで単独で印字します。2 つめの位置引数はフォールバックで、`getprop ro.nope missing` は `missing` を印字します。省略するとフォールバックは空文字列なので、綴りを間違えたプロパティ名は空行を印字して 0 で終了します。このコマンドで唯一、成功とまったく同じ見た目をする失敗です。`-T` と `-Z` は値をプロパティの型や SELinux のコンテキストに差し替えるもので、互いに排他です。どちらも名前を取ることも全部を並べることもでき、どちらも、素の値の形が触れもしないプロパティ情報ファイルを必要とします。 |
使用例
getprop全部。最近の端末では 1000 件を超えます。
getprop ro.product.model値を 1 つ、飾りなしで。
getprop ro.build.version.sdkAPI レベル。この Android がどれだけ古いかを尋ねる正直な方法です。
出力の読み方
出力例
[ro.product.model]: [Pixel 7]
[ro.build.version.sdk]: [34]引数なしなら 1 プロパティ 1 行の `[key]: [value]` が key 順に並びます。`PrintAllProperties` はすべてのプロパティを集めて対を並べ替え、それから初めて印字するので、画面上の順序は並べ替えの順序であって、システムが設定した順序ではありません。値そのものに閉じ括弧が入り得るので、括弧で分割するのではなく `]: [` という区切りと行末の括弧に頼ってください。名前を渡すと、値だけが key も括弧も引用符もなしに 1 行で印字されます。`getprop ro.build.version.sdk` をスクリプトで数値と比較しても安全なのはそのおかげで、空の答えと空の値が見分けられないのも同じ理由です。
出力フィールド
| フィールド | 意味 |
|---|---|
| ro.product.model | 販売上の機種名。 |
| ro.product.manufacturer | 製造元。 |
| ro.build.version.release | 人が目にする形の Android バージョン。 |
| ro.build.version.sdk | API レベル。どうしても分岐するなら、分岐すべき数値はこれです。 |
| ro.build.fingerprint | ビルドの同一性を 1 つの文字列にまとめたもの。 |
| ro.serialno | シリアル番号。ビルドがまだ露出させている場合。 |
必要な権限
root も `adb root` も、そしてこのリファレンスには珍しく `system_server` すら不要です。`getprop` はプラットフォーム自身の toolbox にある素のバイナリ(`system/core/toolbox/getprop.cpp`)で、`pm` や `input` のように動いているサービスへ入り込む形ではありません。共有のプロパティ領域を直接読むので、端末がまだ起動中でも binder が詰まっていても答え続けます。`dumpsys` や `cmd` の呼び出しがサービスを見つけられないと言ってきた直後に、まず走らせる価値があるのはそのためです。できるのは読むことだけで、書く形はここにありません。プロパティを変えるのは `setprop`、アクセスの問いに別の答えを持つ別のコマンドです。`shell` ユーザーが何を見てよいかはプラットフォームがプロパティごとに決めるので、このページは特定のプロパティが存在するとは主張しません。正直な確かめ方は、尋ねてみることです。
エラーメッセージの読み解き
| メッセージ | 意味 |
|---|---|
| getprop: Max 2 arguments (see "getprop --help") | 名前とフォールバックより多くのものが届きました。ほとんどの場合、`getprop` が見る前にシェルが、引用していない引数を空白で割っています。値を引用するか、上の行から紛れ込んだ語が生き残っていないかを確認してください。 |
| Only one of -T or -Z may be specified | 両方のフラグが渡されました。プロパティには型もコンテキストもありますが、このコマンドが印字する列は 1 つなので、勝手に選ばずに断ります。2 回走らせてください。 |
| Unable to load property info file | `-T` と `-Z` が答えの元にしているプロパティ情報を読み込めず、`getprop` は何も印字せずに戻ります。素の値の形はそのファイルをまったく読まないので、フラグを落とせば値は返ってきます。 |
バージョンとメーカーに関する注意
- key の重複はあり得ます。最後に印字された値が有効なものです。
- `ro.` のプロパティは起動後は読み取り専用です。それ以外は見ている間に変わり得るので、1 分離れた 2 回の読みが正当に食い違うことがあります。
- メーカーはプロパティを自由に追加・削除します。あるものがないことは、ハードウェアについての証拠にはなりません。
これには UI があります
Android ADB Toolbox はこのコマンドを USB 経由で実行し、返ってきたものを解析します。Chromium 系ブラウザだけで、SDK も不要、どこにもアップロードしません。
関連コマンド
getprop と同じ作業で出てくるコマンド。
| コマンド | 何をするか |
|---|---|
| settings get | 端末の設定プロバイダから値を 1 つ読みます。 |
| dumpsys battery | バッテリーサービスの現在の状態:残量、充電状態、健康度、電圧、温度。 |
| top | 1 回分のプロセス表:CPU 使用率、メモリ、状態、コマンドライン。 |
他のシステムとログコマンド
Web ADB ツール群のパーサを書きながら、AOSP・toybox・カーネルのソースに突き合わせて確認しています。バージョンやメーカーで本当に挙動が変わるところは、世界の半分の端末で間違いになる数値を出す代わりに、そう書いてあります。