如何在清单中正确设置多个 applicationId 或包名称

2024-06-25

我有一个与这个问题直接相关的问题:如何让两个构建风格继承 Android Studio 中的根风格? https://stackoverflow.com/questions/26636282/how-to-have-two-build-flavors-inherit-from-a-root-flavor-in-android-studio/26637371?noredirect=1#comment44814977_26637371但将其拉到另一个问题中是有意义的。我的 build.gradle 中有这个:

flavorGroups 'fruit', 'paid'

productFlavors {
    apple {
        flavorGroup 'fruit'
    }
    orange {
        flavorGroup 'fruit'
    }
    free {
        flavorGroup 'paid'
    }
    premium {
        flavorGroup 'paid'
    }
}

目前我有四个独特的应用程序。

  1. 苹果免费
  2. 苹果付费
  3. 橙色免费
  4. 橙色付费

但他们还没有唯一的包名称/应用程序 ID。

在这种情况下,如何设置四个唯一的应用程序 ID/包名称?


我试过什么?

在上一个问题中,@Scott Barta 建议在清单中为四个应用程序中的每一个设置包名称。

当我尝试创建四个附加清单时(注意:我之前在 /main 中有一个“核心”清单),我收到错误:清单合并失败:AndroidManifest.xml 中的 Main AndroidManifest.xml 清单:未声明包属性。似乎我从核心清单文件(在 /main 中)中删除了它不想构建的包名称。


最简单的定制方法applicationId是使用格拉德尔的applicationIdSuffix财产 https://futurestud.io/tutorials/android-how-to-have-multiple-app-dev-versions-on-your-devices。下面的例子:

defaultConfig {
    applicationId 'com.example'
}

flavorGroups 'fruit', 'paid'

productFlavors {
    apple {
        flavorGroup 'fruit'
        applicationIdSuffix '.apple'
    }
    orange {
        flavorGroup 'fruit'
        applicationIdSuffix '.orange'
    }
    free {
        flavorGroup 'paid'
        applicationIdSuffix '.free'
    }
    premium {
        flavorGroup 'paid'
        applicationIdSuffix '.premium'
    }
}

Gradle 内置了功能齐全的编程语言 Groovy,因此您可以做更多事情精心制作的巫术 https://stackoverflow.com/a/26628240/40352比这更好,但这是最简单的方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在清单中正确设置多个 applicationId 或包名称 的相关文章

随机推荐