范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Android12已来,你的App崩溃了吗?

  Android 12 已来,你的 App 崩溃了吗?我们已经开始做 Android 12 的适配了,在 Android 12 中包含了很多的功能和一些行为的变更,接下来我们一起来分析这些行为的变更对我们的应用产生了那些影响。
  通过这篇文章你将学习到以下内容: 为什么在 Android 12 上需要显示声明  android:exported  属性?为什么在 Android 12 上需要显示指定 PendingIntent 的可变性? 为什么在 Android 12 上限制 adb 备份的默认行为? 如何检查 App 的安全漏洞? android:exported 属性
  在 Android 12 中包含     的 activity   、 service   或 receiver  必须为这些应用组件显示声明 android:exported   属性,如下所示。              ......      
  如果在包含     的 activity   、 service   或 receiver   组件中,没有显示声明 android:exported   的值,你的应用将无法安装,错误日志如下所示。Installation did not succeed. The application could not be installed: INSTALL_FAILED_VERIFICATION_FAILURE List of apks: [0] ".../build/outputs/apk/debug/app-debug.apk" Installation failed due to: "null"
  如果您的应用在需要声明  android:exported   的值时未进行此声明,错误日志如下所示。Targeting S+ (version 10000 and above) requires that an explicit value for  android:exported be defined when intent filters are present
  如果对上面的异常产生的条件,不是很理解,可以点击下方链接查看,目前已经有很多开源项目都已经开始适配这个行为的变更了,例如  leakcanary   等等,详情前往查看下列地址:https://github.com/square/leakcanary/pull/2074 https://github.com/microsoft/appcenter-sdk-android/pull/1520
  这个行为的变更无论是对库开发者 和 还是应用开发者影响都非常大。
  为什么在 Android 12 上需要显示声明 android:exported 属性
  android:exported   属性的默认值取决于是否包含   ,如果包含    那么默认值为 true,否则 false。当  android:exported="true"  时,如果不做任何处理,可以接受来自其他 App 的访问当  android:exported="false"  时,限制为只接受来自同一个 App 或一个具有相同 user ID  的 App 的访问
  正因为  android:exported   的属性的默认值的问题,Twicca App 发生过一次安全性问题,因为另一个没有访问 SD 卡或网络权限的 App,可以通过 Twicca App 将存储在 SD 卡上的图片或电影上传到 Twicca 用户的 Twitter 账户上的社交网络上。
  产生问题的代码如下所示:                                                                                                                               
  因为添加了  intent-filter   所以 android:exported   的属性的默认值为 true,因此可以接受来自其他 App 的访问,进而造成了上述问题(通过 Twicca App 将存储在 SD 卡上的图片或电影上传到 Twicca 用户的 Twitter 账户上的社交网络上),而解决方案有两个:方案一:添加  android:exported="false"  属性     方案二:Twicca App 没有使用方式一,而是检查调用者的包名是否与自身的包名相同 public void onCreate(Bundle arg5) {     super.onCreate(arg5);     ...     ComponentName v0 = this.getCallingActivity();     if(v0 == null) {         this.finish();     } else if(!jp.r246.twicca.equals(v0.getPackageName())) {         this.finish();         } else {             this.a = this.getIntent().getData();             if(this.a == null) {                 this.finish();             }             ...         }     } }
  这种方案也是可行的,因为在一台设备上,不可能会出现两个包名相同的应用,更多详细的信息可以前往查看 Restrict access to sensitive activities。
  https://wiki.sei.cmu.edu/confluence/display/android/DRD09.+Restrict+access+to+sensitive+activities
  这仅仅是关于  activity   的安全漏洞的其中一个,在不同的场景下利用这些漏洞做的事情也可能不一样。当然还有 service   和 receiver   组件也都是一样,存在安全性问题。指定 PendingIntent 的可变性
  在 Android 12 中创建 PendingIntent 的时候,需要显示的声明是否可变,请分别使用  PendingIntent.FLAG_MUTABLE   或 PendingIntent.FLAG_IMMUTABLE   标志,如果您的应用试图在不设置任何可变标志的情况下创建 PendingIntent 对象,系统会抛出 IllegalArgumentException   异常,错误日志如下所示。PACKAGE_NAME: Targeting S+ (version 10000 and above) requires that one of  FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent.  Strongly consider using FLAG_IMMUTABLE, only use FLAG_MUTABLE if  some functionality depends on the PendingIntent being mutable, e.g. if  it needs to be used with inline replies or bubbles.
  为什么在 Android 12 上需要显示的指定 PendingIntent 的可变性
  在 Adnroid 12 之前,默认创建一个 PendingIntent 它是可变的,因此其他恶意应用程序可能会拦截,重定向或修改此 Intent。(但是是有条件限制的)
  一个 PendingIntent 是一个可以给另一个应用程序使用的 Intent,PendingIntent 接收待处理意图的应用程序可以使用与产生待处理意图的应用程序相同的权限和身份执行待处理意图中指定的操作。
  因此,创建待处理意图时必须小心,为了安全性 Google 在 Android 12 中需要开发者自己来指定 PendingIntent 的可变性。
  更多关于 PendingIntent 安全性介绍,可以前往查看 Always pass explicit intents to a PendingIntent。
  https://wiki.sei.cmu.edu/confluence/display/android/DRD21-J.+Always+pass+explicit+intents+to+a+PendingIntent adb 备份限制
  Android 开发者都应该知道这个命令  adb backup   , 它可以备份应用的数据,在 Android 12 中,为了保护私有应用数据,用户运行 adb backup   命令时,从设备导出的任何其他系统数据都不包含应用数据。
  如果你在测试和开发过程中需要使用  adb backup   来备份应用数据,你可以在 AndroidManifest 中将 android:debuggable   设置为 true 来导出应用数据。
  注意:在发布应用前将 android:debuggable 设置为 false。
  为什么在 Android 12 上限制了  adb backup   命令的默认行为
  因为这个存在严重的安全问题,当初 Google 为了提供 App 数据备份和恢复功能,可以在 AndroidManifest 中添加  android:allowBackup   属性,默认值为 true, 当你创建一个应用的时候,会默认添加这个属性,如下所示。
  当  android:allowBackup="true"   时,用户可以通过 adb backup   和 adb restore  命令对应用数据进行备份和恢复,也就是说可以在其他的 Android 手机上安装同一个应用,通过如上命令恢复用户的数据。
  为了安全起见,我们在发布出去的 Apk 中一定要将  android:allowBackup   属性设置为 false 来关闭应用程序的备份和恢复功能,以免造成信息泄露。国民级应用 XX 信, 在曾今发出的版本中 allowBackup 的属性值是 true,被其他逆向开发者利用之后,现在的版本中这个值已经修改为 false了,有兴趣的小伙们可以反编译看看。如何检查 App 的安全漏洞
  在这里推荐一个开源项目  linkedin/qark  这是由 LinkedIn 开源的项目,这个工具被设计用来寻找与安全相关的 Android 应用程序漏洞,无论是源代码还是打包的 APK,具体的用法文档上写的非常的清楚了,这里不做详细的介绍了。
  https://github.com/linkedin/qark
  这个开源项目的检查结果,作为参考即可。当然也有很多公司花了重金去购买第三方的服务来检查 App 的安全漏洞。
  在 Android 12 上这几个行为的变更它们都有一个共性:安全性,可见 Google 这几年在安全上做了很多的努力,当然还有其他的一些行为的变更,可以前往查看 行为变更:以 Android 12 为目标平台的应用。
  https://developer.android.com/about/versions/12/behavior-changes-12 最后
  在这里还分享一份由大佬亲自收录整理的学习PDF+架构视频+面试文档+源码笔记,高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料
  这些都是我现在闲暇时还会反复翻阅的精品资料。里面对近几年的大厂面试高频知识点都有详细的讲解。相信可以有效地帮助大家掌握知识、理解原理,帮助大家在未来取得一份不错的答卷。
  当然,你也可以拿去查漏补缺,提升自身的竞争力。
  真心希望可以帮助到大家,Android路漫漫,共勉!
  如果你有需要的话,只需私信我【进阶】即可获取

