gpt4 book ai didi

android - 在 gradle 中定义一个字符串,还使用特定于 flavor 的 applicationId

转载 作者:可可西里 更新时间:2023-11-01 19:10:06 25 4
gpt4 key购买 nike

我见过操纵 gradle 构建任务的脚本,现在想知道是否可以在 `defaultConfig 之外设置一个字符串,但将其视为所有版本的默认值。

基本上我有多种口味,而且所有口味都有特定的 ApplicationId。我想使用该 id 来设置一个字符串资源,以便稍后在我的 java 代码中使用。

defaultConfig {
minSdkVersion 11
targetSdkVersion 21
versionCode 1
versionName "1.0"
}

productFlavors {
one {
applicationId "com.my.app.one"
}
two {
applicationId "com.my.app.two"
}
}

我想设置这样一个字符串:

resValue "string", "authority", applicationId + ".dataprovider"

我尝试过的:

  • 如果我把它放在 defaultConfig 部分,applicationId 仍然是 null,因此我得到一个错误的字符串
  • 将其放入每个口味的部分都可行,但由于我有多种口味,因此会产生大量代码重复

寻找替代方案。

附言我正在使用 Android Studio 0.8.12。

最佳答案

经过大量搜索,我设法找到了这个问题的答案。也许有人会发现这很有用。

productFlavors.all {
resValue "string", "authority", applicationId + ".dataprovider"
}

这个简单的代码 fragment 将一个字符串设置为所有风格之后它们的invidual变量已经设置。它有点像 defaultConfig 但又不完全是因为它是在 flavor block 之后执行的。


额外:

原来我什至可以设置 applicationId!到目前为止,我的最终结果是:

def final String AUTHORITY = '.dataprovider'

productFlavors.all {
applicationId "com.my.app." + name
resValue "string", "authority", applicationId + AUTHORITY
buildConfigField "String", "AUTHORITY", "\""+applicationId + AUTHORITY+"\""
}

现在我可以通过 BuildConfig.AUTHORITY@string/authority 获得每个 flavor 提供者的权限,我分别在 list 和类文件中使用它们:

<provider
android:name="com.my.app.DataProvider"
android:authorities="@string/authority"
android:exported="false" />


public class DataProvider extends ContentProvider {
public static final String PROVIDER = BuildConfig.AUTHORITY;
public static final Uri SEARCH_URI = Uri.parse("content://" + PROVIDER + "/search");
}

关于android - 在 gradle 中定义一个字符串,还使用特定于 flavor 的 applicationId,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26527722/

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