web-dev-qa-db-ja.com

adb Shell getpropとsetpropはどのように機能しますか?

adb Shell setprop mypropertykey mypropertyvalueの仕組みを理解したいと思います。つまり、/system/build.propファイルを編集しましたが、getpropコマンドを使用して値を読み取ろうとすると、代わりに空の値が返されているようです。

ただし、ルートモードでadb Shell setpropを介してプロパティを設定し、エミュレータのルートを解除し、コードを使用して値を読み取ると、適切な値を取得できます。

私が理解していないのは、値がadb Shell setpropを介して設定されている場合、なぜbuild.propファイルに書き込まれないのですか?次に、getpropはどこから値を読み取りますか?

Androidシステムプロパティは、特別なproperty_serviceによって管理されています。 /system/build.propは、property_serviceが起動中に内部インメモリデータベースに入力するために使用するデフォルト値を含む4-6(バージョンによって異なります)の読み取り専用ファイルのうちの1つにすぎません。したがって、実行中のファイルへの変更は、再起動後まで反映されません。

setpropおよびgetpropコマンドは、そのデータベース内のデータにアクセスするために使用されます。プロパティ名がpersist.で始まる場合を除き、値は/data/propertyフォルダーに保存されます。

11
Alex P.