IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android target sdk 31升级采坑 -> 正文阅读

[移动开发]Android target sdk 31升级采坑

最近发布Google 内侧版本app时老是会出现一个警告?? “app的target sdk 版本必须不能低于31(Android 12)” 否则今年12月之后将影响上架。于是趁着空闲便搞下target sdk的升级。

期间还是踩了一点小坑的,这里就把我们项目中迁移遇到的记录下,希望大家碰到类似的能够轻松避开~

坑1:Activity的exported属性值要显式声明
/Users/xxx/xxx/xxx/app/src/main/AndroidManifest.xml Error:

	android:exported needs to be explicitly specified for <activity>. 
	
	Apps targeting Android 12 and higher are required to specify an explicit value for `android:exported` 
	when the corresponding component has an intent filter defined. 

    See https://developer.android.com/guide/topics/manifest/activity-element#exported for details.

这个看错误信息就ojbk了,含有intent-filter的activity就显示指明精确值就行。

坑2:LeakCanary2.2版本问题

改完Activity#exported问题后接着就遇到了LeakCanary2.2的坑。究其原因也是target sdk 的问题,这个版本sdk未兼容target sdk 31。

先看下当时的报错信息:

Installation failed due to: 'INSTALL_PARSE_FAILED_MANIFEST_MALFORMED: 

Failed parse during installPackageLI:/data/app/vmdl1585792192.tmp/base.apk (at Binary XML file line #526):
leakcanary.internal.activity.LeakLauncherActivity: Targeting S+ (version 31 and above) requires that an
explicit value for android:exported be defined when intent filters are present'

Retry
Failed to launch an application on all devices

其实这个问题在官网已经有issue了,因此我们直接升级2.7版本就解决了。

坑3:PendingIntent与IntentFlag使用问题

先看下错误log把:

Process: com.xxx.app.dev, PID: 8174
    java.lang.IllegalArgumentException: com.xxx.app.dev: 
    Targeting S+ (version 31 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.

大概意思是使用PendingIntent时 安卓12及其以上对intent的flag也有要求,至少指定FLAG_IMMUTABLE或者FLAG_MUTABLE。

这就很懵逼了,我们的项目中貌似还没有直接使用到这个PendingIntent,难道是其他推送sdk未兼容?起初还想去看看推送sdk
文档看看兼容安卓12没,结果细看log 竟然避坑了,少走了点弯路:

在这里插入图片描述
这个类有使用PendingIntent 全局搜索下~

在这里插入图片描述
看到这里定位到了,WorkManager的坑 😄 目前用的2.6.0 版本未兼容target sdk31 找个其他兼容版本即可(2.7.1)

坑4:compile sdk 过低

本来以为没啥问题了,结果还是始料未及,app工程的compile sdk 低于 work manager sdk minSdk:

在这里插入图片描述
很简单咯,把app的编译版本设置为31即可。

采坑完毕,终于跑起来了~

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-10-17 12:46:08  更:2022-10-17 12:46:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 0:32:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码