Android中/system/build.prop文件解读

本文详细解析了Android系统中build.prop文件的关键配置项,包括网络数据速率、语音编码标准、WiFi扫描间隔等设置及其意义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在/system下的build.prop文件里,我们常看见以下语句。
ro.ril.hsdpa.category = 10
ro.ril.hsupa.category = 6
ro.ril.hsxpa = 2
ro.ril.enable.amr.wideband=1
wifi.supplicant_scan_interval=45
dalvik.vm.heapsize=24m       //OutOfMemoryError
ro.ril.def.agps.mode = 2

这几行主要是设置网络数据、定位、语音、内存等方面的优化。

======================================================
根据上面的参数代码,下面列出不同数值对应代表的意义
ro.ril.hsdpa.category : 
1 = 1.2 Mbit/s
2 = 1.2 Mbit/s
3 = 1.8 Mbit/s
4 = 1.8 Mbit/s
5 = 3.6 Mbit/s
6 = 3.6 Mbit/s
7 = 7.2 Mbit/s
8 = 7.2 Mbit/s
9 = 10.1 Mbit/s
10 = 14.0 Mbit/s
11 = 0.9 Mbit/s
12 = 1.8 Mbit/s
13 = 17.6 Mbit/s
14 = 21.1 Mbit/s
15 = 23.4 Mbit/s
16 = 27.9 Mbit/s
19 = 35.3 Mbit/s
20 = 42.2 Mbit/s
21 = 23.4 Mbit/s
22 = 27.9 Mbit/s
23 = 35.3 Mbit/s
24 = 42.2 Mbit/s
25 = 46.8 Mbit/s
26 = 55.9 Mbit/s
27 = 70.6 Mbit/s
28 = 84.4 Mbit/s
HSDPA(High Speed Downlink Packet Access):高速下行分组接入

ro.ril.hsupa.category : 
1 = 0.73 Mbit/s
2 = 1.46 Mbit/s
3 = 1.46 Mbit/s
4 = 2.93 Mbit/s
5 = 2.00 Mbit/s
6 = 5.76 Mbit/s
7 = 11.5 Mbit/s
HSUPA (high speed uplink packet access):高速上行链路分组接入

ro.ril.hsxpa : 3G数据标准选择
0 – UMTS r99
1 – HSDPA
2 – HSDPA/HSUPA

ro.ril.enable.amr.wideband:
0 – 关闭对AMR wideband /HD Audio的支持
1 – 打开对AMR wideband /HD Audio的支持
    AMR WideBand,语音带宽范围,全称为“Adaptive Multi-rate - Wideband”,即“自适应多速率宽带编码”,
采样频率为16kHz,是一种同时被国际标准化组织 ITU-T和3GPP采用的宽带语音编码标准,也称 为G722.2标准。
AMR-WB提供语音带宽范围达到50~7000Hz,用户可主观感受到话音比以前更加自 然、舒适和易于分辨。
AMR-WB应用于EDGE、3G可充分体现其优势。足够的传输带宽保证AMR-WB可采用从6.6kb/s到23.85kb/s共九种编码,语音质量超越PSTN固定 电话 。
PS:这里需要注意的是有些版本的Radio不支持AMR wideband,那样就算设置为1也支持不了这 功能

wifi.supplicant_scan_interval:
wifi无线局域网扫描间隔 时间,单位为秒。
调大这个值可节约耗电。

dalvik.vm.heapsize=24m:
虚拟内存大小,单位为Mb,调大这个可以略微提高性能,对于某些FC问题确实有用。
在hdpi下,不设置成24m以上,就会导致 系统无法启动。

ro.ril.def.agps.mode:AGPS模式选择
0 – 关闭AGPS服务支持。可以节约耗电和网络流量,不过会延长GPS定位时间。
1 – 
2 – 打开AGPS服务支持。
 
 
 