为什么iPhone坚持不用曲面屏?仔细分析发现,苹果真明智三星带动了曲面屏的发展,加上三星是最顶级的OLED屏幕供应商,很多国产手机厂商这些年也将旗舰机从直屏换到曲屏,比如小米11系列一加9ProOPPOFindX3系列等等,曲屏可以带来重要证据!最新科学发现再次支持新冠病毒自然起源新冠病毒源于自然界一说,再次迎来新的科学证据。9月1日,中国科学院遗传与发育生物学研究所研究员钱文峰在接受中青报中青网记者采访时表示,他所在的研究团队近日发现,新冠病毒在疫情暴发前全世界,超万亿美元市值公司总共有几家?只有少数上市公司的市值达到了1万亿美元或以上,准确地说,全世界只有6家。苹果和微软是迄今为止仅有的两家打破了两万亿市值这一里程碑的公司,2018年,苹果也是第一个超越1万亿美元里程优质大哥大上线!AGMM7三防手机体验或许能给父母们更多的选择大哥大手机,在手机圈中可是一代传说,在那个年代下可以说是最为流行的潮物了。如今时过境迁,二十一世纪大哥大AGMM7正式上线,乃是AGMM系列手机的最新力作,当然这款手机并不会真的像电视选购的6个技巧,看完就知道怎么选可以说,电视是主要的家居电器之一。现如今,每个家庭都会有电视,电视是人们的娱乐途径之一。随着科技日益发展,现在市场上的电视更新换代频繁,所出售的牌子和种类都是比较多的,所以,怎么才便宜国货不等于劣质!创维S7E电视4K显示效果惊艳,游戏迷有福了上周,作为魂系列的忠实玩家,小编可是乐坏了。为什么这么说呢?那是因为IGN公布了艾尔登法环的最新情报。很多人可能不知道这是什么,其实,它是一款以正统黑暗奇幻世界为舞台的动作RPG游声姿丨小米电视6OLED,极致亲民的爆款选择报告显示,仅2021上半年全球OLED电视出货量就达到了270万台,同比增长133。3。这一数据接近持平2020年全年市场,并超过此前任何一年OLED电视的全球全年销量。OLED电等等党再度胜利!供应链放风屏下镜头手机6个月后下放千元机随着手机外观和配置的愈发同质化,很多发布之前宣传的震天响的新机发布之后给人的感觉大多是不过如此嘛。因为没有什么太大的创新,所以消费者购买新机的意愿也就越来越低,而这可急坏了各大厂商有没有什么软件可以同时给视频添加水印或去水印?固乔剪辑助手,可以辅助一键剪辑视频的,快速消重,小白也会操作。很多小伙伴在工作中经常会遇到在使用视频的时候有水印,没有办法直接使用,需要使用一些小工具将水印去除,但是在视频非常多的洗碗机市场迎来爆发式增长美的洗碗机以创新科技加速中国普及最近,洗碗机成为厨电市场的热销爆款,频频霸占热搜榜。随着消费的升级及健康观念的深入人心,洗碗机销量迎来高速增长期,尤其是以美的为代表的中式国产品牌洗碗机,备受消费者青睐。日前,央视好用不贵多重安全设计,国民好物aigo魔方插座评测对大多数朋友来说,插座并不陌生,但传统的插座基本都是直排式,如果电器多了插座设计不合理,不仅容易插头打架,降低利用率。同时随着智能设备越来越多,老式的插座没有USBAUSBC接口,
德系大众的低价轿跑SUV,2。0T起步只卖16万多,还等啥探岳X?现如今,消费者都喜欢与众不同的车型,无论是轿车还是SUV领域,那些拉风的个性车型往往更受欢迎,比如轿车领域中类似本田思域领克03这种运动轿车,就很对年轻消费者的胃口。而在SUV领域萤石智能机器人国庆变身看娃神器京东电脑数码开启父母陪伴新姿势国庆七天乐转眼已经过半,趁假期还未正式结束,抓紧时间与家人一起度过悠闲假日,舒缓疲惫已久的身心吧。全家一起窝在沙发上看看电影,再与孩子一起玩耍度过温情时间,简直再美好不过了。即日起外国货一定好?中国企业能不能做出一款好床垫?8H黑金刚真不简单昨天朋友和我说今年双十一已经开始了,你要买点什么吗?朋友给我发消息的时候已经是晚上9点多了,然而我才刚坐上下班的地铁,忙碌了一天的工作下来,根本没空再想着去各种购物网站上和谁比价血4岁男孩跑半马引争议,网友质疑爸爸的做法,却忽视了孩子的成长西安一名4岁小男孩,和爸爸一起参加西安马拉松比赛。在跑的过程中,小男孩一边跑一边哭,最后用时3小时零6分钟,跑完半马全程。孩子父亲表示,在快要到终点的时候出现了一个小插曲,他看孩子FissionforMac是Mac平台上最简单的一款专业音频编辑软件FissionforMac是Mac平台上最简单的一款专业音频编辑软件。fissionmac采用拖拽的操作方式,可以无损编辑mp3AACAIFF等格式的音频,将一段音频按自己喜好剪辑简单好用的Mac解压缩软件分享这款压缩解压工具,简单又好用!虽然Mac有自带的压缩解压软件归档实用工具,但是它无法解压RAR文件,而且有时会遇到解压出错或者乱码的情况。所以,今天给大家分享一款第三方软件Keka你是否需要一款简单易用的Git客户端呢?快来试试TowerforMac吧大家好,我是macw柒柒,如果你现在需要一款简单易用的Git客户端,推荐你可以试试这款Tower,本文就给大家详说明一下Towermac版TowerforMac(强大Git客户端)智能音箱新玩家,有颜有实力又便携的华为AI音箱2上手体验随着人们对生活品质追求的提升,以及智能时代的到来,智能音箱已经成为了现在家庭的必备之品。直接语音交互,老人也能轻松使用互联网信息包罗万象,中年人想了解啥只要一句话就行海量音乐资源,手机中的变色龙,真我X7Pro上手实拍,2199元起值不值120Hz高刷新率AMOLED三星柔性屏,COP封装屏占比了得,65W智慧闪充速度贼快,还有64MP索尼超清广角四摄天玑10005G处理器线性马达NFC售价却只要2199元起,豪华想提前退休?试试这些超级简单的方法腾讯财经讯据CNBC报道,没有中大奖没有继承巨额遗产没有白手起家事业成功,普通的工薪阶层也能腰包鼓鼓地提前退休,并尽享生活的美好吗?答案可以!以下这些超级简单的方法可以帮你实现提前丰田也有卖不动的车,实测油耗2毛7,起步7万出头月销890台无论是在中国市场还是在全球汽车市场,丰田汽车都是佼佼者,它旗下不管是轿车卡罗拉还是SUV荣放,都深得消费者青睐。尤其是在中国市场中,下至几万块的丰田致炫,上至百万级商务车埃尔法,都