5

假设我有以下 build.gradle

android{
    defaultConfig{
        applicationId "com.example.base"
    }
    buildTypes{
        release{
            minifyEnabled true
        }
        debug{
            applicationIdSuffix ".dev"
            minifyEnabled false
        }
    }
    productFlavors{
        free{
            applicationId "com.example.free"
        }
        paid{
            applicationId "com.example.paid"
        }
    }
}

我想将生成的应用程序 ID 添加到 strings.xml,如下所示:

resValue "string", "app_package", applicationId

所以我可以targetPackage在偏好xml中定义的意图中使用这个值

但是值会根据我将该行放入的块而变化:

  • defaultConfig -> "com.example.base" (始终是基本 ID,无用)
  • productFlavours.free -> "com.example.free" (问题是这不会更改为调试版本的 "com.example.free.dev")
  • productFlavors -> 错误,不生成
  • buildTypes.debug -> 错误,不构建

通过使用 applicationIdSuffix,我需要 gradle 来解析最终的 id,然后才能使用它。我怎么做?

4

1 回答 1

11

productFlavorsandroidDSL之后添加:

applicationVariants.all { variant ->
    variant.resValue  "string", "app_package", variant.applicationId
}

freeDebug构建中,这将被添加到app/intermediates/res/merged/free/debug/values/values.xml

<string name="app_package" translatable="false">com.example.free.dev</string>

paidDebug

<string name="app_package" translatable="false">com.example.paid.dev</string>
于 2017-03-14T16:45:09.803 回答