wanqi@wanqi-System-Product-Name:~/huiye_Q9/msm7627-app$ 
wanqi@wanqi-System-Product-Name:~/huiye_Q9/msm7627-app$ adb push build.prop /system/
52 KB/s (2362 bytes in 0.044s)
wanqi@wanqi-System-Product-Name:~/huiye_Q9/msm7627-app$ adb shell getprop | grep heap
[dalvik.vm.heapsize]: [24m]
wanqi@wanqi-System-Product-Name:~/huiye_Q9/msm7627-app$ adb shell getprop | grep heap
[dalvik.vm.heapsize]: [48m]
wanqi@wanqi-System-Product-Name:~/huiye_Q9/msm7627-app$ adb shell getprop | grep heap
[dalvik.vm.heapsize]: [48m]
wanqi@wanqi-System-Product-Name:~/huiye_Q9/msm7627-app$ adb pull /system/build.prop .
29 KB/s (2362 bytes in 0.078s)
wanqi@wanqi-System-Product-Name:~/huiye_Q9/msm7627-app$ vim build.prop 
wanqi@wanqi-System-Product-Name:~/huiye_Q9/msm7627-app$ adb push build.prop /system/
50 KB/s (2362 bytes in 0.045s)
wanqi@wanqi-System-Product-Name:~/huiye_Q9/msm7627-app$ adb shell getprop | grep heap
[dalvik.vm.heapsize]: [48m]
wanqi@wanqi-System-Product-Name:~/huiye_Q9/msm7627-app$

 

 

 

开机初始化会在对应的init.rc中增加如下一行:setprop dalvik.vm.heapsize 48m。

 

ActivityManager.java (android/frameworks/base/core/java/android/app):  String vmHeapSize = SystemProperties.get("dalvik.vm.heapsize", "16m");
AndroidRuntime.cpp (android/frameworks/base/core/jni):    property_get("dalvik.vm.heapsize", heapsizeOptsBuf+4, "16m");
Init.pxa910-based.rc (android/vendor/omap/tw50f/rootdir): setprop dalvik.vm.heapsize 32m
Init.pxa910-based.rc (android/vendor/omap/tw60f/rootdir): setprop dalvik.vm.heapsize 32m
Main.c (android/external/qemu/android):                   boot_property_add("dalvik.vm.heapsize",tmp);

 

 

 

build.prop 是一个属性文件,在Android系统中.prop文件很重要,记录了系统的设置和改变,类似於/etc中的文件。

# begin build properties
# autogenerated by buildinfo.sh
ro.build.id=GRI40
ro.build.display.id=GRJ22
ro.build.version.incremental=eng.mur4ik.20110505.195322
ro.build.version.sdk=10 2.3ROM
ro.build.version.codename=REL 
ro.build.version.release=2.3.4 android版本
ro.build.date=三 12月 15 20:41:26 CST 2010 时区时间CST可以代表4个时区,这个百度一下
ro.build.date.utc=0
ro.build.type=user
ro.build.user=mur4ik
ro.build.host=mur4ik-VirtualBox
ro.build.tags=test-keys
ro.product.model=GT540 手机型号 
ro.product.brand=google
ro.product.name=swift
ro.product.device=swift
ro.product.board=swift 
ro.product.cpu.abi=armeabi-v6l
ro.product.cpu.abi2=armeabi
ro.product.manufacturer=LGE
ro.product.locale.language=zh 刷机后默认语言
ro.product.locale.region=CN 刷机后启动的默认语言
ro.board.platform=msm7k
# ro.build.product is obsolete; use ro.product.device
ro.build.product=swift 
# Do not try to parse ro.build.description or .fingerprint
ro.build.description=soju-user 2.3.3 GRI40 102588 release-keys 内部版本号
ro.build.fingerprint=google/soju/crespo:2.3.3/GRI40/102588:user/release-keys
# end build properties

#
# system.prop for optimus
#

###RIL Config

rild.libpath=/system/lib/libril-qc-1.so
rild.libargs=-d /dev/smd0
persist.rild.nitz_plmn=
persist.rild.nitz_long_ons_0=
persist.rild.nitz_long_ons_1=
persist.rild.nitz_long_ons_2=
persist.rild.nitz_long_ons_3=
persist.rild.nitz_short_ons_0=
persist.rild.nitz_short_ons_1=
persist.rild.nitz_short_ons_2=
persist.rild.nitz_short_ons_3=
DEVICE_PROVISIONED=1

