gpt4 book ai didi

android - 在产品 flavor 中获取 gradle 构建类型

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:36:53 26 4
gpt4 key购买 nike

我需要根据使用的产品风格创建不同的应用名称。

虽然通过简单地设置字符串资源很容易,但我不能再这样做了,因为当应用程序上传到 hockeyapp 时,应用程序名称被设置为“@string/app_name”,而不是 app_name 的值。

通过将 list 中的标签设置为“${applicationName}”并使用

设置值,我取得了一些进展
manifestPlaceholders = [ applicationName : appName ];

在产品 flavor block 中,以便在编译时设置值。

当我尝试将构建类型附加到应用程序名称时,问题就来了。我似乎无法找到一种方法来了解产品风格中当前使用的构建类型。

为了可读性,这是构建的精简版本

android {
buildVersionName "1.0.0

buildTypes {
release {
... nothing special
}
uat {
signingConfig signingConfigs.debug
buildType = "uat"
applicationIdSuffix = "." + buildType
}
debug {
signingConfig signingConfigs.debug
buildType = "uat"
applicationIdSuffix = "." + buildType
}
}
productFlavors{
flavor1{
def appName = "app name " + buildType;
manifestPlaceholders = [ applicationName : appName ];
applicationId [id]
def clientIteration = [client iteration]
versionName buildVersionName + clientIteration
versionCode [version code]
}
flavor2{
... same as above with different app name
}
flavor3{
... same as above with different app name
}
}
}

此代码工作正常,除了变量“buildType”始终是最后一个构建类型(在本例中为 debug),这意味着应用名称始终以 debug 结尾。

可能值得注意的是,我不需要在发布的应用程序名称末尾附加任何内容。

最佳答案

你可以像这样附加值

   android {

productFlavors {
Foo {
applicationId "com.myexample.foo"
manifestPlaceholders = [ appName:"Foo"]
}

Bar {
applicationId "com.myexample.bar"
manifestPlaceholders = [ appName:"Bar"]
}
}

buildTypes {
release {
manifestPlaceholders = [ appNameSuffix:""]
}

debug {
manifestPlaceholders = [ appNameSuffix:".Debug"]
applicationIdSuffix ".debug"
}
}
}

在 list 中

<application
android:label="${appName}${appNameSuffix}"
...
</application>

如果你想根据构建类型访问不同的值,你可以这样做

buildTypes {
debug{
buildConfigField "String", "Your_string_key", '"yourkeydebugvalue"'
buildConfigField "String", "SOCKET_URL", '"some text"'
buildConfigField "Boolean", "LOG", 'true'
}
release {
buildConfigField "String", "Your_string_key", '"yourkeyreleasevalue"'
buildConfigField "String", "SOCKET_URL", '"release text"'
buildConfigField "Boolean", "LOG", 'false'

}
}

并使用构建变体访问这些值:

 if(!BuildConfig.LOG)
// do something with the boolean value

或者

view.setText(BuildConfig.yourkeyvalue);

关于android - 在产品 flavor 中获取 gradle 构建类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29958019/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com