You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于保留旧Bundle及SDK 33要求的技术咨询

问题解答

1. 关于Play Store政策的理解确认

你的理解完全正确。Google Play的官方政策明确规定:自2023年8月31日起,所有提交的应用更新(包括通过App Bundle保留的旧版本Bundle),其目标SDK版本(targetSdkVersion)必须不低于33。这意味着你之前保留的targetSdkVersion<33的旧Bundle,在之后的应用更新中无法再继续使用。

2. 不降低最新版本最低SDK的前提下支持旧设备的方案

要同时维持新版本minSdkVersion=26的要求,又能继续支持minSdkVersion=19的旧设备,推荐采用多风味(Product Flavors)构建+多版本发布的策略,具体步骤如下:

(1)在Android项目中配置多产品风味

在项目的Module级别build.gradle文件中定义两个风味:

android {
    flavorDimensions "version"
    productFlavors {
        modern {
            dimension "version"
            minSdkVersion 26
            targetSdkVersion 34 // 至少33,建议使用最新稳定版
            versionCode 100 // 版本号高于旧设备版本
            versionName "2.0.0"
        }
        legacy {
            dimension "version"
            minSdkVersion 19
            targetSdkVersion 33
            versionCode 90 // 版本号低于现代版本
            versionName "1.9.0"
        }
    }
}

(2)分离代码与资源,实现版本适配

  • 将核心业务逻辑抽离到独立模块(如:core),让两个风味都依赖该模块,保证核心功能一致。
  • 在modern风味中开发依赖高版本API的新功能(如Android 13的权限适配、Material You设计等)。
  • 在legacy风味中移除高版本API依赖,保留旧设备兼容的核心功能,同时确保所有代码适配targetSdkVersion=33的行为(比如权限请求逻辑、后台限制等)。

(3)分别构建并上传到Play Console

  • 构建modernRelease和legacyRelease两个安装包/App Bundle。
  • 在Play Console中,将modern版本发布到正式轨道,legacy版本发布到针对旧设备的轨道,或直接利用Play Store的多版本分发机制,系统会根据设备的Android版本自动匹配对应版本。

(4)辅助兼容手段

  • 全程使用AndroidX组件(如AppCompat、Core KTX、Activity Result API等),这些组件已内置对旧版本Android的兼容逻辑,能大幅降低适配成本。
  • 代码中通过Build.VERSION.SDK_INT做API级别判断,针对不同版本执行对应逻辑,比如:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
    // Android 13+ 的权限请求逻辑
} else {
    // 旧版本权限请求逻辑
}

内容的提问来源于stack exchange,提问作者jacob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 13:10:09