如何向可以从 java 代码中读取的 productFlavors 添加内容
How can I add something to the productFlavors which I can read from java code
我试图构建多个具有不同频道名称的 apk,我需要在我的 java 代码中读取频道名称。所以我正在尝试使用 productFlavors,目前我正在尝试做的是将以下代码添加到我的 build.gradle
productFlavors {
GooglePlay {
}
Amazon {
}
}
sourceSets {
GooglePlay {
assets.srcDirs = ['assets-GooglePlay', 'assets']
}
Amazon {
assets.srcDirs = ['assets-Amazon', 'assets']
}
}
我还为两个资产文件夹 assets-GooglePlay
和 assets-Amazon
添加了一个文件名 channelName
。我希望生成的 apk 将包含此 channelName
文件,但事实是它不存在。那么我该如何处理这个问题呢?谢谢
我目前正在使用 Gradle 2.2.1
您想要实现的目标可以通过拥有 2 个单独的字符串文件来实现,每个文件对应一种口味。
所以目前您可能在 src/main/res/values 中有一个名为 strings.xml 的文件。假设此文件包含您想要用于 GooglePlay 的字符串,那么您需要做的是在 src/Amazon/res/values 中创建另一个文件,它将包含用于 Amazon 的字符串。
完成此操作后,您可以通过从 activity.
内部调用 getResources().getString(R.string.STRING_NAME)
从代码访问该字符串
在你每个productFlavor中添加resValue也是一个巧妙的方法
找到更简单的解决方案
productFlavors {
GooglePlay {
buildConfigField "String", "ChannelName", "\"GooglePlay\""
}
Amazon {
buildConfigField "String", "ChannelName", "\"Amazon \""
}
}
然后通过BuildConfig.ChannelName
访问频道名称
我试图构建多个具有不同频道名称的 apk,我需要在我的 java 代码中读取频道名称。所以我正在尝试使用 productFlavors,目前我正在尝试做的是将以下代码添加到我的 build.gradle
productFlavors {
GooglePlay {
}
Amazon {
}
}
sourceSets {
GooglePlay {
assets.srcDirs = ['assets-GooglePlay', 'assets']
}
Amazon {
assets.srcDirs = ['assets-Amazon', 'assets']
}
}
我还为两个资产文件夹 assets-GooglePlay
和 assets-Amazon
添加了一个文件名 channelName
。我希望生成的 apk 将包含此 channelName
文件,但事实是它不存在。那么我该如何处理这个问题呢?谢谢
我目前正在使用 Gradle 2.2.1
您想要实现的目标可以通过拥有 2 个单独的字符串文件来实现,每个文件对应一种口味。
所以目前您可能在 src/main/res/values 中有一个名为 strings.xml 的文件。假设此文件包含您想要用于 GooglePlay 的字符串,那么您需要做的是在 src/Amazon/res/values 中创建另一个文件,它将包含用于 Amazon 的字符串。
完成此操作后,您可以通过从 activity.
内部调用getResources().getString(R.string.STRING_NAME)
从代码访问该字符串
在你每个productFlavor中添加resValue也是一个巧妙的方法
找到更简单的解决方案
productFlavors {
GooglePlay {
buildConfigField "String", "ChannelName", "\"GooglePlay\""
}
Amazon {
buildConfigField "String", "ChannelName", "\"Amazon \""
}
}
然后通过BuildConfig.ChannelName