Android 15适配攻略

1、插件版本

gradle:8.9

distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-8.9-bin.zip

tools:8.6.0

dependencies {
        classpath 'com.android.tools.build:gradle:8.6.0'
    }

2、namespace适配

android15版本开始,多模块开发,需要强制在各模块指定namespace(包名),而不是在AndroidManifest.xml上命名。

android {
    compileSdkVersion 35

    defaultConfig {
        namespace "包名"
        minSdkVersion 26
        targetSdkVersion 35
        consumerProguardFiles 'consumer-proguard-rules.pro'
    }

3、R资源引用适配

从Android15开始,google希望R资源的引用都带上包名,为了实现不同模块可以取相同资源名称,从而区分。做适配的话,工作量太大,所以暂时禁用掉。

org.gradle.caching=true
android.nonTransitiveRClass=false
android.nonFinalResIds=false

4、R8混淆

Android15,加强了混淆检查,会导致很多奇奇怪怪的错误,例如数据请求框架强转错误,一些bean类报错,建议取消掉全混淆检查。

android.enableR8.fullMode=false

5、edge-to-edge风格

在Android 15设备上,targetSDK>=Android15的应用将强制进行全屏展示,并且状态和导航栏将保持透明化当在Android15平台上之前使用的设置系统栏颜色的API将被弃用,包括setNavigationBarColor,setNavigationBarColor,即便使用这些方法设置了,系统也将默认保持沉浸式的体验。

所以我们得页面要适配这种页面风格了,但是工作量太大,google提供了一个方法,可以暂时在这个版本禁用掉这个风格。这个方法,大概率后续版本会弃用,所以及早开始适配吧。。。

主题风格将windowOptOutEdgeToEdgeEnforcement设置为false。

<style name="AppThemeNoEdge" parent="Theme.AppCompat.DayNight.NoActionBar">
        <item name="android:windowOptOutEdgeToEdgeEnforcement">true</item>
    </style>

6、读写权限变更(Android13变更)

该变更是在Android13上进行变更的,但是我适配的项目是远古版本,所以也记录一下。

Android 13系统废弃了READ_EXTERNAL_STORAGE权限,新增了READ_MEDIA_IMAGES、READ_MEDIA_VIDEO和READ_MEDIA_AUDIO这3个新的运行时权限,分别用于控制App对照片、视频、音频的访问。

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU){
            if (checkSelfPermission(Manifest.permission.READ_MEDIA_IMAGES) != PackageManager.PERMISSION_GRANTED) {
                list.add(Manifest.permission.READ_MEDIA_IMAGES);
            }
        }else {
            if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
                list.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
            }
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值