编译环境
JDK更新
7/8升级到11
Android Studio
4.0+/Arctic Fox/Bumblebee
编译迁移
AAR引入方式变更
编译问题&解决方案:Error building Android library: Direct local .aar file dependencies are not supported
BuildConfig类
VersionName&VersionCode被移除,若Java代码中有引用需要替换为其他获取版本号的方法
AGP更新
错误日志:
Caused by: org.gradle.api.InvalidUserCodeException: Using insecure protocols with repositories, without explicit opt-in, is unsupported.
解决方案:
更新AGP7.0后,使用了Http的Maven仓库需适配stackoverflow.com/questions/6…
其他
出现编译问题无直接错误提示使用如下命令
gradle assembleDebug --debug
Apk包体变大
<application android:extractNativeLibs="true" ... >
</application>
功能适配
开屏SplashScreen API
developer.android.com/guide/topic…
四大组件可见性
包含IntentFilter的四大组件添加exported属性
三方库适配
三方库排查方法:stackoverflow.com/questions/1…
gradle脚本协助排查可参考:juejin.cn/post/707401…
系统库加载
developer.android.com/guide/topic…
<uses-native-library
android:name="string"
android:required=["true" | "false"] />
自定义通知
官方描述
收起状态和展开状态下的自定义通知区域
在收起状态下,自定义内容的最大高度已从 106dp 减少到 48dp。此外,水平空间也减小(没有官方数据,预计减少96dp)了。
对于以 Android 12 为目标平台的应用,所有通知都是可展开的。通常,这意味着,如果您使用的是
setCustomContentView,则还需要使用 setBigCustomContentView,以确保收起状态和展开状态保持一致。
PendingIntent
Targeting S+ (version 10000 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent
- 若使用了WorkManager将androidx.work:work-runtime:版本更新到2.7.1
- PendingIntent实例化时Flag中增加FLAG_IMMUTABLE
Android App Links验证变更
developer.android.com/about/versi…
画中画行为改进
Android 12 针对画中画 (PiP) 模式引入了行为改进。如需了解详情,请参阅画中画改进。
应用休眠(无需客户端处理)
Android 12 在 Android 11(API 级别 30)中引入的自动重置权限行为的基础上进行了扩展。如果您的应用以 Android 12 为目标平台,并且用户有几个月未与您的应用互动,则系统会自动重置授予的所有权限并将您的应用置于休眠状态。
通知 trampoline 限制(不影响现有FCM Push)
当用户与通知互动时,某些应用会启动一个应用组件来响应通知点按操作,该应用组件最终会启动用户最终看到并与之互动的 activity。此应用组件被称为通知 trampoline。
当用户点按通知或通知中的操作按钮时,您的应用无法在服务或广播接收器内调startActivity() 。
解决方案:developer.android.com/about/versi…