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

已在Gradle中定义SDK版本,为何还要在Manifest中配置min/max SDK?

Android Gradle已配置SDK版本时,Manifest中额外声明min/max SDK的作用

首先明确默认规则:常规的Android应用开发中,Android Gradle 插件(AGP)打包时会默认将build.gradle中定义的minSdk、maxSdk值覆盖AndroidManifest.xml里的对应配置,优先生效Gradle内的参数。但Manifest中配置这两个属性仍有不可替代的适用场景:

  • 独立AAR/SDK库发布场景
    如果你开发的是供第三方应用接入的AAR库,库模块build.gradle内配置的SDK版本不会自动同步给接入方。在库的Manifest中明确声明minSdkVersion/maxSdkVersion后,接入方应用打包时AGP会自动合并所有依赖的Manifest配置,自动校验主应用的minSdk是否满足库的要求,不符合会直接报编译错误,避免运行时出现兼容性崩溃。
  • 多渠道差异化配置场景
    针对部分要求特殊SDK范围的渠道包,你可以结合Manifest占位符动态修改Manifest内的SDK版本参数,相比完全通过Gradle变种配置的方式更灵活。比如部分应用商店要求上架包的maxSdk不得超过33,就可以在Manifest中声明对应属性,打包对应渠道时动态替换值,无需调整全局Gradle构建逻辑。
  • 非AGP构建场景
    如果你没有使用官方AGP作为构建工具,而是使用Buck、旧版Bazel等第三方构建工具,这类工具默认不会将构建脚本中的SDK版本参数合并到Manifest中,此时Manifest内的配置就是应用安装时系统识别的唯一SDK版本依据。
  • 动态特性模块(Dynamic Feature)适配场景
    应用的动态特性模块可以单独设置高于主应用的minSdk要求,你需要在动态特性模块的Manifest中单独定义minSdk参数,应用商店在用户下载该动态模块时会校验设备系统版本是否符合要求,不符合时会拦截下载,避免用户安装后无法使用。

注意:如果你需要让Manifest中的SDK配置优先级高于Gradle,可在build.gradle中添加useOldManifestPriority true配置,但官方不推荐该操作,仅建议在有特殊兼容需求时使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 12:54:03