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))" \  
  • ...  
  • ...
    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.language=$PRODUCT_DEFAULT_LANGUAGE"  

  • 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:= \  
  •         $(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は、特定のプラットフォームまたは製品の変更に対応します.