# LGE_CHANGE_S, [ jeongmini.park@lge.com], 2010-05-03, < Enabed EONS feature >
persist.cust.tel.eons=1
# LGE_CHANGE_E, [ jeongmini.park@lge.com], 2010-05-03, < Enabed EONS feature >

## QC RIL doesn't replay call rings
ro.telephony.call_ring.multiple=false
ro.telephony.call_ring.delay=3000 响铃延迟,单位为毫秒。(怪盗补充)

# Default network type. 默认网络类型
# 0 => WCDMA preferred.
ro.telephony.default_network=0 
ro.ril.baseband=AMSS53404003
ro.ril.ecclist=112,911,101,102,103
ro.ril.gprsclass=12 
ro.ril.hsxpa=2 3G数据标准选择 0 – UMTS r99 1 – HSDPA 2 – HSDPA/HSUPA

# Touch Key,  hopemini@lge.com, 2009-12-10
# SEARCH, BACK, HOME, MENU, CALL, END
ro.lge.touchkey=MENU|BACK
# Vibrator amp default value
ro.lge.vibrator_amp=125

## wifi
wifi.interface=wlan0
wifi.supplicant_scan_interval=120 WIFI扫描时间单位为秒 调大这个值可节约耗电
ro.wifi.channels=14 

## opengles 2.0 LINUX下针对多媒体的一些功能
ro.opengles.version=131072
# Uncomment below to enable using MDP for composition
# Change to 1 for enable using GPU for composition
debug.sf.hw=1 硬件加速设定 0是关闭, 1是开启
video.accelerate.hw=1

ro.media.dec.aud.wma.enabled=1
ro.media.dec.vid.wmv.enabled=1
ro.media.dec.aud.flac.enabled=1
ro.media.dec.aud.ape.enabled=1
ro.media.dec.vid.avi.enabled=1
ro.media.dec.vid.flv.enabled=1
ro.media.dec.vid.qt.enabled=1
ro.media.dec.vid.rm.enabled=1

media.stagefright.enable-player=true 
media.stagefright.enable-meta=false
media.stagefright.enable-scan=false
media.stagefright.enable-http=false

ro.config.sync=yes

#increase dalvik heap size,  yongchan.jeong@lge.com, 20100719
dalvik.vm.dexopt-flags=m=y
dalvik.vm.heapsize=24m 虚拟内存范围由12M-48M, 默认是24M
dalvik.vm.execution-mode=int:jit 
dalvik.vm.lockprof.threshold=500
windowsmsg.max_events_per_sec=260

persist.service.mount.playsnd=0
ro.com.google.locationfeatures=1
ro.setupwizard.enable_bypass=1

## BEGIN:  yongmin.jung@lge.com 2010-05-18
## ADD : set lcd density to 160
ro.sf.lcd_density=160 DPI
ro.sf.hw_lcd_density=160
## END:  yongmin.jung@lge.com 2010-05-18

#
# ADDITIONAL_BUILD_PROPERTIES
#
keyguard.no_require_sim=true
ro.product.model=LG-GT540
ro.rommanager.developerid=cyanogenmod
ro.url.legal=http://www.google.com/intl/%s/mobile/android/basic/phone-legal.html
ro.url.legal.android_privacy=http://www.google.com/intl/%s/mobile/android/basic/privacy.html
ro.com.google.clientidbase=android-google
ro.com.android.wifi-watchlist=GoogleGuest
ro.setupwizard.enterprise_mode=1
ro.com.android.dateformat=MM-dd-yyyy
ro.com.android.dataroaming=false
ro.config.ringtone=Playa.ogg 默认来电铃声
ro.config.notification_sound=regulus.ogg 默认通知铃声
ro.config.alarm_alert=Alarm_Beep_03.ogg 默认闹钟铃声
ro.modversion=CyanogenMod-7.0.3-GT540-MUR4IK MOD版本号
ro.setupwizard.mode=DISABLED 开机出现的帐号设置向导,ENABLED为显示,DISABLED为禁用,OPTIONAL为可选

