1. 程式人生 > >Android——build.prop 解析

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完畢!

三.屬性

# begin build properties(開始建立系統屬性)

# autogenerated by buildinfo.sh(目前這部分由build.info自動生成)

ro.build.id=IML74K(版本id)

ro.build.display.id=T40-MG-S2-V1.0(版本號)

ro.build.version.incremental=eng.root.20130428.234356(版本增量)

ro.build.version.sdk=15(sdk版本)

ro.build.version.codename=REL(版本代號)

ro.build.version.release=4.0.3(android版本)

ro.build.date=2013年04月28日星期日23:46:27 CST(編譯時間)

ro.build.date.utc=1367163987(編譯時間的utc表示)

ro.build.type=eng(編譯型別:eng/user)

ro.build.user=root(編譯者)

ro.build.host=Alex-Natty-Dell(編譯主機名)

ro.build.tags=debug,test-keys

ro.product.model=S2(手機型號)--

ro.product.brand=Spreadtrum(手機品牌)

ro.product.name=sp6825eb_7661plus(手機正式名稱)

ro.product.device=sp6825eb_7661(採用的裝置)

ro.product.board=sp6825eb_7661(採用的主機板)

ro.product.cpu.abi=armeabi-v7a(cpu的版本)

ro.product.cpu.abi2=armeabi(CPU品牌)

ro.product.manufacturer=Spreadtrum(手機制造商)

ro.wifi.channels=(WIFI連線的渠道)

ro.board.platform=sc8825(主機板平臺)

ro.sf.lcd_density=240(顯示密度)

ro.sf.hwrotation = 180(上層資料旋轉180度)

ro.gpu=mali(影象處理器採用mali)

ro.opengles.version=131072((OpenGL for Embedded Systems))

ro.device.support.mmc=1

hwui.render_dirty_regions=false

ro.hwui.text_cache_width=2048

persist.ttydev=ttyVUART0

ro.device.support.vt=0(是否支援可視電話)

ro.device.support.gps=0(是否支援gps)

keyguard.no_require_sim=true (手機卡保護設定.true:無需SIM卡也可操作手機)

ro.com.android.dataroaming=false (漫遊設定)

persist.msms.phone_count=2(雙卡)

persist.blcr.enable=0

persist.msms.phone_default=0(雙卡預設第一張卡)

dalvik.vm.heapsize=128m(虛擬記憶體大小:16m/24m/32m/48m等)

ro.com.android.dateformat=MM-dd-yyyy(預設時間格式:yyyy-MM-dd等)

ro.config.ringtone=BeatPlucker.ogg(預設鈴聲設定,檔案在/system/media/audio/ringtones 把喜歡的鈴聲放這裡,比如123.MP3放入ringtones資料夾中,這裡程式碼改為ro.config.ringtone=123.mp3)

ro.config.notification_sound=pixiedust.ogg(預設提示音:/system/media/audio/notifications)

ro.config.alarm_alert=Alarm_Classic.ogg(預設鬧鈴音:/system/media/audio/alarms)

ro.product.locale.language=zh(手機預設語言,如:en/zh)

ro.product.locale.region=CN(地區語言,如:US/CN)

(產品具體mk檔案(如prod_sp6825_7661base.mk)作用域自此結束)

ro.kernel.android.checkjni=1

ro.setupwizard.mode=OPTIONAL(安裝嚮導模式)

net.bt.name=Android

dalvik.vm.stack-trace-file=/data/anr/traces.txt(本引數控制Dalvik虛擬機器的堆疊記錄除錯檔案。用於系統除錯,一般使用者對其調整無意義)

ro.logappslow=0

ro.build.product.lowmem=0

ro.floatkey.show=false(true:支援小綠點功能,點選介面上的小綠點可以跳出menu/home/back三個虛擬鍵)

persist.sys.kb.auto=1

device.support.face.smile=1(是否支援笑臉拍照和人臉識別)

device.support.pano=1(相機是否支援全景拍照)

相關推薦

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

Androidbuild.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