【问题标题】:Set value in manifestPlaceholders to applicationId将 manifestPlaceholders 中的值设置为 applicationId
【发布时间】:2016-02-15 23:21:38
【问题描述】:

我正在尝试在应用程序中配置一些 SDK,但我正面临这个 gradle 问题,这让我很头疼。我要做的就是设置低于值

manifestPlaceholders = [manifestApplicationId: "$applicationId"]

类似于com.flavorA.debug 用于调试构建,老实说,我不知道我应该如何设置它。如果我将此部分放在defaultConfig 中,那么我的清单文件中会出现空值。如果我把它放到productFlavors 部分,那么我只会得到 com.flavorA,所以我缺少 buildType 后缀。

我也在尝试不同的东西,比如

applicationVariants.each{ variant->
    manifestPlaceholders = [manifestApplicationId: "test"]
}

但上面连测试的名字都没有改,其他的就更不用说了。

我应该如何用 gradle 解决这个问题?

【问题讨论】:

    标签: android android-gradle-plugin android-manifest build.gradle


    【解决方案1】:

    您不需要 manifestPlaceHolders 或 applicationVariants 块来实现这一点。 manifest中的applicationId和包名是解耦的,所以直接写:

    productFlavors {
       pro {
           applicationId = "com.example.my.pkg.pro"
       }
       free {
           applicationId = "com.example.my.pkg.free"
       }
    }
    

    如果你想改变它的构建类型:

    buildTypes {
        debug {
            applicationIdSuffix ".debug"
        }
    }
    

    更多细节在这里:

    applicationid-vs-packagename

    【讨论】:

    • 我实际上需要在 manifestPlaceholders 中设置它,因为它需要由我尝试使用的那个 SDK 设置...
    • 您似乎想更改 Gradle 中的 applicationId。使用 manifestPlaceHolders,您可以从 Gradle 更改清单中的标记值。这是一个例子:gist.github.com/cdsap/19e277b8597b8b39ebc0
    • 或者如果你想使用applicationId作为manifest包名,使用:schemas.android.com/apk/res/android" package="${manifestApplicationId}" > 然后manifestPlaceholders = [manifestApplicationId : 每个风味的“$applicationId”]
    • 对于第一个例子 - 我已经看到了,但是当我在 flavor 部分使用 $applicationId 时,我得到的是 com.flavorA 而不是 com.flavorA.debug
    • 然后为调试构建类型设置 applicationIdSuffix '.debug'。
    猜你喜欢
    • 2015-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-13
    • 2021-11-16
    • 2022-12-01
    • 2018-06-21
    • 2010-10-07
    相关资源
    最近更新 更多