如何在 build.gradle 中使用最终解析的 applicationId
How to use final resolved applicationId in build.gradle
假设我有以下 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
所以我可以在偏好 xml
中定义的意图 targetPackage
中使用这个值
但是值会根据我将该行放在哪个块中而变化:
- defaultConfig -> "com.example.base"(始终是基本 Id,无用)
- productFlavours.free -> "com.example.free"(问题是这个 对于调试版本不会将 更改为 "com.example.free.dev")
- productFlavours -> 错误,未构建
- buildTypes.debug -> 错误,无法构建
通过使用 applicationIdSuffix,我需要 gradle 解析最终 ID 才能使用它。我该怎么做?
在 productFlavors
within android
DSL 之后添加:
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>
假设我有以下 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
所以我可以在偏好 xml
中定义的意图targetPackage
中使用这个值
但是值会根据我将该行放在哪个块中而变化:
- defaultConfig -> "com.example.base"(始终是基本 Id,无用)
- productFlavours.free -> "com.example.free"(问题是这个 对于调试版本不会将 更改为 "com.example.free.dev")
- productFlavours -> 错误,未构建
- buildTypes.debug -> 错误,无法构建
通过使用 applicationIdSuffix,我需要 gradle 解析最终 ID 才能使用它。我该怎么做?
在 productFlavors
within android
DSL 之后添加:
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>