/system/build.prop

本文详细解读了Android系统中的build.prop文件,包括其重要性、内容结构以及部分关键属性如版本、设备型号、系统语言等。通过解析此文件,用户能深入了解Android设备的定制配置和底层设置。

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

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
<think>好的,我现在需要帮助用户解决如何通过Xposed框架Hook RandomAccessFile类的readline方法,从而在读取/system/build.prop文件时过滤掉包含'vmos'的字符串。首先,我需要回顾一下Xposed框架的基本工作原理和Hook的方法。 Xposed框架允许开发者通过编写模块来修改Android应用程序或系统服务的行为,主要是在方法执行前后插入自定义代码。用户的目标是修改RandomAccessFile类的readline方法,特别是当该方法读取特定文件时进行过滤。 首先,我需要确认RandomAccessFile类中的readLine方法是否可以被Hook。根据Java文档,RandomAccessFile确实有一个readLine()方法,用于读取下一行文本。因此,使用Xposed的findAndHookMethod来拦截这个方法应该是可行的。 接下来,用户希望只在读取/system/build.prop文件时应用这个过滤。因此,在Hook的回调中,需要判断当前操作的文件路径是否是目标文件。但RandomAccessFile的构造函数接受文件路径或File对象,所以可能需要先Hook构造函数,获取文件路径,并保存起来,然后在readLine的时候检查是否是目标文件。 可能的步骤是: 1. Hook RandomAccessFile的构造函数,获取传入的文件路径,并保存到某个上下文中,比如一个ThreadLocal变量或者使用Xposed的额外参数。 2. 在Hook readLine方法时,检查当前实例对应的文件路径是否是/system/build.prop。 3. 如果是,则对readLine的结果进行处理,过滤掉包含'vmos'的行。 不过,需要注意的是,RandomAccessFile可能有多个构造函数,例如接受File和String模式的,或者String路径和String模式的。需要确保Hook所有可能的构造函数,以正确捕获文件路径。 另外,线程安全问题需要考虑,比如不同的RandomAccessFile实例可能同时被不同的线程使用,所以保存文件路径时需要确保每个实例的数据独立。可以使用Xposed提供的辅助方法,如param.thisObject来获取当前实例,并将文件路径与实例关联起来,例如使用WeakHashMap来存储实例和对应的文件路径。 在实现过滤时,当调用readLine得到原始结果后,检查是否包含'vmos',如果包含,则返回null或者跳过该行继续读取下一行,直到找到不包含的行,或者到达文件末尾。需要注意的是,直接修改返回值可能会导致后续读取的位置不正确,可能需要更复杂的处理,比如在读取时动态过滤,同时调整文件指针的位置,但这样可能会比较复杂,尤其是RandomAccessFile允许随机访问,处理起来可能比较困难。 另一个可能的办法是替换整个readLine方法,或者返回处理后的字符串,但需要确保不影响其他文件的操作,仅在目标文件时进行过滤。例如,在afterHookedMethod回调中,获取原始结果,如果该行包含'vmos',则返回null或者空字符串,或者继续读取下一行,但这样可能会改变原方法的行为,导致调用者出现异常,特别是如果应用依赖于特定的行内容的话。 因此,可能需要更谨慎的处理,例如,当读取到包含'vmos'的行时,返回修改后的内容,或者直接跳过该行,继续读取下一行。不过,这需要在不破坏文件指针的情况下实现,可能需要Hook更底层的方法,或者结合其他Hook点。 此外,还需要考虑Android版本的不同,某些方法可能有不同的实现,需要进行测试。同时,需要处理不同模式的构造函数,确保正确获取文件路径。 总结步骤: 1. Hook所有RandomAccessFile的构造函数,记录实例对应的文件路径。 2. Hook readLine方法,在afterHookedMethod回调中,检查当前实例是否关联到/system/build.prop文件。 3. 如果是,则检查返回的字符串是否包含'vmos',如果包含,则可能返回处理后的结果,如null或修改后的字符串,或者继续读取直到找到不含'vmos'的行。 在代码实现中,需要注意Xposed API的使用,如XposedHelpers.findAndHookMethod,正确指定类名和方法参数类型。此外,处理字符串时应考虑编码问题,因为readLine返回的是使用ISO-8859-1解码的字符串,可能需要正确的转换。 最后,测试模块时,需要确保只在目标文件上生效,不影响其他文件的操作,同时正确处理各种边缘情况,比如多行包含'vmos'的情况,或者文件末尾的处理。</think>要实现通过Xposed框架Hook `RandomAccessFile`类的`readLine`方法,在读取`/system/build.prop`时过滤包含`vmos`的内容,需按以下步骤操作: ### 1. Hook构造函数以捕获文件路径 首先需拦截`RandomAccessFile`的构造函数,以确定当前实例是否操作目标文件: ```java XposedHelpers.findAndHookConstructor(RandomAccessFile.class, File.class, String.class, new XC_MethodHook() { @Override protected void afterHookedMethod(MethodHookParam param) throws Throwable { File file = (File) param.args[0]; if (file.getAbsolutePath().equals("/system/build.prop")) { // 标记该实例关联目标文件 XposedHelpers.setAdditionalInstanceField(param.thisObject, "targetFile", true); } } }); XposedHelpers.findAndHookConstructor(RandomAccessFile.class, String.class, String.class, new XC_MethodHook() { @Override protected void afterHookedMethod(MethodHookParam param) throws Throwable { String path = (String) param.args[0]; if (path.equals("/system/build.prop")) { XposedHelpers.setAdditionalInstanceField(param.thisObject, "targetFile", true); } } }); ``` ### 2. Hook readLine方法并过滤内容 对`readLine`方法进行Hook,并在返回前修改结果: ```java XposedHelpers.findAndHookMethod(RandomAccessFile.class, "readLine", new XC_MethodHook() { @Override protected void afterHookedMethod(MethodHookParam param) throws Throwable { Boolean isTarget = (Boolean) XposedHelpers.getAdditionalInstanceField(param.thisObject, "targetFile"); if (isTarget != null && isTarget) { String line = (String) param.getResult(); if (line != null && line.contains("vmos")) { param.setResult(null); // 过滤该行,返回null表示行结束 } } } }); ``` ### 关键点说明 1. **多构造函数处理**:需Hook所有`RandomAccessFile`构造函数(`File`和`String`路径类型)[^3] 2. **实例标记**:通过`setAdditionalInstanceField`绑定实例与目标文件状态 3. **行过滤逻辑**:在`afterHookedMethod`中修改返回值,避免影响文件指针位置 ### 注意事项 - 需系统分区可写才能修改框架行为[^1] - 建议在模拟器或已root设备测试 - 过滤后可能导致依赖该行的应用异常
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值