build.prop

build.prop

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

總述

在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

相關詞條

熱門詞條

聯絡我們