Android属性のbuild.prop生成プロセス分析
2271 ワード
本文はbuildを簡単に分析する.propはどのように生成されますか.Androidのbuild.Propファイルは、Androidコンパイル時に収集される各種property(LCD density/言語/コンパイル時間、etc.)であり、コンパイルが完了すると、out/target/product//system/ディレクトリの下にファイルが生成される.Android実行時にはproperty_get()[c/c++ドメイン]/SystemProperties_get*()[Javaドメイン]は、これらのプロパティ値を読み込みます.
build.propの生成はmakeシステム解析build/core/Makefileによって行われる.
1)Makefileではまず各種変数を定義し,これは次の実行時に用いられる.例:
[plain] view plain copy print ?
... PRODUCT_DEFAULT_LANGUAGE="$(calldefault-locale-language,$(PRODUCT_LOCALES))" \
PRODUCT_DEFAULT_REGION="$(calldefault-locale-region,$(PRODUCT_LOCALES))" \ ...
buildinfo.shスクリプトを実行しbuildに出力する.prop
Buildinfo.shは簡単ですが、echoのいくつかの属性です.例えば、
[plain] view plain copy print ?
... echo"ro.product.locale.language=$PRODUCT_DEFAULT_LANGUAGE"
echo"ro.product.locale.region=$PRODUCT_DEFAULT_REGION" ...
3)Makefileで直接$(TARGET_DEVICE_DIR)/systemをpropの内容はbuildに追加する.propで.
4)ADDITIONALの収集BUILD_PROPERIESの属性は、buildに追加されます.propで.
ADDITIONAL_BUILD_PROPERTIESはまたPRODUCTを収集しますPROPERTY_MOVERIDESで定義されている属性
[plain] view plain copy print ?
ADDITIONAL_BUILD_PROPERTIES:= \ $(ADDITIONAL_BUILD_PROPERTIES)\
$(PRODUCT_PROPERTY_OVERRIDES)
ビルドを通るprop生成プロセスの解析から,既存の属性を修正したり,自己定義の属性を加えることができる場所が分かる,それは2)buildinfo.sh; 3) system.prop; 4) ADDITIONAL_BUILD_PROPERTIESまたはPRODUCT_PROPERTY_OVERRIDES.個人的にはシステムに変更することをお勧めします.propまたはPRODUCT_PROPERTY_OVERIDESは、特定のプラットフォームまたは製品の変更に対応します.
build.propの生成はmakeシステム解析build/core/Makefileによって行われる.
1)Makefileではまず各種変数を定義し,これは次の実行時に用いられる.例:
[plain] view plain copy print ?
...
PRODUCT_DEFAULT_REGION="$(calldefault-locale-region,$(PRODUCT_LOCALES))" \
...
PRODUCT_DEFAULT_LANGUAGE="$(calldefault-locale-language,$(PRODUCT_LOCALES))" \
PRODUCT_DEFAULT_REGION="$(calldefault-locale-region,$(PRODUCT_LOCALES))" \
...
)Makefileでbuild/tools/を呼び出します.buildinfo.shスクリプトを実行しbuildに出力する.prop
Buildinfo.shは簡単ですが、echoのいくつかの属性です.例えば、
[plain] view plain copy print ?
...
echo"ro.product.locale.region=$PRODUCT_DEFAULT_REGION"
...
echo"ro.product.locale.language=$PRODUCT_DEFAULT_LANGUAGE"
echo"ro.product.locale.region=$PRODUCT_DEFAULT_REGION"
...
そして、ro.product.locale.language/ro.product.locale.regionはいくつかの属性で、等号の後ろに値があります.3)Makefileで直接$(TARGET_DEVICE_DIR)/systemをpropの内容はbuildに追加する.propで.
4)ADDITIONALの収集BUILD_PROPERIESの属性は、buildに追加されます.propで.
ADDITIONAL_BUILD_PROPERTIESはまたPRODUCTを収集しますPROPERTY_MOVERIDESで定義されている属性
[plain] view plain copy print ?
ADDITIONAL_BUILD_PROPERTIES:= \
$(PRODUCT_PROPERTY_OVERRIDES)
ADDITIONAL_BUILD_PROPERTIES:= \
$(ADDITIONAL_BUILD_PROPERTIES)\
$(PRODUCT_PROPERTY_OVERRIDES)
ビルドを通るprop生成プロセスの解析から,既存の属性を修正したり,自己定義の属性を加えることができる場所が分かる,それは2)buildinfo.sh; 3) system.prop; 4) ADDITIONAL_BUILD_PROPERTIESまたはPRODUCT_PROPERTY_OVERRIDES.個人的にはシステムに変更することをお勧めします.propまたはPRODUCT_PROPERTY_OVERIDESは、特定のプラットフォームまたは製品の変更に対応します.