极力推荐Android 开发大总结文章:欢迎收藏
程序员Android 力荐 ,Android 开发者需要的必备技能

本篇文章主要介绍 Android 开发中的部分GMS 包 相关APK ANR,闪退问题解决方案知识点,通过阅读本篇文章,您将收获以下内容:

  1. 开机向导时 Google DUO 概率ANR
  2. 开机向导时 Google Calendar 概率 ANR
  3. 开机向导时 ANR 弹框不show的解决方案
  4. 开机向导时 Google Music 概率 ANR
  5. 开机向导时 Google Play Store 概率 ANR
  6. Google play Store 下载apk 概率性闪退

1. 开机向导时 DUO 概率ANR

主要原因是 android.intent.action.LOCALE_CHANGED 广播接收超时导致的ANR。
ANR Log 如下:

ANR Log

ANR 规避方案如下:
BroadcastQueue类的 processNextBroadcast方法中,当第一次开机时候,跳过此Action。路径如下:
/alps/frameworks/base/services/core/java/com/android/server/am/BroadcastQueue.java

         // import android.provider.Settings;//when frist boot , ingore Google Duo anr when receive broadcast : android.intent.action.LOCALE_CHANGEDif (info.activityInfo.name.contains ("com.google.android.apps.tachyon") && r.intent.getAction().equals("android.intent.action.LOCALE_CHANGED")){int deviceProvisioned = Settings.Global.getInt(mService.mContext.getContentResolver(), Settings.Global.DEVICE_PROVISIONED, 0);if (deviceProvisioned == 0) {                  Slog.e(TAG,"switch users or first boot google duo ANR ignore");skip = true;}}

历史修改记录

git 修改记录

2. 开机向导时 Calendar 概率 ANR

ANR Log 如下:

Calendar ANR log

ANR 规避方案如下:
主要原因是 android.intent.action.LOCALE_CHANGED 广播接收超时导致的ANR。
请参考修改一
历史修改记录

git 修改记录

3. 开机向导时,ANR 弹框不show的解决方案

刷机或者恢复出厂设置是,开机向导过程中不应该显示ANR。
修改文件路径如下:
frameworks/base/services/core/java/com/android/server/am/AppErrors.java
修改AppErrors 类中 handleShowAnrUi方法,控制在开机向导时ANR弹窗。

解决方案

git 修改差别的

                // If we've created a crash dialog, show it without the lock heldif (d != null) {int deviceProvisioned = Settings.Global.getInt(mContext.getContentResolver(), Settings.Global.DEVICE_PROVISIONED,0);if(proc.userId == 0){if(deviceProvisioned == 0 && !proc.processName.equals("com.google.android.setupwizard")){mService.killAppAtUsersRequest(proc, null);}else{d.show();}} else {d.show();}}

4. 开机向导时 Google Music 概率 ANR

开机向导时候 接收android.intent.action.LOCALE_CHANGED 广播超时导致的ANR。
ANR Log 如下:

ANR Log

ANR 规避方案如下:
请参考修改一

5.开机向导时 Google Play Store 概率 ANR

开机向导时候 接收android.intent.action.LOCALE_CHANGED 广播超时导致的ANR。
ANR Log 如下:

ANR Log

ANR 规避方案如下:
请参考修改一

2. Google play Store 下载apk 概率性闪退

低内存情况下,使用play Store 下载多个apk,playstore 概率性ANR。

闪退 Log 信息

Google Play Store 被kill Log信息

解决闪退问题方法
在ActivityManagerService 中的applyOomAdjLocked 方法中修改adj值,防止apk 低内存情况下被杀掉。

frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java

解决闪退方案

            // add by wangjie for google play store was killed in sometime if(app.curAdj>3){if( app.processName.equals("com.android.vending") ||app.processName.equals("com.google.android.gms")){app.curAdj = 3;}} // add by wangjie for google play store was killed in sometime

至此,本篇已结束,如有不对的地方,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!

如有侵权,请联系小编,小编对此深感抱歉,届时小编会删除文章,立即停止侵权行为,请您多多包涵。

既然都看到这里,领两个红包在走吧!
以下两个红包每天都可以领取

1.支付宝搜索 522398497,或扫码支付宝红包海报。

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

2.微信红包,微信扫一扫即可领取红包

微信扫一扫,每天领取微信红包

小礼物走一走,来简书关注我

Google GMS 包相关APK ANR 解决方案相关推荐

  1. google gms包各apk的包名和类名

    最近做项目遇到要预置google gms的apk到桌面上,既然要预置apk到桌面,那就需要获取apk的包名和类名了:获取方式:①通过反编译工具来编译获得AndroidManifest.xml文件,从此 ...

  2. Google GMS包中的applist

    google gms包中的应用清单如下: AndroidPlatformServices/ CalculatorGoogle/ CalendarGoogle/ CarrierServices/ Chr ...

  3. 【Android M】预制的 Google GMS包

    目录:android/vendor/google/apps . ├── AndroidPay │   ├── Android.mk │   ├── AndroidPay_arm64.apk │   ├ ...

  4. Android跳转到应用商店的APP详情页面,以及 Google GMS 各个apk的包

    需求: 从App内部点击按钮或链接,跳转到应用商店的某个APP的详情页面. 让用户 下载 或 评论. 实现: /*** 启动到应用商店app详情界面** @param appPkg 目标App的包名* ...

  5. 加入编译GMS包,增加或去除谷歌相关GMS应用,移除GMS包,取消刷机后的认证弹窗通知,锁fingerprint。

    S版本编译后生成的apk在out_sys/目录 在配置文件加宏ProjectConfig.mk #GMSBUILD_GMS = yesBUILD_AGO_GMS = noGAPPS_PACKAGE_S ...

  6. Google GMS Crash 优化方案

    极力推荐文章:欢迎收藏 Android 干货分享  阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android GMS(GoogleMobile Service)包是出口国外手机中 Googl ...

  7. 如何解决 Google GMS 在被锁定失效后,无法再使用 Google Play Store的问题;亦适用于在不使用 Google GMS 的情况下,如何正常使用Google Play 商店

      如何在不安装Google GMS的情况下,让谷歌商店正常使用谷歌 Play商店 ~~    有朋友可能是采用安装 Google GMS的方式使用谷歌商店的,但很快,你会发现以下问题:    ① 设 ...

  8. Google GMS认证问题

    你所关心的Google GMS认证问题 简介 Google GMS认证(Google Mobile Services Test Certification )是谷歌公司为了确保全世界的硬件厂商设计和生 ...

  9. Android 之集成GMS 包

    集成GMS 包比较简单,本来不准备写了,但是里面还是有点小小的坑,所以还是再项目结束的时候总结分享给大家哈 以下都是基于Android 12 平台,其实都一样,没啥大的区别 集成GMS 包,其实就是把 ...

最新文章

  1. 前端开发这么多年,你真的了解浏览器页面渲染机制吗?
  2. python程序员搞笑段子_程序员才能看得懂的段子,内含表情包,吃饭的时候别点!...
  3. 二维火:智能餐饮云端互联
  4. python递归列文件_python-Bash:从最大列递归地向文件写入一行
  5. Windows下UAC安全机制笔记
  6. mcq 队列_MCQ | 软件生命周期模型
  7. 平板电脑连接投影仪_交互式触控幼教白板如何与平板进行连接-微幼科技
  8. lxcfs容器隔离技术实现原理分析之loadavg、cpuonline
  9. linux C++获取当前文件所在路径的方法
  10. hbase 和 zookeeper建立连接_我对Hbase的一些理解——HMaster与Zookeeper之间的交互机制...
  11. 也看《猎场》:几经秋冬,青春不在,一切皆贾,蓦然回首,伊人如故
  12. covar of lognormal variables
  13. 计算机系统确认的gmp附录,马义岭--中国GMP 附录确认与验证计算机化系统.pdf
  14. 数字藏品:传承优秀传统文化的新载体
  15. 使用cgo,由于内存释放导致内存无效,引起的http crash
  16. 功能强大的在线网页编辑器
  17. 哪些因素决定了CRM客户管理系统的价格?
  18. kali通过msf利用永恒之蓝攻击服务器
  19. js中isNaN和Number.isNaN的区别
  20. windows7安装打印机提示“本地打印后台处理程序服务没有运行”

热门文章

  1. Js 跟手转动的罗盘指针
  2. 今日收获总结 (前端知识点3)
  3. 从龟速 11s 到闪电 1s,详解前端性能优化之首屏加载
  4. Android String字符串截取方法总结
  5. AD19绘制原理图(阻容,IC,排针)
  6. 【ADS867x】14 位 500kSPS 4/8 通道 ADC 简介及驱动应用示例
  7. 移远BC35-G模组通过LWM2M协议接入OneNet教程
  8. 数据结构与算法(十一)Trie字典树
  9. Oracle set timing on
  10. 蓝牙协议栈模组在linux ubuntu 跑蓝牙协议栈 --传统蓝牙搜索演示以及实现原理