Android13 安装谷歌GMS导致打开蓝牙失败解决方法

这篇具有很好参考价值的文章主要介绍了Android13 安装谷歌GMS导致打开蓝牙失败解决方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Android13 安装谷歌GMS导致打开蓝牙失败解决方法

一、前言

Android13 上安装谷歌GMS相关服务后,无法打开蓝牙,打开蓝牙马上异常导致自动关闭蓝牙。

这个问题国内估计大部分开发者不会遇到,但是如果是面向国外用户需要安装谷歌相关服务可能会遇到。

这个问题在Android13 几个不同芯片供应商方案都有遇到,说明这个问题在Android13 上是个共性问题,Android原生代码的问题。

本文主要记录一下。

二、解决方法

该问题与BLE 蓝牙扫描相关,去除BLE蓝牙扫描操作即可解决。

1、简单的解决方法


packages\modules\Bluetooth\system\gd\hci\le_scanning_manager.cc

  void scan(bool start) {
    //add by mychange
    if (true) {
        LOG_WARN("scan return! because have gms!");
        return ;
    }
    if (start) {
      configure_scan();
      start_scan();
    }

这里是直接在 scan 方法里面进行了 return。

去除了这里的扫描代码,并不影响蓝牙的使用,连接蓝牙耳机,蓝牙鼠标键盘和手机是没啥问题的。

2、添加属性和日志解决


添加日志打印和属性判断的方法:

+++ b/release/release/packages/modules/Bluetooth/system/gd/hci/le_scanning_manager.cc
@@ -17,6 +17,7 @@
 
 #include <memory>
 #include <unordered_map>
+#include <cutils/properties.h>
 
 #include "hci/acl_manager.h"
 #include "hci/controller.h"
@@ -613,6 +614,15 @@ struct LeScanningManager::impl : public LeAddressManagerCallback {
   }
 
   void scan(bool start) {
+    //add by mydebug ,start
+    char value[PROPERTY_VALUE_MAX];
+    property_get("persist.mydebug.stop_le_scan", value, "");
+    LOG_WARN("scan prop persist.mydebug.stop_le_scan value =  %s", value); 
+    if (strncmp(value, "no", 2)) { //default  ture, setprop no will false.
+        LOG_WARN("scan return! because have gms!");
+        return ;
+    }
+    //add by mydebug , end
     if (start) {

这里添加了属性 persist.mydebug.stop_le_scan,默认没有,如果设置为 no 就是原本的逻辑。
添加后可以进行测试,属性修改为no的情况,无法打开蓝牙,修改为yes或者其他字符串是可以正常打开蓝牙的。

为啥去除BLE蓝牙的扫描就可以,这是同事chenw追踪到的,具体修改涉及到C代码。

这里只能简单介绍和分析,如果需要深入研究,可以自己追一下Android13的源码。

三、分析

该问题不好分析,这里只提供相关思路。

1、查看异常日志

从日志看没有 AndroidRuntion 关键字日志,说明不存在应用崩溃。

查看 crash 关键字日志,确实可以看到不少日志,其中 “F DEBUG” 就是关键日志,是底层异常的关键日志。

11-03 09:20:55.407  9084  9084 F DEBUG   : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
11-03 09:20:55.407  9084  9084 F DEBUG   : Build fingerprint: 'mydebug/rk3588_t/rk3588_t:13/TQ2A.230305.008.F1/eng.mydebug.20231102.190806:userdebug/release-keys'
11-03 09:20:55.407  9084  9084 F DEBUG   : Revision: '0'
11-03 09:20:55.407  9084  9084 F DEBUG   : ABI: 'arm64'
11-03 09:20:55.407  9084  9084 F DEBUG   : Timestamp: 2023-11-03 09:20:54.995416302+0800
11-03 09:20:55.407  9084  9084 F DEBUG   : Process uptime: 0s
11-03 09:20:55.407  9084  9084 F DEBUG   : Cmdline: com.android.bluetooth
11-03 09:20:55.407  9084  9084 F DEBUG   : pid: 8977, tid: 9027, name: bt_stack_manage  >>> com.android.bluetooth <<<
11-03 09:20:55.407  9084  9084 F DEBUG   : uid: 1002
11-03 09:20:55.407  9084  9084 F DEBUG   : tagged_addr_ctrl: 0000000000000001 (PR_TAGGED_ADDR_ENABLE)
11-03 09:20:55.407  9084  9084 F DEBUG   : signal 6 (SIGABRT), code -1 (SI_QUEUE), fault addr --------
11-03 09:20:55.407  9084  9084 F DEBUG   : Abort message: 'assertion 'status_view.GetStatus() == ErrorCode::SUCCESS' failed - Receive set extended scan enable with error code COMMAND_DISALLOWED' //错误关键
11-03 09:20:55.407  9084  9084 F DEBUG   :     x0  0000000000000000  x1  0000000000002343  x2  0000000000000006  x3  00000074f864ceb0
11-03 09:20:55.407  9084  9084 F DEBUG   :     x4  7274736073527364  x5  7274736073527364  x6  7274736073527364  x7  7f7f7f7f7f7f7f7f
11-03 09:20:55.407  9084  9084 F DEBUG   :     x8  00000000000000f0  x9  000000784035aa00  x10 0000000000000001  x11 0000007840398de4
11-03 09:20:55.407  9084  9084 F DEBUG   :     x12 00000074f864bd60  x13 0000000000000087  x14 00000074f864d0f0  x15 00000002829bb542
11-03 09:20:55.407  9084  9084 F DEBUG   :     x16 00000078403fdd58  x17 00000078403dac70  x18 00000074f7704038  x19 0000000000002311
11-03 09:20:55.407  9084  9084 F DEBUG   :     x20 0000000000002343  x21 00000000ffffffff  x22 00000074f864e000  x23 000000750d528468
11-03 09:20:55.407  9084  9084 F DEBUG   :     x24 0000007590216000  x25 0000000000000000  x26 b4000075e5b66e0c  x27 0000000000000001
11-03 09:20:55.407  9084  9084 F DEBUG   :     x28 0000000000000001  x29 00000074f864cf30
11-03 09:20:55.408  9084  9084 F DEBUG   :     lr  000000784038a968  sp  00000074f864ce90  pc  000000784038a994  pst 0000000000001000
11-03 09:20:55.408  9084  9084 F DEBUG   : backtrace:
11-03 09:20:55.408  9084  9084 F DEBUG   :       #00 pc 0000000000051994  /apex/com.android.runtime/lib64/bionic/libc.so (abort+164) (BuildId: 4e07915368c859b1910c68c84a8de75f) //具体的错误堆栈信息
11-03 09:20:55.408  9084  9084 F DEBUG   :       #01 pc 000000000060a300  /apex/com.android.art/lib64/libart.so (art::Runtime::Abort(char const*)+116) (BuildId: 499c2699a3444f5f106778c61af92356)
11-03 09:20:55.408  9084  9084 F DEBUG   :       #02 pc 0000000000016ea8  /system/lib64/libbase.so (android::base::SetAborter(std::__1::function<void (char const*)>&&)::$_3::__invoke(char const*)+80) (BuildId: b77c57f68a484ed93d5a7eda59d83bf9)
11-03 09:20:55.408  9084  9084 F DEBUG   :       #03 pc 0000000000006e10  /system/lib64/liblog.so (__android_log_assert+308) (BuildId: 6d90ed7ade4424925966905508d7e8b2)
11-03 09:20:55.408  9084  9084 F DEBUG   :       #04 pc 000000000095eb54  /apex/com.android.btservices/lib64/libbluetooth_jni.so (bluetooth::hci::LeScanningManager::impl::check_status(bluetooth::hci::CommandCompleteView)+1128) (BuildId: e3a43fbd0d5d775b82f1fcbcaffc6903)
11-03 09:20:55.408  9084  9084 F DEBUG   :       #05 pc 0000000000876eec  /apex/com.android.btservices/lib64/libbluetooth_jni.so (void base::internal::FunctorTraits<void (*)(bluetooth::hci::CommandCompleteView), void>::Invoke<void (*)(bluetooth::hci::CommandCompleteView), bluetooth::hci::CommandCompleteView>(void (*&&)(bluetooth::hci::CommandCompleteView), bluetooth::hci::CommandCompleteView&&)+268) (BuildId: e3a43fbd0d5d775b82f1fcbcaffc6903)
11-03 09:20:55.408  9084  9084 F DEBUG   :       #06 pc 00000000008e8ba4  /apex/com.android.btservices/lib64/libbluetooth_jni.so (void base::internal::FunctorTraits<base::OnceCallback<void (bluetooth::hci::CommandCompleteView)>, void>::Invoke<base::OnceCallback<void (bluetooth::hci::CommandCompleteView)>, bluetooth::hci::CommandCompleteView>(base::OnceCallback<void (bluetooth::hci::CommandCompleteView)>&&, bluetooth::hci::CommandCompleteView&&)+280) (BuildId: e3a43fbd0d5d775b82f1fcbcaffc6903)
11-03 09:20:55.408  9084  9084 F DEBUG   :       #07 pc 00000000009d38c8  /apex/com.android.btservices/lib64/libbluetooth_jni.so (bluetooth::os::Handler::handle_next_event()+236) (BuildId: e3a43fbd0d5d775b82f1fcbcaffc6903)
11-03 09:20:55.408  9084  9084 F DEBUG   :       #08 pc 0000000000a2837c  /apex/com.android.btservices/lib64/libbluetooth_jni.so (bluetooth::os::Reactor::Run()+584) (BuildId: e3a43fbd0d5d775b82f1fcbcaffc6903)
11-03 09:20:55.408  9084  9084 F DEBUG   :       #09 pc 0000000000a29078  /apex/com.android.btservices/lib64/libbluetooth_jni.so (bluetooth::os::Thread::run(bluetooth::os::Thread::Priority)+176) (BuildId: e3a43fbd0d5d775b82f1fcbcaffc6903)
11-03 09:20:55.408  9084  9084 F DEBUG   :       #10 pc 0000000000a29200  /apex/com.android.btservices/lib64/libbluetooth_jni.so (void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, void (bluetooth::os::Thread::*)(bluetooth::os::Thread::Priority), bluetooth::os::Thread*, bluetooth::os::Thread::Priority> >(void*)+68) (BuildId: e3a43fbd0d5d775b82f1fcbcaffc6903)
11-03 09:20:55.408  9084  9084 F DEBUG   :       #11 pc 00000000000b63b0  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+208) (BuildId: 4e07915368c859b1910c68c84a8de75f)
11-03 09:20:55.408  9084  9084 F DEBUG   :       #12 pc 00000000000530b8  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64) (BuildId: 4e07915368c859b1910c68c84a8de75f)

通过日志可以看到具体报错是jni相关,具体到c代码的哪个类和接口,不太会分析,有兴趣的自己可以研究看看。

从上面可以看到 :Receive set extended scan enable with error code ,这个错误打印是在 le_scanning_manager.cc 文件中的。

具体流程怎么追踪到 scan 方法,从代码上未能简单看出!

2、 查看蓝牙相关日志

可以查看:BluetoothManagerService 、droid.bluetooth 、BluetoothBondStateMachine 等关键字

里面都是有蓝牙开关、蓝牙异常关闭或者蓝牙相关服务died/dead 日志。但是确认看不出是 le_scanning_manager 里面的scan方法导致报错。

这种 c 代码的问题,只能深入追踪,这里对 c/c++ 不熟悉,所以不深入介绍了。

四、总结

1、Android13 安装谷歌GMS导致打开蓝牙失败具体原因是BLE蓝牙扫描导致去除BLE蓝牙扫描即可。

2、蓝牙错误分析

查看蓝牙相关日志: BluetoothManagerService 、droid.bluetooth 、BluetoothBondStateMachine

查看 AndroidRuntime、crash 日志

如果是jni或者so相关的,基本错误都是在c/c++ 代码中,有可能需要深入分析追踪。文章来源地址https://www.toymoban.com/news/detail-742658.html

到了这里,关于Android13 安装谷歌GMS导致打开蓝牙失败解决方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • easy Connect连接成功,但是虚拟IP地址获取失败,而导致网页无法打开

    问题:easy Connect连接成功,但是虚拟IP地址获取失败,而导致网页无法打开 1.右键点开easy Connect,选连接状态 出现下面页面,虚拟Ip地址为0.0.0.0,即为虚拟IP地址获取失败 2.检查Sangfor的网络适配器是否有黄色感叹号   右击此电脑,选择属性,选设备管理器,检查网络适配器

    2024年02月09日
    浏览(34)
  • Android Studio升级导致项目运行失败问题

    背景: 升级Android Studio最新版本后,新建项目正常运行,运行旧项目时提示编译出错 : 尝试解决方案: ①:Build -- Clean Project;–Rebuild Project; ②:build.gradle:修改gradle:version 为适配版本; ③:Settings–Gradle–Gradle JDK 选择之前使用的版本; ④:Settings–Gradle–Gradle JDK --D

    2024年02月11日
    浏览(32)
  • Rockchip Android13 x3588蓝牙wifi/bt调试心得

    x3588的wifi/bt使用的是外挂双模模块,根据数据通信接口的差异分为PCIE和SDIO两种。 x3588使用的是SDIO接口双模模块:AP6398S。 参考rockchip android13: rk3588-x3588-sdk.dts 蓝牙配置: uart的rts脚:UART_CTS_N 复位脚:BT_REG_ON-BT_REG_ON_S-BT_REG_ON_H CPU唤醒蓝牙GPIO:脚:BT_WAKE 蓝牙唤醒CPU模块的GPI

    2024年02月15日
    浏览(66)
  • android升级SDK 到30,导致微信登录,支付失败

    当时为了将应用上传 google play ,所以升级了sdk 版本号 targetSdkVersion = 30 ,后来发现升级之后,应用中微信登录,微信支付,都拉不起来了,点击登录,或者支付,没有任何响应。 通过看日志发现, sendReq failed for wechat app signature check failed 是微信没有被拉起, 后来了解资料发现

    2024年02月05日
    浏览(41)
  • Android Studio升级Gradle Plugin升级导致项目运行失败问题

    升级Android Studio 旧项目无法运行,奇奇怪怪什么错误都有 例如: 又例如: 初步排查判断是旧项目Gradle版本问题导致。因为最近创建的项目,升级AS之后无影响,只有旧项目跑不起来。 查阅资料发现,随着AS gradle插件版本的升级,项目中gradle plugin版本、gradle版本、jdk版本等均

    2024年02月01日
    浏览(43)
  • 解决高通 Android 12/13 ota升级失败问题

    1、 Android adb push ota全量包 如下图所示 2、当前设备是a分区 如下图所示  3、adb root -adb enable-verity-adb reboot  如下图所示  4、adb ota包升级成功 升级完成之后记得 reboot 重启一下 如下图所示 5、当前设备成功切换b分区 如下图所示  6、到这里基本就结束了, ota 升级相关 Andr

    2024年02月06日
    浏览(51)
  • android设置打开蓝牙时报错:java.lang.SecurityException: Need android.permission.BLUETOOTH_CONNECT permission

    我的手机是三星s10,Android12,遇到的这个问题,供参考 问题出现场景,我是最近在研究一下蓝牙相关的,找了文档学习但是触动mBluetoothAdapter.enable();开启或者打开蓝牙的时候就报了下面这个错: 开始解错: 表面提示就是需要许可证/就是权限之类的缺少, 然后我就顺着这个错误去网上

    2024年02月13日
    浏览(35)
  • mac安装程序, 安装器遇到错误导致安装失败解决方法

    网上找了很久没有可行的方式,自己尝试如下: 如果没有显示任何来源选项,则需要恢复允许“任何来源”的选项,即关闭系统的Gatekeeper,我们可以在“启动台(系统界面下方Dock栏中的小火箭图标)”—“其他”—“终端”中使用spctl命令:sudo spctl --master-disable 1、回车后输入

    2024年02月08日
    浏览(37)
  • 安装 fcitx + 搜狗/谷歌输入法 之后导致 死机,重启后黑屏只有鼠标可以移动

    一般的原因就是 : fcitx 导致的问题 方法就是 先卸载搜狗,再卸载fcitx 解决办法: 首先:ctrl+alt+F6 进入命令行界面,如果进不去就 ctrl+alt+F2 接下来执行: 参考:[安装fcitx和搜狗输入法后]Ubuntu18.04开机全黑屏,只有鼠标可移动_ubuntu 安装fcitx黑屏-CSDN博客

    2024年02月08日
    浏览(46)
  • win10安装安卓子系统android13肯定成功补充说明Win1022H2安装WSA安卓子系统部署失败0x80073CF3无法进行更新、相关性或冲突验证Xaml.2.8解决方案

    说明:该文章为我之前的文章的一个补充说明,也是由于最近系统出了问题后,进行了更新到Win10最新系统后,出现的一些问题,并做了以下的一些记录: 这里呢,我是昨天重新下载并更新了系统为22H2,所以,我还在用之前的安卓子系统时,出现了问题,无法部署成功,“部

    2024年02月20日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包