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

能否在build.gradle中按构建变体配置AndroidManifest的queries包名?

按构建变体配置AndroidManifest中queries的包名

可以实现,以下是两种可行方案:

方案一:使用Manifest占位符(推荐)

Android Gradle Plugin 4.0及以上版本支持在queries标签中使用manifest占位符,你之前的写法无效大概率是没在gradle中为不同变体配置占位符的值。

步骤:

  1. 在app模块的build.gradle(或build.gradle.kts)中,为每个productFlavor配置专属的占位符:
android {
    flavorDimensions "environment"
    productFlavors {
        dev {
            dimension "environment"
            // 配置开发环境需要的查询包名
            manifestPlaceholders = [
                queryPackage1: "com.example.dev.target",
                queryPackage2: "com.example.dev.target2"
            ]
        }
        prod {
            dimension "environment"
            // 配置生产环境需要的查询包名
            manifestPlaceholders = [
                queryPackage1: "com.example.prod.target",
                queryPackage2: "com.example.prod.target2"
            ]
        }
    }
}
  1. 在主AndroidManifest.xml中引用这些占位符:
<queries>
    <package android:name="${queryPackage1}" />
    <package android:name="${queryPackage2}" />
</queries>

方案二:使用变体专属的Manifest文件

利用Android构建系统的manifest合并机制,为每个flavor创建单独的manifest文件,只包含对应环境的queries配置。

步骤:

  1. 在app源码目录下,创建对应flavor的文件夹:app/src/dev和app/src/prod
  2. 在每个flavor目录下创建AndroidManifest.xml,写入对应环境的queries:
  • dev环境的app/src/dev/AndroidManifest.xml:
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
    <queries>
        <package android:name="com.example.dev.target" />
        <package android:name="com.example.dev.target2" />
    </queries>
</manifest>
  • prod环境的app/src/prod/AndroidManifest.xml:
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
    <queries>
        <package android:name="com.example.prod.target" />
        <package android:name="com.example.prod.target2" />
    </queries>
</manifest>
  1. 主app/src/main/AndroidManifest.xml中移除queries标签,构建时系统会自动合并对应flavor的manifest内容。

补充说明

  • 字符串资源(@string/xxx)确实无法在queries的package标签中使用,因为Android在处理queries的权限校验时,是在构建早期阶段,此时字符串资源尚未被解析。
  • 确保你的Android Gradle Plugin版本不低于4.0,否则占位符方案可能无法生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 13:07:31