在android15下编译代码,如果遇到android.bluetooth.BluetoothHeadsetClient或者其他android.bluetooth下标记了hide的类找不到的错误。 需要加上如下2处修改:
需要在对应模块的android.bp文件中,加上:
libs: [
"framework-bluetooth.impl"
]
修改源码路径下/packages/modules/Bluetooth/framework/Android.bp
54 java_sdk_library {
55 name: "framework-bluetooth",
56 defaults: [
57 "framework-bluetooth-defaults",
58 "framework-module-defaults",
59 ],
60
61 jarjar_rules: ":bluetooth-jarjar-rules",
62 installable: true,
63 optimize: {
64 enabled: false,
65 },
66 hostdex: true, // for hiddenapi check
67
68 impl_library_visibility: [
69 "//external/sl4a/Common",
70 "//packages/modules/Bluetooth/android/app/tests/unit",
71 "//packages/modules/Bluetooth/android/pandora/server",
72 "//packages/modules/Bluetooth/framework/tests/bumble",
73 "//packages/modules/Bluetooth/service",
74 "//packages/services/Car/car-builtin-lib",
75 // TODO(240720385)
76 "//packages/services/Car/tests/carservice_unit_test",
77 ":__subpackages__",
// 在这里加上修改,如果对应的模块在vendor下,那么修改如下:
"//vendor:subpackages__"
78 ],
在andrdroid12下,源码编译的时候,原生蓝牙这部分代码是在framework/base下,我理解自定义模块不需要再手动引用什么包,就可以访问android.bluetooth.下的hide类。 但是在andrdroid15下,这部分代码被移到了packages下,就需要手动加上对framework-bluetooth.impl的引用。
另外,如果上述2步都做了,但还会报android.bluetooth.BluetoothHeadsetClient或者其他android.bluetooth下标记了hide的类的hide方法或者hide变量找不到, 需要在目标模块的bp中再加上
sdk_version: "core_platform"