标签: android-flavordimension

gradle:仅针对特定风味应用插件

我的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

19
推荐指数
2
解决办法
2150
查看次数

Android Studio:具有两个以上风味尺寸(风味组)的产品风味组合

我正在使用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)

当然,没有实例ExampleFragmentsrc/main.

在开发期间的某个时刻,我必须包含应用程序的免费付费版本.我认为这可以通过添加一个新的名为味尺寸可以轻松实现version,并命名为两类产品的口味freepaid:

 …
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

15
推荐指数
1
解决办法
4571
查看次数

gradle 风味维度中的组合 BuildConfig 变量

在我的 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)

现在,我添加了“环境”维度,我想要设置的是四个不同的端点:

  1. Brand1-staging:“ http://brand.one.staging.api/
  2. Brand1-生产:“ http://brand.one.production.api/
  3. Brand2-staging:“ http://brand.two.staging.api/
  4. Brand2-生产:“ http://brand.two.Production.api/

但我不知道如何BuildConfig为风味维度的特定组合创建变量。这甚至可以用裸 gradle 实现吗?

谢谢

gradle android-build-flavors android-flavordimension android-buildconfig

7
推荐指数
1
解决办法
1989
查看次数

在 Multi Flavor 应用程序中,如何避免重复资源

如果我有 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

5
推荐指数
1
解决办法
3458
查看次数

如何为具有风味维度的不同产品变体指定签名配置?

之前已经问过这个问题(例如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

5
推荐指数
1
解决办法
739
查看次数

如何将签名配置添加到 Multi-FlavorDimensions (ProductFlavors)?

例如,我有一个 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

5
推荐指数
0
解决办法
283
查看次数

React Native - 如何让 productFlavors 具有不同的 applicationIds?

我有一个 RN 代码,我想在 Android 上有 2 种口味。这些口味的不同之处在于:

  1. ic_launcher & drawable
  2. 字符串
  3. 应用程序ID

我在 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

4
推荐指数
1
解决办法
5839
查看次数

如何在 React Native Android 应用程序中处理产品风味?

我的 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

4
推荐指数
1
解决办法
9087
查看次数

如何获取 build.gradle 中的风味维度列表?

在我的build.gradle,我有

android {
    flavorDimensions "first", "second"
    productFlavors {
        a {
            dimension "first"
        }
...
}
Run Code Online (Sandbox Code Playgroud)

如何获取与flavorDimensionsgradle 创建风味组合时使用的顺序相同的列表?

android build.gradle android-flavordimension

1
推荐指数
1
解决办法
1422
查看次数