我正在尝试使用不同的通道名称构建多个apks,我需要在java代码中读取通道名称。所以我正在尝试使用productFlavors,目前我正在尝试将以下代码添加到我的build.gradle
productFlavors {
GooglePlay {
}
Amazon {
}
}
sourceSets {
GooglePlay {
assets.srcDirs = ['assets-GooglePlay', 'assets']
}
Amazon {
assets.srcDirs = ['assets-Amazon', 'assets']
}
}
我还要在两个资产文件夹channelName
和assets-GooglePlay
中添加文件名assets-Amazon
。我希望生成的apk将包含此channelName
文件,但事实是它不存在。那么我该如何处理这个问题呢?感谢
我目前正在使用Gradle 2.2.1
答案 0 :(得分:1)
你想要实现的目标可以通过分离两个字符串文件来完成,每个字符串都有一个。
所以目前你可能在src / main / res / values中有一个名为strings.xml的文件。让我们说这个文件包含你想要GooglePlay的字符串,然后你需要做的是在src / Amazon / res / values中创建另一个,它将包含亚马逊的字符串。
完成此操作后,您可以通过从活动内部调用getResources().getString(R.string.STRING_NAME)
来从代码中访问该字符串。
答案 1 :(得分:1)
找到一个更简单的解决方案
//changing image using didSet
didSet
{
if (self.isChecked == true)
{
self.setImage(checked, forState: .Normal)
}
else
{
self.setImage(unChecked, forState: .Normal)
}
}
然后通过productFlavors {
GooglePlay {
buildConfigField "String", "ChannelName", "\"GooglePlay\""
}
Amazon {
buildConfigField "String", "ChannelName", "\"Amazon \""
}
}
答案 2 :(得分:0)
在每个productFlavor中添加resValue也是一种巧妙的方法。