build.prop

build.prop

在Android系統中有一個類似Windows系統註冊表的檔案build.prop。這個檔案內定義了系統初始(或永久)的一些參數屬性、功能的開放等。通過調整/增加參數可以達到調校系統性能偏重點和附加功能開啟的作用。

基本介紹

  • 中文名:build.prop
  • 出處:Android系統
  • 類型註冊表
  • 作用:定義了系統初始的一些參數屬性
總述,結構,參數,總結,

總述

在Android 2.2、2.3、4.0、4.1、4.2、4.3、4.4中雖然每一版都有自己獨有的參數,但絕大部分都是通用的,且可以起到關鍵性作用的。本文將以摩托手機Android 2.3系統為例,對build.prop中常用的參數進行詳解,供廣大機友對自己的系統做校調。

結構

我們經常說的刷ROM是刷系統的意思,但是ROM的原意並不是這樣,ROM的全稱是read only memory唯讀儲存器,正因為它是“唯讀”的,所以系統檔案通常動會存儲在手機ROM里,但這個唯讀是有條件限定的,通常情況下我們只能讀,但在特殊情況下我們可以對ROM進行寫操作,往ROM里寫入新的系統檔案的過程以CM為例:
# begin build properties (開始設定系統性能)
# autogenerated (通過設定形成系統信息)
ro.=GRI40 (版本ID)
ro.build.=GRJ22 (版本號)
ro.build.version.incremental=eng.buildbot.20110619.060228 (版本增量)
ro.build.version.sdk=10 (sdk版本)
ro.build.version.codename=REL (版本代號)
ro.build.version.release=2.3.4 (Android 2.3.4系統)
ro.build.date=Sun Jun 19 06:02:58 UTC 2011 (製作者及製作時間)
ro.build.date.utc=0
ro.build.type=user (編譯模式,如user,userdebug,eng,test模式)
ro.build.user=buildbot (編譯賬戶)
ro.build.host=bb1 (編譯主機系統)
ro.build.tags=test-keys (編譯標籤)
ro.product.model=HTC Wildfire (HTC內部手機代號)
ro.product.brand=htc_wwe (手機品牌)
ro.product.name=htc_buzz (手機正式名稱)
ro.product.device=buzz (採用的設備)
ro.product.board=buzz (採用的處理器)
ro.product.cpu.abi=armeabi-v6j (cpu的版本)
ro.product.cpu.abi2=armeabi (cpu的品牌)
ro.product.manufacturer=HTC (手機製造商)
ro.product.locale.language=zh (手機默認語言)
ro.product.locale.region=CN (地區語言)
ro.wifi.channels= (WIFI連線的渠道)
ro.board.platform=msm7k (主機板平台)
# ro.build.product is obsolete; use ro.product.device (舊代碼ro.build.product,使用代碼ro.product.device)
ro.build.product=buzz (建立產品)
# Do not try to parse ro.build.description or .fingerprint (不要試圖修改description和fingerprint)
ro.build.description=passion-user 2.3.3 GRI40 102588 release-keys (用戶的KEY)
ro.build.fingerprint=google/passion/passion:2.3.3/GRI40/102588:user/release-keys (系統指紋)
# end build properties (性能代碼完畢)
#
# system.prop for buzz (系統技術支持由BUZZ提供)
#
# Density in DPI of the LCD of this board. This is used to scale the UI (高密度的液晶的DPI板。這是用來大規模UI的)
# appropriately. If this property is not defined, the default value is 160 dpi. (appropriately.如果這個屬性沒有定義,預設值是160 dpi的解析度)
ro.sf.lcd_density=240 (顯示屏解析度,數值越大解析度越底,240就是800*480的)
# View configuration for QVGA. (螢幕的設定)
view.fading_edge_length=8
view.touch_slop=15 (觸控螢幕靈敏度,數值越大越靈敏)
view.minimum_fling_velocity=25 (滑動速度)
view.scroll_friction=0.008 (滑動誤差)
# RIL specific configuration. (特定設定)
rild.libpath=/system/lib/libhtc_
ro.ril.ecc.HTC-WWE=999
ro.ril.ecc.HTC-ELL=92,93,94
ro.ril.enable.a52.HTC-ITA=1
ro.ril.enable.a53.HTC-ITA=1
ro.ril.enable.a52=0
ro.ril.enable.a53=1
ro.ril.vmail.23415=1571,BT
ro.ril.hsdpa.category=8 (hsdpa全稱High Speed Downlink Packet Access中文意思:高速下行分組接入,設定的數越大傳輸越快)
ro.ril.htcmaskw1.bitmask=429496
ro.ril.htcmaskw1=14449
ro.ril.def.agps.mode=2 (打開AGPS服務支持,可改為ro.ril.def.agps.mode=0 改後能省電但GPS定位速度會變慢)
ro.ril.gprsclass=12 (GPRS設定)
# For HSDPA low throughput (HSDPA低輸量)
ro.ril.disable.power.collapse=1 (關閉電源)
# Modify MMS APN retry timer from 5s to 2s. (修改簡訊的APN設定5秒為2秒)
ro.gsm.2nd_data_retry_config=max_retries=3, 2000, 2000, 2000
# Time between scans in seconds. Keep it high to minimize battery drain.(掃描在幾秒之內,可降低用電量)
# This only affects the case in which there are remembered access points, (這個修改僅能影響此檔案)
# but none are in range.(但是沒有一項是在範圍內的)
wifi.interface=eth0 (WIFI界面)
wifi.supplicant_scan_interval=45 (WIFI掃描間隔時間,這裡設定是45秒。把這個時間設定長點能省電)
# Mobile data interfaces (移動數據的接口)
mobiledata.interfaces=rmnet0,rmnet1,rmnet2
# Allow or deny tethering. (允許和拒絕綁定)
ro.tether.denied=false
# Default network type. (默認的網路類型)
# 0 => WCDMA Preferred. (0=WCDMA優先)
ro.telephony.default_network=0
# Enable Google-specific location features, (谷歌特定地點的設定)
# like NetworkLocationProvider and LocationCollector.(如網路伺服器提供商和伺服器位置)
ro.c o m.google.locationfeatures=1
# The OpenGL ES API level that is natively supported by this device. (開放式繪圖介面)
# This is a 16.16 fixed point number. (界面有16個點,16個不動點數量)
ro.opengles.version=65536 (開放式繪圖介面參數)
# Disable fs check on boot by default. (開機時默認禁用FS檢查)
sys.checkfs.fat=false
# Performance settings. (性能設定)
dalvik.vm.execution-mode=int:jit
dalvik.vm.heapsize=24m (虛擬記憶體大小,可設定為16m或24m或32m或48m)
persist.sys.use_dithering=1
persist.sys.purgeable_assets=1
# Increase SKIA decode memory capability for progressive jpg file.
ro.media.dec.jpeg.memcap=20000000
#
# ADDITIONAL_BUILD_PROPERTIES (其他性能設定)
no_require_sim=true (手機卡保護設定)
ro.rommanager.developerid=cyanogenmodnightly (固件管理器開發者是CM大神)
ro.url.legal=http://www./intl/%s/mobile/android/basic/phone-legal.html
ro.url.legal.android_privacy=http://www]/intl/%s/mobile/android/basic/privacy.html
ro. com.google.clientidbase=android-google (谷歌客戶身份)
ro. com.android.wifi-watchlist=GoogleGuest (WIFI用戶名單)
ro.setupwizard.enterprise_mode=1 (默認情景模式)
ro. com.android.dateformat=MM-dd-yyyy (默認時間格式,改為yyyy-MM-dd,顯示效果就是XXXX年XX月XX日)
ro. com.android.dataroaming=false (漫遊設定)
ro.config.ringtone=Playa.ogg (默認鈴聲設定,檔案在/system/media/audio/ringtones 把喜歡的鈴聲放這裡,比如123. MP3放入ringtones資料夾中,這裡代碼改為ro.config.ringtone=123. mp3)
ro.config.notification_sound=regulus.ogg (默認提示音,檔案在/system/media/audio/notifications 修改方法同上)
ro.config.alarm_alert=Alarm_Beep_03.ogg (默認鬧鈴,檔案在/system/media/audio/alarms 修改方法同上)
ro.modversion=CyanogenMod-7-06192011-NIGHTLY-buzz (版本信息,改這個能讓你大名出現系統關於中,改為ro.modversion=xxxxx)
ro.setupwizard.mode=OPTIONAL (安裝精靈模式)
net. bt. name=Android (系統名稱)
dalvik.vm.stack-trace-file=/data/anr/traces.txt

