Sim*_*mas 13 android intellij-idea gradle build.gradle android-gradle-plugin
我已经看到了操纵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"
}
}
Run Code Online (Sandbox Code Playgroud)
我想设置一个这样的字符串:
resValue "string", "authority", applicationId + ".dataprovider"
Run Code Online (Sandbox Code Playgroud)
我尝试过的:
defaultConfig部分中,则applicationId仍为null,因此我得到一个错误的字符串寻找替代方案.
PS我正在使用Android Studio 0.8.12.
Sim*_*mas 34
经过大量的搜索,我找到了答案.也许有人会觉得这很有用.
productFlavors.all {
resValue "string", "authority", applicationId + ".dataprovider"
}
Run Code Online (Sandbox Code Playgroud)
这个简单的代码片段在设置了invidual变量后将字符串设置为所有风格.它有点像defaultConfig但不完全,因为它是在味道块之后执行的.
额外:
结果我甚至可以设置applicationId!我到目前为止的最终结果是:
def final String AUTHORITY = '.dataprovider'
productFlavors.all {
applicationId "com.my.app." + name
resValue "string", "authority", applicationId + AUTHORITY
buildConfigField "String", "AUTHORITY", "\""+applicationId + AUTHORITY+"\""
}
Run Code Online (Sandbox Code Playgroud)
现在我可以通过BuildConfig.AUTHORITY和获取每个flavor提供者的权限@string/authority,我分别在清单和我的类文件中使用它:
<provider
android:name="com.my.app.DataProvider"
android:authorities="@string/authority"
android:exported="false" />
Run Code Online (Sandbox Code Playgroud)
public class DataProvider extends ContentProvider {
public static final String PROVIDER = BuildConfig.AUTHORITY;
public static final Uri SEARCH_URI = Uri.parse("content://" + PROVIDER + "/search");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6144 次 |
| 最近记录: |