某天遇到开机modem一直reset,一开始以为是有提交modem导致,但是查看代码,却发现相关提交和modem完全没有关系。
粗略查看提交,也没有看出哪里有异常,于是回退版本。
在回退到其中一个节点编译出来有异常,仔细查看代码,终于发现问题的所在。
PRODUCT_PROPERTY_OVERRIDES := \
ro.config.alarm_alert=Pollux.ogg \
ro.config.ringtone=XtremeTone.ogg \
ro.config.notification_sound=Pollux.ogg
这是一个不起眼的改动,却引发了modem的重启,为什么呢?
这个就需要对makefile的赋值运算符有一定的了解。
= 是最基本的赋值
:= 是覆盖之前的值
?= 是如果没有被赋值过就赋予等号后面的值
+= 是添加等号后面的值
于是,我们可以很清晰的看到,PRODUCT_PROPERTY_OVERRIDES :=这个将之前定义过的PRODUCT_PROPERTY_OVERRIDES值都覆盖了!!!!!
正确的写法应该是:
PRODUCT_PROPERTY_OVERRIDES += \
ro.config.alarm_alert=Pollux.ogg \
ro.config.ringtone=XtremeTone.ogg \
ro.config.notification_sound=Pollux.ogg
我们无法知道前面赋值的PRODUCT_PROPERTY_OVERRIDES,都有一些什么相关的值。
覆盖的话,可能导致modem reset,重启,等一些莫名其妙的问题,