80P平台有个平台问题:进入MMITEST和FACTORYTEST中FM测试项 - 插入耳机,会提示无法收听,但是FM应用中功能是ok的
8月20日的软件该功能还是好的,并且看了MMITest和FactoryTest中没有FM测试项相关的修改,请帮忙排查下是什么原因
09-02 07:09:16.172 5172-5246/com.nbbsw.mmi_test W/AudioTrack: See the documentation of AudioTrack() for what to use instead with android.media.AudioAttributes to qualify your playback use case
09-02 07:09:16.172 5172-5246/com.nbbsw.mmi_test D/FmService: initAudioRecordSink, mAudioRecord = android.media.AudioRecord@9bdee55,mAudioTrack = android.media.AudioTrack@f3a906a
09-02 07:09:16.172 5172-5246/com.nbbsw.mmi_test I/FmService: startRender: notifying for mRenderLock
09-02 07:09:16.173 5172-5250/com.nbbsw.mmi_test I/FmService: RenderThread: run, isRender = false
09-02 07:09:16.173 5172-5250/com.nbbsw.mmi_test I/FmService: RenderThread: waiting for mRenderLock
09-02 07:09:16.174 5172-5246/com.nbbsw.mmi_test I/FMLIB_COM: COM_open_dev start
09-02 07:09:16.174 5172-5246/com.nbbsw.mmi_test E/FMLIB_COM: Open /dev/fm failed, Permission denied
09-02 07:09:16.174 5172-5246/com.nbbsw.mmi_test I/FMLIB_COM: COM_open_dev, [fd=-1] [ret=-1007]
09-02 07:09:16.174 5172-5246/com.nbbsw.mmi_test E/FMLIB_CORE: FMR_open_dev failed, [fd=-1]
09-02 07:09:16.174 5172-5246/com.nbbsw.mmi_test D/FMLIB_JNI: openDev, [ret=-1007]
09-02 07:09:16.174 5172-5246/com.nbbsw.mmi_test I/FMLIB_JNI: powerUp, [freq=96]
分析:
从log看是在Open /dev/fm failed, Permission denied 权限存在问题。
出现节点权限问题的时候,我们一般怀疑两点,拿userdebug软件test这两点怀疑:
1)SELinux权限问题,root remount手机,设置 shell setenforce 0;
adb shell getenforce ====>Permissive
测试,问题依旧存在,排除SELinux权限问题
2) /dev/fm 节点读写执行权限问题, root remount手机,
adb shell
Smart_S200_3G:/ # cd dev/
Smart_S200_3G:/dev # chmod 666 fm
测试,问题不在复现,问题定位在此。
3)adb shell查看问题时候节点权限:
crw-rw---- 1 media media 231, 0 2019-09-02 07:06 fm
4)
查看工程代码:
80P\device\mediatek\mt6580\init.mt6580.rc
# FM Radio device node
mknod /dev/fm c 193 0;
chmod 0660 /dev/fm
chown media media /dev/fm
对比39O,39P代码:
此处权限被修改为了
# FM Radio device node
mknod /dev/fm c 193 0;
chmod 0666 /dev/fm
chown media media /dev/fm
所以目前第一种修改方案是在init.rc中修改节点dev/fm权限为0666,验证可以解决问题。
5)SPL反馈8月20日软件还是好的。
查看 crw-rw-rw- 1 media media 231, 0 2009-12-31 19:08 fm
与当前问题软件比较,权限确实修改了。
6)问题查看80P代码
20日之前80P\device\mediatek\mt6580\init.mt6580.rc
一直配置的 chmod 0660 /dev/fm,为什么之前是好的?
查看80O代码
bird_o1mp2_k80_bsp\device\mediatek\mt6580\init.mt6580.rc
# FM Radio device node
mknod /dev/fm c 193 0;
chmod 0660 /dev/fm
chown media media /dev/fm
配置的也是0660.
疑点为什么之前的软件一直好的?
7)查看8月20日到9月3日之前修改,没有怀疑的commit。只能采取二分查找修改点定位问题。
(借用repo命令查询前100条log
repo forall -p -c git log -100 $1 --oneline > $1.txt
将工程回退到某一时间点
/repo_mtk forall -c 'commitID=`git log --before "2019-08-27 15:00" -1 --pretty=format:"%H"`; git reset --hard $commitID')
确认到是
bird下面的
commit b10aecad530a6796e279954fcf120f013a25572a
Google要求Android P以上版本data storage必须是encrypted状态
引起:
-MTK_ENCRYPTION_DEFAULT_OFF = yes
-MTK_ENCRYPTION_FDE_TO_FBE = no
-MTK_ENCRYPTION_TYPE_FILE = no
+MTK_ENCRYPTION_DEFAULT_OFF = no
+MTK_ENCRYPTION_FDE_TO_FBE = yes
+MTK_ENCRYPTION_TYPE_FILE = yes
具体两者如何关联待研究。
PS:P版userdebug软件直接root手机会报
remount of the / superblock failed: Permission denied
a,打开“开发者选项”中的“OEM 解锁”
b,通过指令adb reboot bootloader,进入fastboot 的方式,
c,在fastboot 模式下输入fastboot flashing unlock
d,根据提示按键(一般是音量上键)
e,解锁成功后可以通过fastboot reboot 重启手机
f.这时候我们就可以做disable-verity了
adb root
adb disable-verity
adb reboot