我的Android gradle目前为使用不同的推送服务设置了风味维度.(一个用于baidu推送,一个用于GCM)我想让我的Android应用程序仅导入google-servicesGCM推送构建风格.有可能吗?
PS因为为了在Android中使用GCM,我要补充的apply plugin: 'com.google.gms.google-services'线在我的应用程序/文件的build.gradle的底部详见这里.
作为一个解决方案,为了让百度味道成功建立,我可能需要google-services.json为百度放置一个假人.
更新: 我似乎在这个长github问题线程中找到答案.
android android-gradle-plugin android-build-flavors android-flavordimension
我正在使用Android Studio(v 2.1,gradle plugin v 2.1.0)开发Android应用程序.我的应用程序有各种版本,它们共享许多通用代码,所以我决定使用flavor大小和产品风格来定制代码和资源的时间和地点.只要我只有两个风味尺寸,这就行了罚款.举个例子,我app.gradle是
…
flavorDimensions "fruit", "color"
productFlavors {
apple {
dimension "fruit"
}
pear {
dimension "fruit"
}
red {
dimension "color"
}
yellow {
dimension "color"
}
}
…
Run Code Online (Sandbox Code Playgroud)
我的src文件夹是
src/
appleRed/
appleYellow/
pearRed/
pearYellow/
Run Code Online (Sandbox Code Playgroud)
每个都有我的代码的自定义版本.再次,作为一个例子
src/
appleRed/java/com/example/ExampleFragment.java
appleYellow/java/com/example/ExampleFragment.java
pearRed/java/com/example/ExampleFragment.java
pearYellow/java/com/example/ExampleFragment.java
Run Code Online (Sandbox Code Playgroud)
当然,没有实例ExampleFragment在src/main.
在开发期间的某个时刻,我必须包含应用程序的免费和付费版本.我认为这可以通过添加一个新的名为味尺寸可以轻松实现version,并命名为两类产品的口味free和paid:
…
flavorDimensions "fruit", "color”, “version”
productFlavors {
apple {
dimension "fruit"
}
pear { …Run Code Online (Sandbox Code Playgroud) android android-studio android-gradle-plugin android-productflavors android-flavordimension
在我的 Android 应用程序中,我有两个风味维度:“品牌”(品牌 1、品牌 2)和“环境”(登台、生产)。BuildConfig一段时间后,我添加了“环境”维度,并且之前为不同品牌定义了一些变量。更具体地说,我BASE_URL这样定义:
flavorDimensions 'brand'
productFlavors {
brand1 {
dimension 'brand'
...
buildConfigField "String", "BASE_URL", "\"http://brand.one.api/\""
...
}
brand2 {
dimension 'brand'
...
buildConfigField "String", "BASE_URL", "\"http://brand.two.api/\""
...
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我添加了“环境”维度,我想要设置的是四个不同的端点:
但我不知道如何BuildConfig为风味维度的特定组合创建变量。这甚至可以用裸 gradle 实现吗?
谢谢
gradle android-build-flavors android-flavordimension android-buildconfig
如果我有 3 种口味 flavor1、flavor2 和 flavor3,每种口味都有 Dev、Pat 和 Prod“子口味”版本,它们的参数不同,但每种主要口味都有不同的资源。
所以我现在有 9 种不同的风格,但只有 3 个不同的资源文件夹)。我希望相同的“子口味”使用相同的资源。
我怎样才能做到这一点?我在关于 flavorDimensions 的文档中看到过,但不确定如何配置资源文件夹。
目前我正在使用类似的东西
sourceSets {
flavor1_dev{
res.srcDir 'src/flavor1/res'
}
flavor1_prod{
res.srcDir 'src/flavor1/res'
}
flavor2_dev{
res.srcDir 'src/flavor2/res'
}
flavor2_prod{
res.srcDir 'src/flavor2/res'
}
}
Run Code Online (Sandbox Code Playgroud) android android-gradle-plugin android-productflavors android-flavordimension
之前已经问过这个问题(例如Gradle 签名与风味和维度),但答案似乎不适用于 Gradle 3.5。
使用 2 个风味维度,我为每个发布变体指定了签名配置,如下所示:
signingConfigs {
klondikeGoogleRelease
...
pyramidGoogleRelease
pyramidAmazonRelease
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
minifyEnabled false
}
}
applicationVariants.all { variant ->
def flavors = variant.productFlavors
variant.mergedFlavor.setApplicationId flavors[0].ext.applicationId + flavors[1].ext.applicationIdSuffix
if (variant.buildType.name == "release") {
variant.mergedFlavor.setSigningConfig android.signingConfigs[variant.name]
}
println "Mergedflavor: ${variant.name} signing ${variant.signingConfig.name} ready ${variant.signingReady}"
}
Run Code Online (Sandbox Code Playgroud)
这足以gradle signingReport报告正确的设置,但gradle assemblePyramidGoogleRelease(例如)将构建一个未签名的 apk。
它正在跳过validateSigningPyramidGoogleRelease任务,这反映在gradle tasks --all输出结果中,没有列出validateSigning*任何*Release变体。
android gradle android-productflavors android-flavordimension
例如,我有一个 gradle 构建,如下所示:
signingConfigs {
configFlavor1 {
keyAlias 'alias1'
keyPassword 'password1'
storeFile file('location1')
storePassword 'password1'
v1SigningEnabled true
v2SigningEnabled true
}
configFlavor2 {
keyAlias 'alias2'
keyPassword 'password2'
storeFile file('location2')
storePassword 'password2'
v1SigningEnabled true
v2SigningEnabled true
}
configFlavor3 {
keyAlias 'alias3'
keyPassword 'password3'
storeFile file('location3')
storePassword 'password3'
v1SigningEnabled true
v2SigningEnabled true
}
}
flavorDimensions "dimen1", "dimen2"
productFlavors {
flavor1 {
dimension "dimen1"
}
flavor2 {
dimension "dimen1"
}
testing {
dimension "dimen2"
}
dev {
dimension "dimen2"
}
prod {
dimension "dimen2" …Run Code Online (Sandbox Code Playgroud) android gradle android-productflavors android-flavordimension android-signing
我有一个 RN 代码,我想在 Android 上有 2 种口味。这些口味的不同之处在于:
我在 app/build.gradle 文件中添加了 product flavors,并为它们中的每一个添加了一个目录 res & AndroidManifest.xml。
我特别使用了这个库这部分。并成功完成了前 2 项。至于applicationId,每当我更改 productFlavors 部分中的 applicationId 字段时,它都会给我这个错误:
`react native error: activity class {mainactivity} does not exist.`
Run Code Online (Sandbox Code Playgroud)
我使用这些命令来运行应用程序:
react-native run-android --variant flavortoneDebug
react-native run-android --variant flavorttwoDebug
Run Code Online (Sandbox Code Playgroud)
我试图更改每个风味的清单文件中的 package="" 字段,但它给了我这个错误:
Manifest merger failed : Overlay manifest:package attribute declared at
AndroidManifest.xml:2:11-38 value=(com.examle.flavorone)
has a different value=(com.examle.flavorone) declared in main manifest at AndroidManifest.xml:2:3-24
Suggestion: remove the overlay declaration at …Run Code Online (Sandbox Code Playgroud) android build.gradle android-productflavors react-native android-flavordimension
我的 React Native 应用程序有 3 个版本:App1、App2、App3。每个都有开发版本和产品版本。
我已在 android/app/build.gradle 中进行了如下设置:
flavorDimensions "client", "backend"
productFlavors {
app1 {
applicationId="com.app1name"
dimension "client"
}
app2 {
applicationId="com.app2name"
dimension "client"
}
app3 {
applicationId="com.app3name"
dimension "client"
}
dev {
dimension "backend"
}
prod {
dimension "backend"
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后我设置了 android/app/src 文件夹,如下所示:
src
-- main
-- assets
-- java
-- com
-- app1name
MainActivity.java
MainApplication.java
-- res
AndroidManifest.xml
Run Code Online (Sandbox Code Playgroud)
但我不确定将其他应用程序文件夹放在哪里,而且我尝试的任何方法似乎都不起作用。我试过了:
src
-- app2name
-- assets
-- java
-- com
MainActivity.java
MainApplication.java
-- res
AndroidManifest.xml
Run Code Online (Sandbox Code Playgroud)
(app3 也一样) …
android react-native android-flavordimension android-flavors
在我的build.gradle,我有
android {
flavorDimensions "first", "second"
productFlavors {
a {
dimension "first"
}
...
}
Run Code Online (Sandbox Code Playgroud)
如何获取与flavorDimensionsgradle 创建风味组合时使用的顺序相同的列表?