Android项目升级31版本

从一则新闻聊起:
华为:10 月 31 日起所有新上架应用的 SDK 等级应≥ 30

公司项目升级从sdk29升级至31版本。

符合 Google Play 的目标 API 级别要求

行为变更:以 Android 12 为目标平台的应用

您上传的 APK 必须符合 Google Play 的目标 API 级别要求

目前项目升级过程顺利,主要进行了下述几个步骤的改动:

1.app目录下build.gradle文件

修改compileSdkVersion及targetSdkVersion为31

修改kotlin依赖版本为1.4.0;

修改Okhttp3依赖版本为4.10.0

2.app目录下AndroidManifest.xml文件

比如针对Camera权限,需要添加如下配置:

<uses-feature
        android:name="android.hardware.camera"
        android:required="false" />

升级版本31后,开始要求开发者明确指定组件的 exported 属性。
对于没有声明 exported 属性的应用,在启动的过程中就会抛出如下异常,

另外根据IDE提示,需要对Activity进行显示的设置exported的值,为true或false.

android:exported="true||false"

补充:
官网对此属性的说明:

android:exported
activity 是否可由其他应用的组件启动:
如果设为 "true",那么 activity 可由任何应用访问,并且可通过其确切类名称启动。
如果设为 "false",则 activity 只能由同一应用的组件、使用同一用户 ID 的不同应用或具有特权的系统组件启动。没有 intent 过滤器时,这是默认值。
如果应用中的 activity 包含 intent 过滤器,请将此元素设置为 "true",以允许其他应用启动该 activity。例如,假设 activity 是应用的主要 activity,并且包含 categoryandroid.intent.category.LAUNCHER。

如果此元素设为 "false",并且应用尝试启动该 activity,系统会抛出 ActivityNotFoundException。

此属性并非是限制 activity 向其他应用公开的唯一方式。权限还可用于限制可调用 activity 的外部实体。请参考 permission 属性。

3.调整kotlin开发规则

上面配置完之后,进行build重新构建项目,IDE会有些提示,基本上都是对kotlin使用语法的校验,根据IDE提示,智能添加对应的判断逻辑就好。

比如进行类型判定的添加,以及数据类型判空等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值