如何禁用功能:aosp_car_x86_64-userdebug中的android.hardware.bluetoothAndroid 11 Automotive Emulator

问题描述

我想为Android汽车模拟器11禁用 feature:android.hardware.bluetooth

我与回购同步的版本:android-11.0.0_r3 我吃午饭的版本:aosp_car_x86_64-userdebug

更改文件以注释掉权限:

car.mk

#    frameworks/native/data/etc/android.hardware.bluetooth_le.xml:$(TARGET_copY_OUT_vendOR)/etc/permissions/android.hardware.bluetooth_le.xml \
#    frameworks/native/data/etc/android.hardware.bluetooth.xml:$(TARGET_copY_OUT_vendOR)/etc/permissions/android.hardware.bluetooth.xml \

评论了以下权限:

car_core_hardware.xml

<!--    <feature name="android.hardware.bluetooth" /> -->

如果我运行仿真器并询问packagemanager,它仍然确信启用了蓝牙功能

pm list features
feature:android.hardware.bluetooth
feature:android.hardware.bluetooth_le

解决方法

当我从 out 文件夹中删除文件 (android.hardware.bluetooth.xml) 时,它被禁用了。 问题是汽车无法处理这种禁用,因为它开始崩溃:

01-07 15:12:08.833  8509  8509 D PerUserCarService: onCreate()
01-07 15:12:08.834  8509  8509 E BluetoothAdapter: Bluetooth binder is null
01-07 15:12:08.835  8509  8509 D AndroidRuntime: Shutting down VM
01-07 15:12:08.835  8509  8509 E AndroidRuntime: FATAL EXCEPTION: main
01-07 15:12:08.835  8509  8509 E AndroidRuntime: Process: com.android.car,PID: 8509
01-07 15:12:08.835  8509  8509 E AndroidRuntime: java.lang.RuntimeException: Unable to create service com.android.car.PerUserCarService: java.lang.NullPointerException: Bluetooth adapter cannot be null
01-07 15:12:08.835  8509  8509 E AndroidRuntime:    at android.app.ActivityThread.handleCreateService(ActivityThread.java:4204)
01-07 15:12:08.835  8509  8509 E AndroidRuntime:    at android.app.ActivityThread.access$1500(ActivityThread.java:237)
01-07 15:12:08.835  8509  8509 E AndroidRuntime:    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1932)
01-07 15:12:08.835  8509  8509 E AndroidRuntime:    at android.os.Handler.dispatchMessage(Handler.java:106)
01-07 15:12:08.835  8509  8509 E AndroidRuntime:    at android.os.Looper.loop(Looper.java:223)
01-07 15:12:08.835  8509  8509 E AndroidRuntime:    at android.app.ActivityThread.main(ActivityThread.java:7656)
01-07 15:12:08.835  8509  8509 E AndroidRuntime:    at java.lang.reflect.Method.invoke(Native Method)
01-07 15:12:08.835  8509  8509 E AndroidRuntime:    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
01-07 15:12:08.835  8509  8509 E AndroidRuntime:    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
01-07 15:12:08.835  8509  8509 E AndroidRuntime: Caused by: java.lang.NullPointerException: Bluetooth adapter cannot be null
01-07 15:12:08.835  8509  8509 E AndroidRuntime:    at java.util.Objects.requireNonNull(Objects.java:245)
01-07 15:12:08.835  8509  8509 E AndroidRuntime:    at com.android.car.CarBluetoothUserService.<init>(CarBluetoothUserService.java:84)
01-07 15:12:08.835  8509  8509 E AndroidRuntime:    at com.android.car.PerUserCarService.onCreate(PerUserCarService.java:66)
01-07 15:12:08.835  8509  8509 E AndroidRuntime:    at android.app.ActivityThread.handleCreateService(ActivityThread.java:4192)
,

android.hardware.bluetooth.xml可能已通过设备构建配置中的其他.mk文件(可能已多次复制到/ etc / permissions)。尝试从运行的设备中删除它:

adb root && adb remount && adb reboot
adb root && adb remount
export BT=etc/permissions/android.hardware.bluetooth.xml
adb shell rm /$BT /*/$BT /*/*/$BT
export BT=etc/permissions/android.hardware.bluetooth_le.xml
adb shell rm /$BT /*/$BT /*/*/$BT
adb reboot
adb shell pm list features | grep blue

对我来说,它删除了android.hardware.bluetooth_le但没有删除android.hardware.bluetooth功能。编辑您提到的<target type>_core_hardware.xml文件后,后者消失了。

在确认删除xml文件是否有帮助之后,您需要查看设备可能正在使用的所有mk文件,以跟踪其复制位置(使用PRODUCT_COPY_FILES)。每次尝试之后,请查看您的$OUT目录的内容(在构建之前,您可能需要从输出中手动删除xml文件,buildsystem并不总是干净地进行此操作)。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...