Android——build.prop 解析
一.概念
在Android裝置shell終端可以看到/system目錄下的build.prop檔案,Android的build.prop檔案是在Android編譯時刻收集的各種property(LCD density/語言/編譯時間, etc.),編譯完成之後,檔案生成在out/target/product/<board>/system/目錄下。在Android執行時刻可以通過property_get()[c/c++域] / SystemProperties_get*()[Java域]讀取這些屬性值,參考Android——SystemProperties的應用
二.生成
build.prop的生成是由make系統解析build/core/Makefile完成
BUILDINFO_SH := build/tools/buildinfo.sh
$(INSTALLED_BUILD_PROP_TARGET): $(BUILDINFO_SH) $(INTERNAL_BUILD_ID_MAKEFILE) $(BUILD_SYSTEM)/version_defaults.mk $(wildcard $(TARGET_DEVICE_DIR)/system.prop)
@echo Target buildinfo: [email protected]
@mkdir -p $(dir [email protected])
$(hide) TARGET_BUILD_TYPE="$(TARGET_BUILD_VARIANT)" \
TARGET_DEVICE="$(TARGET_DEVICE)" \
PRODUCT_NAME="$(TARGET_PRODUCT)" \
PRODUCT_BRAND="$(PRODUCT_BRAND)" \
PRODUCT_DEFAULT_LANGUAGE="$(call default-locale-language,$(PRODUCT_LOCALES))" \
PRODUCT_DEFAULT_REGION="$(call default-locale-region,$(PRODUCT_LOCALES))" \
PRODUCT_DEFAULT_WIFI_CHANNELS="$(PRODUCT_DEFAULT_WIFI_CHANNELS)" \
PRODUCT_MODEL="$(PRODUCT_MODEL)" \
PRODUCT_MANUFACTURER="$(PRODUCT_MANUFACTURER)" \
PRIVATE_BUILD_DESC="$(PRIVATE_BUILD_DESC)" \
BUILD_ID="$(BUILD_ID)" \
BUILD_DISPLAY_ID="$(BUILD_DISPLAY_ID)" \
BUILD_NUMBER="$(BUILD_NUMBER)" \
PLATFORM_VERSION="$(PLATFORM_VERSION)" \
PLATFORM_SDK_VERSION="$(PLATFORM_SDK_VERSION)" \
PLATFORM_VERSION_CODENAME="$(PLATFORM_VERSION_CODENAME)" \
BUILD_VERSION_TAGS="$(BUILD_VERSION_TAGS)" \
TARGET_BOOTLOADER_BOARD_NAME="$(TARGET_BOOTLOADER_BOARD_NAME)" \
BUILD_FINGERPRINT="$(BUILD_FINGERPRINT)" \
TARGET_BOARD_PLATFORM="$(TARGET_BOARD_PLATFORM)" \
TARGET_CPU_ABI="$(TARGET_CPU_ABI)" \
TARGET_CPU_ABI2="$(TARGET_CPU_ABI2)" \
TARGET_AAPT_CHARACTERISTICS="$(TARGET_AAPT_CHARACTERISTICS)" \
bash $(BUILDINFO_SH) > [email protected]
$(hide) if [ -f $(TARGET_DEVICE_DIR)/system.prop ]; then \
cat $(TARGET_DEVICE_DIR)/system.prop >> [email protected]; \
fi
$(if $(ADDITIONAL_BUILD_PROPERTIES), \
$(hide) echo >> [email protected]; \
echo "#" >> [email protected] ; \
echo "# ADDITIONAL_BUILD_PROPERTIES" >> [email protected]; \
echo "#" >> [email protected]; )
$(hide) $(foreach line,$(ADDITIONAL_BUILD_PROPERTIES), \
echo "$(line)" >> [email protected];)
$(hide) build/tools/post_process_props.py [email protected]
build_desc :=
1.目標INSTALLED_BUILD_PROP_TARGET就是
INSTALLED_BUILD_PROP_TARGET := $(TARGET_OUT)/build.prop
可以看到定義一些變數的值比如PRODUCT_DEFAULT_LANGUAGE,會在後面指令碼中用到。然後呼叫build/tools/buildinfo.sh這個指令碼
bash $(BUILDINFO_SH) > [email protected]
將變數輸出到build.prop當中:
echo "# begin build properties"
echo "# autogenerated by buildinfo.sh"
echo "ro.build.id=$BUILD_ID"
echo "ro.build.display.id=$BUILD_DISPLAY_ID"
echo "ro.build.version.incremental=$BUILD_NUMBER"
echo "ro.build.version.sdk=$PLATFORM_SDK_VERSION"
echo "ro.build.version.codename=$PLATFORM_VERSION_CODENAME"
echo "ro.build.version.release=$PLATFORM_VERSION"
echo "ro.build.date=`date`"
echo "ro.build.date.utc=`date +%s`"
echo "ro.build.type=$TARGET_BUILD_TYPE"
echo "ro.build.user=$USER"
echo "ro.build.host=`hostname`"
echo "ro.build.tags=$BUILD_VERSION_TAGS"
echo "ro.product.model=$PRODUCT_MODEL"
echo "ro.product.brand=$PRODUCT_BRAND"
echo "ro.product.name=$PRODUCT_NAME"
echo "ro.product.device=$TARGET_DEVICE"
echo "ro.product.board=$TARGET_BOOTLOADER_BOARD_NAME"
echo "ro.product.cpu.abi=$TARGET_CPU_ABI"
if [ -n "$TARGET_CPU_ABI2" ] ; then
echo "ro.product.cpu.abi2=$TARGET_CPU_ABI2"
fi
echo "ro.product.manufacturer=$PRODUCT_MANUFACTURER"
if [ -n "$PRODUCT_DEFAULT_LANGUAGE" ] ; then
echo "ro.product.locale.language=$PRODUCT_DEFAULT_LANGUAGE"
fi
if [ -n "$PRODUCT_DEFAULT_REGION" ] ; then
echo "ro.product.locale.region=$PRODUCT_DEFAULT_REGION"
fi
echo "ro.wifi.channels=$PRODUCT_DEFAULT_WIFI_CHANNELS"
echo "ro.board.platform=$TARGET_BOARD_PLATFORM"
echo "# ro.build.product is obsolete; use ro.product.device"
echo "ro.build.product=$TARGET_DEVICE"
echo "# Do not try to parse ro.build.description or .fingerprint"
echo "ro.build.description=$PRIVATE_BUILD_DESC"
echo "ro.build.fingerprint=$BUILD_FINGERPRINT"
echo "ro.build.characteristics=$TARGET_AAPT_CHARACTERISTICS"
echo "# end build properties"
buildinfo.sh指令碼完了之後,會把$(TARGET_DEVICE_DIR)/system.prop的內容和
# Add the product-defined properties to the build properties.
ADDITIONAL_BUILD_PROPERTIES := \
$(ADDITIONAL_BUILD_PROPERTIES) \
$(PRODUCT_PROPERTY_OVERRIDES)
ADDITIONAL_BUILD_PROPERTIES的屬性 追加到build.prop。
至此,生成build.prop完畢!
三.屬性
ro.sf.lcd_density=240(顯示密度)相關推薦
Android——build.prop 解析
一.概念 在Android裝置shell終端可以看到/system目錄下的build.prop檔案,Android的build.prop檔案是在Android編譯時刻收集的各種pro
Android build.prop修改詳細說明
用RE進入/system/掛載讀寫(前提是系統已經被ROOT過), 找到build.prop複製到/sdcarrd進行修改比較保險.也可以掛載讀寫後,直接選擇用文字編輯器開啟,進行編輯.亂改有風險,修改需謹慎.1.# begin build properties2.# au
android——build 模式解析
出現此模式的原因:當我們需要建造一個複雜物件時候,我們需要提高可讀性和方便性的時候,此模式就孕育而生了。 定義:將一個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。 程式碼示例: public class BuildBean { public final
Android build.prop 新增自定義項 及使用
有時候為了專案的需要,需要根據build.prop 中的一些屬性值,或者是需要自己在build.prop 檔案中新增自定義項。這裡只是想記錄下,可以新增的位置,以及在程式碼中如何使用。
Android build.prop引數詳解
# begin build properties //開始構建系統屬性 # autogenerated by buildinfo.sh //以下內容由buildinfo.sh指令碼在編譯時自動生成 ro.build.id=JLS36C //build的版本號,一般在編譯時產生不必修改 ro.build
Android之build.prop屬性詳解
lin logs generated reg dconf hostname product att make 註:本篇文章是基於MSD648項目(AndroidTV)的prop進行說明。 Android版本:4.4.4 內核版本:3.10.86 1.生成build.
Android系統檔案安全許可權檢測/system/build.prop修改
Android4.4上修改system/build.prop的檔案許可權後,導致系統不能正常啟動,需把許可權修改回0644,才能正常啟動。 追蹤串列埠,發現錯誤: 由於需要應用修改sytem/build.prop檔案,所以得跳過system/build.prop的檔案安
Android屬性之build.prop,及propeetrty_get/property_s
簡要分析一下build.prop是如何生成的。Android的build.prop檔案是在Android編譯時收集的各種property(LCD density/語言/編譯時間, etc.),編譯完成之後,檔案生成在out/target/product/<board>/system/目錄下。在
android 增加 在build.prop 中的ro.sf.hwrotation角度支援
android系統預設這個屬性只能0度還有270有效,如果因特殊需要,其他角度支援的話,可以仿照以下方法 修改檔案frameworks/base/services/surfaceflinger/SurfaceFlinger.cpp 在方法void Graphi
如何設定Android 系統的屬性,Build.prop, defualt.prop
首先: 什麼是Android系統屬性? 屬性(property)都有一個名稱和值,他們都是字串格式,用來記錄系統設定或程序之間的資訊交換。屬性是在整個系統中全域性可見的。 在系統初始化時,Android將分配一個共享記
關於android手機system/build.prop的淺析
手機很多資訊是預設固定的,例如裝置名稱,使用者名稱稱等等。它們大部分都是通過配置檔案解析得到的,而這個檔案就是/system/build.prop。 首先,這個檔案的許可權很高,你們有root許可權是無法操作的,所以你要是單純的想改下配置,比如換換你的裝置名
com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: android/support/annotation/ColorRes.class
導致 .class div src jar 技術 cnblogs 沖突 信息 保存信息如上: 我在添加一個支持庫的時候遇的問題,這個庫com.yanzhenjie:album:1.0.5 這是由於v4包重復導致的,在網上我也找過多種解決方案 用了這種,方式 confi
Android核心服務解析篇(三)——Android系統的啟動
onf med cin gets get lld 系統屬性 基本 安裝模塊 從大的方面來說。Android系統的啟動能夠分為兩個部分:第一部分是Linux核心的啟動,第二部分是Android系統的啟動。第一部分主要包含系統引導,核心和驅動程序等,因為它們不屬於本篇要講的
Android View系統解析(下)
target 過程 getc ets 解包 有時 消息隊列 nbsp 實現 轉載請註明出處:http://blog.csdn.net/singwhatiwanna/article/details/38426471(來自singwhatiwanna的csdn博客)Andr
Android之DOM解析XML
android一.DOM解析方法介紹 DOM是基於樹形結構的節點或信息片段的集合,允許開發人員使用DOM API遍歷XML樹,檢索所需數據。分析該結構通常需要加載整個文檔和構造樹形結構,然後才可以檢索和更新節點信息。 Android完全支持DOM解析。利用DOM中的對象可以對XML文檔進行讀取、搜索、修改
ProtocolBuffer在Android端的解析
test 選擇 ont eclipse andro number enc mod 問題 開題篇 近期公司在使用Protocol Buffer替代原先的json作為移動端的數據交互格式。雖然服務端和CTO把這項新技術吹的天花亂墜,說什麽體積小,不易被破解
Android Service完全解析,關於服務你所需知道的一切(下)
並且 無法 數據類型 界面 其它 wid logcat listen 程序崩潰 文章轉載至:http://blog.csdn.net/guolin_blog/article/details/9797169 這是郭霖寫的.......就是寫 "第一行代碼"的那個厲害人物,大
Android OkHttp完全解析 是時候來了解OkHttp了
JD rect eat serve 功能 sessions 文件名 -h 適合 一、概述 最近在群裏聽到各種討論okhttp的話題,可見okhttp的口碑相當好了。再加上Google貌似在6.0版本裏面刪除了HttpClient相關API,對於這個行為不做評價。為了更好的在
Android:全面解析 熟悉而陌生 的Application類使用
screen 存儲 程序啟動 兩個 com 完全 @override mat 例子 前言 Applicaiton類在 Android開發中非常常見,可是你真的了解Applicaiton類嗎? 本文將全面解析Applicaiton類,包括特點、方法介紹、應用場景和具體使用,
Android O PackageInstaller 解析
獲取 androi -c logger count nba inf ber cts Android O 8.0 1.src\com\android\packageinstaller\permission\mode\PermissionGroups.java