0

我试图用不同的通道名称构建多个 apk,我需要在我的 java 代码中读取通道名称。所以我正在尝试使用productFlavors,目前我正在尝试做的是将以下代码添加到我的build.gradle

 productFlavors {
    GooglePlay {
    }

    Amazon {
    }
}

sourceSets {
    GooglePlay {
        assets.srcDirs = ['assets-GooglePlay', 'assets']
    }

    Amazon {
        assets.srcDirs = ['assets-Amazon', 'assets']
    }
}

我还channelName向两个资产文件夹assets-GooglePlayassets-Amazon. 我希望生成的 apk 将包含此channelName文件,但事实是它不存在。那么我该如何处理这个问题呢?谢谢

我目前正在使用 Gradle 2.2.1

4

3 回答 3

1

您想要实现的目标可以通过拥有 2 个单独的字符串文件来完成,每个文件用于每种风格。

因此,目前您可能在 src/main/res/values 中有一个名为 strings.xml 的文件。假设这个文件包含您想要用于 GooglePlay 的字符串,那么您需要做的是在 src/Amazon/res/values 中创建另一个,它将包含 Amazon 的字符串。

getResources().getString(R.string.STRING_NAME)完成此操作后,您可以通过从活动内部调用来从代码中访问该字符串。

于 2015-05-01T11:22:20.817 回答
1

找到了一个更简单的解决方案

productFlavors {
    GooglePlay {
        buildConfigField "String", "ChannelName", "\"GooglePlay\""
    }
    Amazon {
        buildConfigField "String", "ChannelName", "\"Amazon \""
    }
}

然后通过访问频道名称BuildConfig.ChannelName

于 2015-06-03T07:50:02.620 回答
0

在你的每个productFlavor中添加resValue也是一种巧妙的方法。

于 2015-05-28T10:16:46.893 回答