參數

Dalvik虛擬機
Dalvik虛擬機是Android作業系統的核心,是一切應用程式的基礎。所有程式在運行時均有Dalvik虛擬機對其進行解析和執行。
dalvik.vm.startheapsize:
本參數控制Dalvik虛擬機在啟動一個應用程式之後為其分配的初始堆疊大小,可填寫的值為2m~48m。
例如:dalvik.vm.startheapsize=8m,就表示應用程式啟動後為其分配的初始堆疊大小為8兆位元組。
這裡分配的記憶體容量會影響到整個系統對RAM的使用程度,和第一次使用應用程式時的流暢程式。這個值越大,系統消耗RAM則越快,但是應用程式打開後的反應也越快。值越小,系統的RAM剩餘則越多,但是程式在啟動後會很卡。
建議值是8m,既可以保持140M左右的RAM,程式的反應速度也會大幅度提高。
dalvik.vm.heapsize:
本參數控制Dalvik虛擬機給一個應用程式分配的最大堆疊量,可填寫的值為12m~48m。
例如:dalvik.vm.heapsize=48m,就表示應用程式在任意時刻內可以使用的最大堆疊大小為48兆位元組。這裡分配的記憶體容量會影響到整個系統對RAM的使用程式,和程式在運行一段時間後的反應速度。這個值越大,系統消耗RAM則越快,但是程式會運行的非常穩定,尤其是遊戲和視頻程式的內容載入速度可以大幅度提升。值越小,系統的RAM剩餘則越多,但是程式會很卡,尤其是遊戲在切換場景Loading的時候會 花費很多的時間。若應用程式需要使用超過這個值的記憶體時,將會觸發系統的垃圾收集器,系統和程式就會卡頓。
建議值是40~48m。
dalvik.vm.lockprof.threshold:
本參數控制Dalvik虛擬機調試記錄程式內部鎖資源爭奪的閾值,默認值是500。多用於程式的數據統計,對性能較調意義不大。
dalvik.vm.stack-trace-file:
本參數控制Dalvik虛擬機的堆疊記錄調試檔案。用於系統調試,一般用戶對其調整無意義。
dalvik.vm.execution-mode:
本參數控制Dalvik虛擬機的程式執行機制。可填寫的值有”int:portable”、”int:fast”和”int:jit”。
int:portable表示以兼容模式運行(腳本翻譯模式),此模式下程式的兼容性最高,但其執行效率最低(程式最佳化度依賴於dalvik虛擬機版本)。官方默認此模式。 int:fast表示以快速自最佳化模式運行(腳本翻譯和預最佳化混合),此模式下程式的兼容性很高,執行效率也比較高。因為此時dalvik虛擬機允許程式使用自己的預定義最佳化模式和代碼(包括C/C++/彙編代碼)。推薦使用。 int:jit表示以Just-In-Time模式運行(JIT模式),此模式下程式的兼容性最差,但程式一旦載入後其運行效率最高(與C/C++直接編 寫的程式效率無異),因為在此模式下dalvik虛擬機會預先將Java程式翻譯成針對機器平台的本地語言(Native),同時完全允許代碼中的所有預 最佳化和代碼,允許所有不安全的非託管代碼,同時不嚴謹的程式如果運行在JIT模式可能會造成記憶體泄露。但要注意,很多Dalvik虛擬機並不支持此模式 (如官方2.2)。
dalvik.vm.dexopt-flags:
本參數控制Dalvik虛擬機的程式代碼校驗和最佳化。可填寫的值有m、v和o。 m為標準選項,可以是m=y或m=n。若m=y則啟用不安全代碼的校驗和託管代碼的最佳化。兼容性和安全性最高,推薦使用。 v為校驗選項,可與o並存。可以是v=a或v=n。若v=a則表示校驗所有代碼,v=n則關閉代碼的校驗。 o為最佳化選項,可與v並存。可以是o=v或o=a。若o=v則表示最佳化以校驗過的代碼,o=a則表示最佳化所有代碼。 例如: dalvik.vm.dexopt-flags=m=y dalvik.vm.dexopt-flags=v=n,o=v
注意,這個參數只會影響到安裝APK之後或初次使用APK時生成dex檔案時有效。若整個系統(包括應用程式)為odex化,則無意義。
dalvik.vm.verify-bytecode:
本參數控制Dalvik虛擬機是否驗證應用程式的可執行代碼。可以與上一個參數配合使用。可填寫的值為true和false。 其具體意義與dalvik.vm.dexopt-flags的v=n一模一樣。但可以與dalvik.vm.dexopt-flags配合使用以取得更好的效果。
例如: dalvik.vm.dexopt-flags=v=n,o=v dalvik.vm.verify-bytecode=false 這樣可以令後來安裝的apk檔案可以被最佳化而不被檢驗。
dalvik.vm.checkjni:
本參數控制Dalvik虛擬機在調用外部jni程式庫的時候是否對其做安全性檢驗。可填寫的值為true和false。 此參數會覆蓋ro.kernel.android.checkjni。 若值為true,會增加程式的兼容性和穩定性,但也會增加其載入和執行的時間。
推薦為false。
dalvik.vm.deadlock-predict:
本參數控制Dalvik虛擬機對程式死鎖預測處理。可填寫的值有off、warn和err。 off表示關閉死鎖預測功能(默認設定)。 warn表示在繼續程式運行的同時只記錄該死鎖預測(如果為真死鎖就會出現程式假死現象,然後等N久出現關閉)。 err表示預測到死鎖時馬上彈出FC。
注意:有些Dalvik虛擬機版本並不支持此參數。
總結: 對於本期此處給出三種常用的配置(以Defy為機型)。
超級急速流暢型:
dalvik.vm.startheapsize=16m
dalvik.vm.heapsize=48m
dalvik.vm.execution-mode=int:jit
dalvik.vm.dexopt-flags=v=n,o=v
dalvik.vm.checkjni=false
常用穩定加流暢型:
dalvik.vm.startheapsize=8m
dalvik.vm.heapsize=40m
dalvik.vm.execution-mode=int:fast
dalvik.vm.dexopt-flags=m=y
dalvik.vm.checkjni=false
超級穩定大記憶體型:
dalvik.vm.startheapsize=4m
dalvik.vm.heapsize=30m
dalvik.vm.execution-mode=int:portable
dalvik.vm.dexopt-flags=v=a,o=v
dalvik.vm.verify-bytecode=true
dalvik.vm.checkjni=true
系統版本定義
本期將介紹系統版本、定義等相關參數。主要用於定義系統版本特徵字串,OTA字串等。由於較少用到,因此只粗略介紹。
本參數定義了系統的版本ID。為系統內部使用,OTA時作為粗略版本比較。更改後可避免OTA提示,但可能會引起預裝程式(如Blur)的穩定性。
本參數定義了設定中顯示的系統版本號。主要用於設定中顯式出現可讀版本,一般用於個性化定製和第三方應用程式對系統版本的判斷(如魔趣設定)。更改後可自定義版本顯示,但某些第三方應用程式會出現錯誤(如魔趣設定無法實現機器保修查詢)。
ro.build.version.incremental:
本參數定義了系統的升級字。主要用於系統OTA精確版本比對,同時與ro.build.description和ro.build.fingerprint相匹配。更改後可以免OTA提示(如避免Miui的升級提示和Blur的升級提示)。
ro.product.model:
本參數定義了機器的型號字元串。主要用於機器型號顯式定義(如系統設定中的手機型號和Blur、Google設定嚮導中的機型等)。更改後可自定義手機型號名稱。
ro.product.locale.language:
本參數定義了系統的初始(默認)語言。此處注意是語言,如中文是zh,英文是en。更改後改變系統初次啟動時的語言設定。
ro.product.locale.region:
本參數定義了系統的初始(默認)區域。此處注意是區域,如中國大陸為CN,台灣為TW,美國為US。更改後改變系統初次啟動時的區域設定。 ro.build.description和ro.build.fingerprint均為ROM的編譯綜合說明。其中包含了平台硬體、Android版本、原始碼分支和標籤、OTA詳細版本等。 其中的OTA部分,例如: umts_jordan_china-user 2.3.6 4.5.3-109_DPP-14 123456 release-keys 將此數字與ro.build.version.incremental一同更改可避免OTA升級提醒(如Miui和Blur等)。
基本性能
本期將介紹與系統性能(流暢操作體驗、功能速度、記憶體管理等)相關的參數屬性和其調整方法。 雖然Defy的CPU只有800MHz,雖然Defy的RAM只有512MB,雖然摩托官方的系統最佳化很差,但通過本期的參數調整,依然可以獲得不俗的性能。
windowsmgr.max_events_per_sec:
本參數定義了Android系統的窗體事件管理器在單位時間內可以處理的最大事件數量。通過更改本參數可以獲得非常明顯的絲滑流暢體驗。可填寫的值範圍為”大於0的正整數”,官方默認為60。建議150、200、260、300這幾個值。
當此值變大時,系統觸控平滑度明顯提高,但對應的CPU使用率也會升高,最終的結果就是電池續航能力下降。以我個人的經驗來說,此值取到240左右時在系統設定中滑動可以得到接近WP7的流暢和平滑度。
ro.min_pointer_dur:
本參數定義了兩次觸摸之間的最短時間間隔,單位是毫秒。默認值為25,推薦值是10。通過調整此參數可以提高系統觸控的靈敏度或穩定度。當此值越大時,觸控越穩定。此值越小,觸控越靈敏。
mot.proximity.delay:
本參數定義了手機光纖感應器的抖動消除時間,單位是毫秒。默認值是500,推薦值是250。
通過調整此參數可以提高在通話結束後螢幕點亮的速度。當此值越大時,通話結束後螢幕點亮所需要的時間越長,但在通話過程中如果手機意外瞬間離開臉部也不會點亮螢幕,可防止通話過程中的誤操作(比方說通話時不 小心手機移動了一下,螢幕就會點亮,此時如果臉部觸碰到了螢幕就會對通話造成影響)。此值越小,則當手機離開臉部或裝入口袋後會立即點亮或關閉螢幕。
mot.proximity.distance:
本參數定義了手機螢幕上的兩個觸摸點之間的最短距離,若距離小於此值則認為是一個觸摸點,單位是像素。默認值是60,推薦值是100。為什麼推薦100呢?因為Defy的螢幕解析度為480×854,也就是說橫向有480個像素點,對應上去也就相當於是橫向並排允許4個觸摸點,平均一個手指一個點,這樣在類似於殺西瓜等遊戲中可以提升遊戲操作。
ro.kernel.android.checkjni:
本參數定義了Dalvik虛擬機在執行程式的時候是否要做Jni程式庫的檢查工作。詳細見Dalvik參數屬性期。若考慮穩定性可使用true,若需要性能可使用false。注意:此參數會被Dalvik參數覆蓋。
ro.media.enc.jpeg.quality:
本參數定義了JPEG圖像編碼器所使用的質量因子,可填寫的值為1~100,默認為80,推薦為100。想照出更好的照片嗎?想讓照片的大小輕鬆上M嗎?那就使用100吧。
debug.sf.hw:本參數定義了系統是否啟用GPU來渲染程式的UI,默認為0,推薦為1。 但要注意,如果此值為1,在某些應用程式中可能會出現顯示錯亂的現象(極少見)。
persist.sys.use_dithering:本參數定義了系統渲染器對圖像的縮放是否啟用抖動技術。可填寫的值為0或1。 當開啟抖動後,圖像的顯示(指背景、解鎖等的圖像,並非圖庫、相機那些的)會很柔和,但會增加CPU負載,最終導致ROM卡頓。
persist.sys.purgeable_assets:本參數定義了系統是否可以清除暫時不用的數據以釋放更多的RAM。可填寫的值為0或1。 當值為1時,系統會定期清理不用的數據以釋放更多的RAM,同時作為代價就是下次啟動程式或遊戲載入數據會變慢。
video.accelerate.hw:本參數定義了系統是否對視頻啟用硬體加速功能。這裡的視頻指代螢幕上顯示的東西,不僅僅是”電影視頻”。可填寫的值為0或1。 需要注意的是:摩托官方的2.2與2.3系統對此功能支持的不是很好,開啟後有時反而會降低系統流暢度,但CM系統絕對建議開啟。
debug.performance.tuning:本參數定義了系統是否針對性能做較調。可填寫的值為0或1。 需要注意的是:摩托官方的2.2和2.3系統對此功能支持的不是很好,開啟後有時反而會降低系統流暢度。但CM系統絕對建議開啟。
ro.HOME_APP_ADJ
ro.FOREGROUND_APP_ADJ
ro.VISIBLE_APP_ADJ
ro.PERCEPTIBLE_APP_ADJ
ro.HEAVY_WEIGHT_APP_ADJ
ro.SECONDARY_SERVER_ADJ
ro.BACKUP_APP_ADJ
ro.HIDDEN_APP_MIN_ADJ
ro.EMPTY_APP_ADJ
以上參數定義了各種應用程式的管理機制,這些並非一兩句話可以說清楚的,想深究的同學可以Google一下OOM Killer。可填寫的值為整數。這裡只給出值的規律:
0代表降低進程的優先權且駐留記憶體;
1代表駐留記憶體;
4代表快取較多的記憶體;
15代表儘量快取記憶體。
也就是說記憶體快取器是按照ADJ從大到小來進行快取的。
大家可根據自系統中自己對各種應用程式的要求進行更改。以下給出一個經典用例:
ro.FOREGROUND_APP_ADJ=0 前台程式駐留記憶體(不快取)
ro.VISIBLE_APP_ADJ=1 可見的程式駐留記憶體(不快取)
ro.PERCEPTIBLE_APP_ADJ=2 快取的RAM多一些
ro.HOME_APP_ADJ=3 桌面程式,快取的RAM稍多一些
ro.HEAVY_WEIGHT_APP_ADJ=4 快取的RAM再多一些
ro.SECONDARY_SERVER_ADJ=5 快取的RAM再再多一些
ro.BACKUP_APP_ADJ=6 快取的RAM再再再多一些
ro.HIDDEN_APP_MIN_ADJ=7 隱藏的程式,根據程式的類型進行記憶體管理,最低為快取的RAM再再再再多一些,最高就是直接快取記憶體。
ro.EMPTY_APP_ADJ=15 已經退出的程式,直接快取記憶體
ro.FOREGROUND_APP_MEM
ro.VISIBLE_APP_MEM
ro.PERCEPTIBLE_APP_MEM
ro.HEAVY_WEIGHT_APP_MEM
ro.SECONDARY_SERVER_MEM
ro.BACKUP_APP_MEM
ro.HOME_APP_MEM
ro.HIDDEN_APP_MEM
ro.CONTENT_PROVIDER_MEM
ro.EMPTY_APP_MEM
*******************************

總結

以上參數定義了各種類型的應用程式在記憶體緩衝的大小,單位是頁,套用上面ADJ參數相對應。 下面給出一個經典用例: ro.FOREGROUND_APP_MEM=1280 ro.VISIBLE_APP_MEM=2560 ro.PERCEPTIBLE_APP_MEM=3840 ro.HEAVY_WEIGHT_APP_MEM=6400 ro.SECONDARY_SERVER_MEM=7680 ro.BACKUP_APP_MEM=8960 ro.HOME_APP_MEM=5120 ro.HIDDEN_APP_MEM=12800 ro.CONTENT_PROVIDER_MEM=15360 ro.EMPTY_APP_MEM=20480

相關詞條

熱門詞條

聯絡我們