更改";getprop";在android外壳中

更改";getprop";在android外壳中,android,android-source,android-kernel,Android,Android Source,Android Kernel,当我们在adb中使用getprop时,我试图更改输出。我知道init将从/default.prop/system/build.prop/system/default.prop/data/local.prop读取系统属性。在我的例子中,我只得到了/default.prop和/system/build.prop。所以我所做的就是获取android源代码并将其添加到build/target/product/core.mk中 PRODUCT_PROPERTY_OVERRIDES :=\ ro.bootl

当我们在adb中使用getprop时,我试图更改输出。我知道init将从/default.prop/system/build.prop/system/default.prop/data/local.prop读取系统属性。在我的例子中,我只得到了/default.prop和/system/build.prop。所以我所做的就是获取android源代码并将其添加到build/target/product/core.mk中

PRODUCT_PROPERTY_OVERRIDES :=\
ro.bootloader="PWN" \
ro.bootmode="PWN" \
ro.hardware="PWN" \
ro.kernel.qemu="PWN" \
ro.product.device="PWN" \
ro.product.model="PWN" \
ro.product.name="PWN" 
然后,我编译源代码。但结果很奇怪。我可以看到system/build.prop已更改

# begin build properties
# autogenerated by buildinfo.sh   
ro.build.id=N2G47F
ro.build.display.id=aosp_arm-eng 7.1.2 N2G47F eng.sam.20180525.204329 
test-keys 
ro.build.version.incremental=eng.sam.20180525.204329
ro.build.version.sdk=25
ro.build.version.preview_sdk=0
ro.build.version.codename=REL
ro.build.version.all_codenames=REL
ro.build.version.release=7.1.2
ro.build.version.security_patch=2017-04-05
ro.build.version.base_os=
ro.build.date=Fri May 25 20:43:29 CST 2018
ro.build.date.utc=1527252209
ro.build.type=eng
ro.build.user=sam
ro.build.host=ubuntu
ro.build.tags=test-keys
ro.build.flavor=aosp_arm-eng
ro.product.model=AOSP on ARM Emulator
ro.product.brand=Android
ro.product.name=aosp_arm
ro.product.device=generic
ro.product.board=
# ro.product.cpu.abi and ro.product.cpu.abi2 are obsolete,
# use ro.product.cpu.abilist instead.
ro.product.cpu.abi=armeabi-v7a
ro.product.cpu.abi2=armeabi
ro.product.cpu.abilist=armeabi-v7a,armeabi
ro.product.cpu.abilist32=armeabi-v7a,armeabi
ro.product.cpu.abilist64=
ro.product.manufacturer=unknown
ro.product.locale=en-US
ro.wifi.channels=
ro.board.platform=
# ro.build.product is obsolete; use ro.product.device
ro.build.product=generic
# Do not try to parse description, fingerprint, or thumbprint
ro.build.description=aosp_arm-eng 7.1.2 N2G47F eng.sam.20180525.204329 
test-keys


ro.build.characteristics=emulator
# end build properties
#
# from build/target/board/generic/system.prop
#
#
# system.prop for generic sdk
#

rild.libpath=/system/lib/libreference-ril.so
rild.libargs=-d /dev/ttyS0

#
# ADDITIONAL_BUILD_PROPERTIES
#
keyguard.no_require_sim=true
ro.com.android.dataroaming=true
ro.config.ringtone=Ring_Synth_04.ogg
ro.config.notification_sound=pixiedust.ogg
ro.carrier=unknown
ro.bootloader=PWN
ro.bootmode=PWN
ro.hardware=PWN
ro.kernel.qemu=PWN
ro.product.device=PWN
ro.product.model=PWN
ro.product.name=PWN
ro.config.alarm_alert=Alarm_Classic.ogg
ro.ril.hsxpa=1
ro.ril.gprsclass=10
ro.adb.qemud=1
persist.sys.dalvik.vm.lib.2=libart.so
dalvik.vm.isa.arm.variant=generic
dalvik.vm.isa.arm.features=default
ro.kernel.android.checkjni=1
dalvik.vm.lockprof.threshold=500
dalvik.vm.image-dex2oat-filter=verify-at-runtime
net.bt.name=Android
dalvik.vm.stack-trace-file=/data/anr/traces.txt
显然,我覆盖了属性。但当我在abd shell中尝试getprop时,输出如下:

[ro.product.device]: [generic]
[ro.product.locale]: [en-US]
[ro.product.manufacturer]: [unknown]
[ro.product.model]: [AOSP on ARM Emulator]
[ro.product.name]: [aosp_arm]

[ro.bootloader]: [unknown]
[ro.bootmode]: [unknown]

我在这里只列出了一些,但我们可以看到这些属性都没有改变。这很奇怪。因为init应该在启动时从build.prop读取。有人告诉我重新编译整个系统,而不是只编译sdk。我刚刚编译了整个系统,但又失败了。这里也有同样的问题。我用的是牛轧糖7.1.2r3。有什么帮助吗?

如果您在aosp
build
目录中搜索其中一些属性,您将看到由makefile变量设置的属性。例如,在
build/make/tools/buildinfo.sh
中,您可以看到以下行:

echo "ro.product.model=$PRODUCT_MODEL"
它的工作原理有点复杂,但关键是您需要在
.mk
文件中设置
产品模型,就像Google在其文档中建议的那样: