Google GMS 包相关APK ANR 解决方案
极力推荐Android 开发大总结文章:欢迎收藏
程序员Android 力荐 ,Android 开发者需要的必备技能
本篇文章主要介绍 Android
开发中的部分GMS 包 相关APK ANR,闪退问题解决方案知识点,通过阅读本篇文章,您将收获以下内容:
- 开机向导时 Google DUO 概率ANR
- 开机向导时 Google Calendar 概率 ANR
- 开机向导时 ANR 弹框不show的解决方案
- 开机向导时 Google Music 概率 ANR
- 开机向导时 Google Play Store 概率 ANR
- 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 解决方案相关推荐
- google gms包各apk的包名和类名
最近做项目遇到要预置google gms的apk到桌面上,既然要预置apk到桌面,那就需要获取apk的包名和类名了:获取方式:①通过反编译工具来编译获得AndroidManifest.xml文件,从此 ...
- Google GMS包中的applist
google gms包中的应用清单如下: AndroidPlatformServices/ CalculatorGoogle/ CalendarGoogle/ CarrierServices/ Chr ...
- 【Android M】预制的 Google GMS包
目录:android/vendor/google/apps . ├── AndroidPay │ ├── Android.mk │ ├── AndroidPay_arm64.apk │ ├ ...
- Android跳转到应用商店的APP详情页面,以及 Google GMS 各个apk的包
需求: 从App内部点击按钮或链接,跳转到应用商店的某个APP的详情页面. 让用户 下载 或 评论. 实现: /*** 启动到应用商店app详情界面** @param appPkg 目标App的包名* ...
- 加入编译GMS包,增加或去除谷歌相关GMS应用,移除GMS包,取消刷机后的认证弹窗通知,锁fingerprint。
S版本编译后生成的apk在out_sys/目录 在配置文件加宏ProjectConfig.mk #GMSBUILD_GMS = yesBUILD_AGO_GMS = noGAPPS_PACKAGE_S ...
- Google GMS Crash 优化方案
极力推荐文章:欢迎收藏 Android 干货分享 阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android GMS(GoogleMobile Service)包是出口国外手机中 Googl ...
- 如何解决 Google GMS 在被锁定失效后,无法再使用 Google Play Store的问题;亦适用于在不使用 Google GMS 的情况下,如何正常使用Google Play 商店
如何在不安装Google GMS的情况下,让谷歌商店正常使用谷歌 Play商店 ~~ 有朋友可能是采用安装 Google GMS的方式使用谷歌商店的,但很快,你会发现以下问题: ① 设 ...
- Google GMS认证问题
你所关心的Google GMS认证问题 简介 Google GMS认证(Google Mobile Services Test Certification )是谷歌公司为了确保全世界的硬件厂商设计和生 ...
- Android 之集成GMS 包
集成GMS 包比较简单,本来不准备写了,但是里面还是有点小小的坑,所以还是再项目结束的时候总结分享给大家哈 以下都是基于Android 12 平台,其实都一样,没啥大的区别 集成GMS 包,其实就是把 ...
最新文章
- 前端开发这么多年,你真的了解浏览器页面渲染机制吗?
- python程序员搞笑段子_程序员才能看得懂的段子,内含表情包,吃饭的时候别点!...
- 二维火:智能餐饮云端互联
- python递归列文件_python-Bash:从最大列递归地向文件写入一行
- Windows下UAC安全机制笔记
- mcq 队列_MCQ | 软件生命周期模型
- 平板电脑连接投影仪_交互式触控幼教白板如何与平板进行连接-微幼科技
- lxcfs容器隔离技术实现原理分析之loadavg、cpuonline
- linux C++获取当前文件所在路径的方法
- hbase 和 zookeeper建立连接_我对Hbase的一些理解——HMaster与Zookeeper之间的交互机制...
- 也看《猎场》:几经秋冬,青春不在,一切皆贾,蓦然回首,伊人如故
- covar of lognormal variables
- 计算机系统确认的gmp附录,马义岭--中国GMP 附录确认与验证计算机化系统.pdf
- 数字藏品:传承优秀传统文化的新载体
- 使用cgo,由于内存释放导致内存无效,引起的http crash
- 功能强大的在线网页编辑器
- 哪些因素决定了CRM客户管理系统的价格?
- kali通过msf利用永恒之蓝攻击服务器
- js中isNaN和Number.isNaN的区别
- windows7安装打印机提示“本地打印后台处理程序服务没有运行”