net.bt.name=Android
dalvik.vm.stack-trace-file=/data/anr/traces.txt
"打包结果:* What went wrong: UATHelper: 打包 (Android (ASTC)): Could not determine the dependencies of task ':app:buildDebugPreBundle'. UATHelper: 打包 (Android (ASTC)): > Could not resolve all task dependencies for configuration ':app:debugRuntimeClasspath'. UATHelper: 打包 (Android (ASTC)): > Could not resolve com.google.android.gms:play-services-audience:[17.0.0]. UATHelper: 打包 (Android (ASTC)): Required by: UATHelper: 打包 (Android (ASTC)): project :app > com.google.android.gms:play-services-plus:17.0.0 UATHelper: 打包 (Android (ASTC)): > Failed to list versions for com.google.android.gms:play-services-audience. UATHelper: 打包 (Android (ASTC)): > Unable to load Maven meta-data from https://dl.google.com/dl/android/maven2/com/google/android/gms/play-services-audience/maven-metadata.xml. UATHelper: 打包 (Android (ASTC)): > Could not HEAD 'https://dl.google.com/dl/android/maven2/com/google/android/gms/play-services-audience/maven-metadata.xml'. UATHelper: 打包 (Android (ASTC)): > ��֪�������������� (dl.google.com) UATHelper: 打包 (Android (ASTC)): > Failed to list versions for com.google.android.gms:play-services-audience. UATHelper: 打包 (Android (ASTC)): > Unable to load Maven meta-data from https://repo.maven.apache.org/maven2/com/google/android/gms/play-services-audience/maven-metadata.xml. UATHelper: 打包 (Android (ASTC)): > Could not get resource 'https://repo.maven.apache.org/maven2/com/google/android/gms/play-services-audience/maven-metadata.xml'. UATHelper: 打包 (Android (ASTC)): > Could not GET 'https://repo.maven.apache.org/maven2/com/google/android/gms/play-services-audience/maven-metadata.xml'. UATHelper: 打包 (Android (ASTC)): > ��֪�������������� (repo.maven.apache.org) UATHelper: 打包 (Android (ASTC)): > Failed to list versions for com.google.android.gms:play-services-audience. UATHelper: 打包 (Android (ASTC)): > Unable to load Maven meta-data from https://jcenter.bintray.com/com/google/android/gms/play-services-audience/maven-metadata.xml. UATHelper: 打包 (Android (ASTC)): > Could not get resource 'https://jcenter.bintray.com/com/google/android/gms/play-services-audience/maven-metadata.xml'. UATHelper: 打包 (Android (ASTC)): > Could not GET 'https://jcenter.bintray.com/com/google/android/gms/play-services-audience/maven-metadata.xml'. UATHelper: 打包 (Android (ASTC)): > ��֪�������������� (jcenter.bintray.com) UATHelper: 打包 (Android (ASTC)): * Try: UATHelper: 打包 (Android (ASTC)): Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. UATHelper: 打包 (Android (ASTC)): * Get more help at https://help.gradle.org UATHelper: 打包 (Android (ASTC)): BUILD FAILED in 5s LogSlate: Last resort fallback font was requested. Font: '../../../Engine/Content/Slate/Fonts/DroidSansFallback.ttf', Character: '֪ (U+05aa)' LogSlate: Took 0.008434 seconds to synchronously load lazily loaded font '../../../Engine/Content/SlateDebug/Fonts/LastResort.ttf' (5269K) UATHelper: 打包 (Android (ASTC)): ERROR: cmd.exe failed with args /c ""F:\BaiduNetdiskDownload\Fire\Fire\Intermediate\Android\gradle\rungradle.bat"" :app:bundleDebug UATHelper: 打包 (Android (ASTC)): (see C:\Users\Administrator\AppData\Roaming\Unreal Engine\AutomationTool\Logs\F+UE5_2_1+UE_5.2\Log.txt for full exception trace) UATHelper: 打包 (Android (ASTC)): AutomationTool executed for 0h 43m 35s UATHelper: 打包 (Android (ASTC)): AutomationTool exiting with ExitCode=1 (Error_Unknown) UATHelper: 打包 (Android (ASTC)): BUILD FAILED PackagingResults: Error: Unknown Error" 分析ue5.2 打包安卓端报错原因
07-17
ninja: build stopped: subcommand failed. FAILED: [W][2025-07-25T14:38:41+0800][51549] void cmdline::logParams(nsjconf_t *)():250 Process will be UID/EUID=0 in the global user namespace, and will have user root-level access to files [W][2025-07-25T14:38:41+0800][51549] void cmdline::logParams(nsjconf_t *)():260 Process will be GID/EGID=0 in the global user namespace, and will have group root-level access to files 14:38:57 ninja failed with: exit status 1 #### failed to build some targets (04:39 (mm:ss)) #### cat: out/target/product/k50sv1_64_bsp/system/build.prop: 没有那个文件或目录 当前有默认屏参lcm.txt第一行默认:jd9365da_h3_hd_dsi_vdo_boe_n91 mkdir: 无法创建目录"/media/code2/Lpz/mtk6580_Q/alps/pack_out//": 文件已存在 cp: 无法获取'out/target/product/k50sv1_64_bsp/recovery-verified.img' 的文件状态(stat): 没有那个文件或目录 cp: 无法获取'out/target/product/k50sv1_64_bsp/md1img-verified.img' 的文件状态(stat): 没有那个文件或目录 cp: 无法获取'out/target/product/k50sv1_64_bsp/md1dsp-verified.img' 的文件状态(stat): 没有那个文件或目录 cp: 无法获取'out/target/product/k50sv1_64_bsp/md1arm7-verified.img' 的文件状态(stat): 没有那个文件或目录 cp: 无法获取'out/target/product/k50sv1_64_bsp/md3img-verified.img' 的文件状态(stat): 没有那个文件或目录 cp: 无法获取'out/target/product/k50sv1_64_bsp/boot-verified.img' 的文件状态(stat): 没有那个文件或目录 cp: 无法获取'out/target/product/k50sv1_64_bsp/odmdtbo-verified.img' 的文件状态(stat): 没有那个文件或目录 cp: 无法获取'out/target/product/k50sv1_64_bsp/vendor.img' 的文件状态(stat): 没有那个文件或目录 cp: 无法获取'out/target/product/k50sv1_64_bsp/system.img' 的文件状态(stat): 没有那个文件或目录 cp: 无法获取'out/target/product/k50sv1_64_bsp/cache.img' 的文件状态(stat): 没有那个文件或目录 cp: 无法获取'out/target/product/k50sv1_64_bsp/userdata.img' 的文件状态(stat): 没有那个文件或目录 cp: 无法获取'out/target/product/k50sv1_64_bsp/vendor/etc/mddb/MDDB.META_*.EDB' 的文件状态(stat): 没有那个文件或目录 cp: 无法获取'out/target/product/k50sv1_64_bsp/obj/PACKAGING/target_files_intermediates/*.zip' 的文件状态(stat): 没有那个文件或目录 zip error: Nothing to do! (.zip)
最新发布
07-26
<think>嗯,用户的问题是关于MTK平台编译时system/build.prop文件未更新的情况。这个问题在Android系统开发中挺常见的,需要仔细分析可能的原因。 用户可能是MTK平台的开发者或系统工程师,正在编译定制ROM时遇到了build.prop未更新的问题。用户可能已经尝试过重新编译但问题依旧存在,所以比较着急。深层需求应该是要彻底解决编译系统时的配置同步问题。 从技术角度看,build.prop文件生成涉及多个环节:Makefile调用buildinfo.sh脚本、叠加system.prop配置、设备特定配置追加等。引用1提到build.prop是由build/tools/buildinfo.sh生成,并会追加system.prop的配置。引用3提到权限问题可能导致文件写入失败,这提示我们需要检查SELinux策略。 常见原因可能有五个方面:首先是编译缓存问题,clean操作不彻底会导致残留旧文件;其次是配置覆盖逻辑,device/或vendor/下的定制配置可能覆盖了修改;第三是脚本执行错误,buildinfo.sh执行异常会影响文件生成;第四是文件权限问题,特别是SELinux策略限制;最后是编译环境问题,如Python版本不兼容等。 针对这些可能性,建议用户先执行最彻底的全量编译clean,然后检查device目录下的配置优先级。如果问题依旧,需要检查buildinfo.sh脚本是否正常输出,并查看编译日志中的avc denied提示。特别要注意vendor/mtk/proprietary/下的设备专属配置。 用户可能还需要检查几个关键点:build/core/main.mk中的PRODUCT_DEFAULT_PROPERTY_OVERRIDES设置,以及是否在BoardConfig.mk中错误设置了TARGET_SYSTEM_PROP。对于SELinux问题,可以临时切换为宽容模式测试。 如果用户需要更具体的帮助,建议提供编译日志片段,特别是"Generating build.prop"相关输出和任何错误信息。这类问题通常需要结合具体日志分析,因为不同MTK平台版本(如Android 8.0或11)的编译流程会有差异。</think>在MTK平台编译Android系统时遇到`system/build.prop`文件未更新的问题,通常由以下原因及解决方法导致: --- ### **常见原因与解决方法** #### 1. **编译缓存未清理** - **问题**:增量编译未正确应用修改。 - **解决**:执行全量清理后重新编译: ```bash make clean # 清理输出目录 rm -rf out/ # 彻底删除out目录 source build/envsetup.sh lunch <target> # 选择目标设备 make -j8 # 重新编译 ``` #### 2. **配置覆盖优先级错误** - **问题**:设备专属配置(`device/<vendor>/<device>/system.prop`)覆盖了全局修改。 - **解决**: 1. 检查优先级顺序: ```bash device/<vendor>/<device>/system.prop # 最高优先级 vendor/<vendor>/props/system.prop # 次优先级 build/tools/buildinfo.sh # 基础生成脚本 ``` 2. 修改对应设备目录下的`system.prop`文件,而非全局文件。 #### 3. **脚本生成逻辑异常** - **问题**:`build/tools/buildinfo.sh`未正确执行或输出被截断。 - **解决**: 1. 检查脚本权限: ```bash chmod a+x build/tools/buildinfo.sh ``` 2. 在`buildinfo.sh`中手动添加测试行验证: ```bash echo "# Debug: build.prop updated at $(date)" >> $OUT/system/build.prop ``` #### 4. **SELinux权限限制** - **问题**:编译过程因SELinux策略拒绝写入(参考引用[3]的`avc: denied { write }`错误)。 - **解决**: 1. 临时禁用SELinux检查: ```bash export SELINUX_IGNORE_NEVERALLOWS=true ``` 2. 检查`/file_contexts`中是否包含: ```text /system/build\.prop u:object_r:system_file:s0 ``` #### 5. **编译环境问题** - **问题**:Python版本或依赖库不兼容。 - **解决**: ```bash python --version # 确保为Python 2.7或3.6+ pip install protobuf pyyaml # 安装必需依赖 ``` --- ### **关键检查点** 1. **生成日志**:编译时搜索日志中的`Generating build.prop`,确认是否执行。 2. **文件路径**:检查最终生成的路径: ```bash out/target/product/<device>/system/build.prop ``` 3. **设备配置**:验证`BoardConfig.mk`中是否错误设置了: ```makefile TARGET_SYSTEM_PROP := device/<vendor>/<device>/system.prop ``` --- ### **引用分析** - 引用[1]说明`build.prop`由`build/tools/buildinfo.sh`生成,并叠加`system.prop`配置 [^1]。 - 引用[3]的权限错误提示需检查SELinux策略或文件节点权限 [^3]。 --- ### **操作流程建议** ```mermaid graph TD A[修改配置] --> B{清理缓存} B -->|make clean| C[全量编译] B -->|rm -rf out| C C --> D[检查生成日志] D -->|成功| E[验证out目录文件] D -->|失败| F[检查SELinux/权限] F --> G[更新file_contexts] G --> C ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值