当前位置: 首页 > 知识库问答 >
问题:

如何为不同的产品口味定义不同的依赖关系

暴德运
2023-03-14

我正在将我的一个应用程序转换为Gradle,并希望使用新的构建风味功能,以有一个付费和免费的广告为基础的风味。

我希望只有基于广告的版本依赖于admob SDK。

我的生成文件如下所示:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}
apply plugin: 'android'

repositories {
    mavenCentral()
}

android {
    compileSdkVersion 18
    buildToolsVersion "18.0.1"

    defaultConfig {
        minSdkVersion 10
        targetSdkVersion 18
    }

    productFlavors {
        Pro {
            packageName "de.janusz.journeyman.zinsrechner.pro"
        }
        Free { 
            dependencies {

            }
        }
    }
}

dependencies {
    compile 'com.android.support:support-v4:18.0.+'
    compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'
    compile fileTree(dir: 'libs', include: '*.jar')
}

是否有一种方法可以在免费产品版本中配置依赖项,使其拥有自己的libs文件夹,该文件夹与包含两种版本通用库的主libs文件夹合并?

如果这是可能的,我将如何定义这个文件夹?

共有1个答案

马祺
2023-03-14

若要定义特定于风味的依赖项,可以在依赖项部分中使用procompile而不是compile。当您运行gradle属性时,您将获得自动创建的配置的概述。

正确的生成文件如下所示:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.2.3'
    }
}
apply plugin: 'com.android.application'

repositories {
    mavenCentral()
}

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        minSdkVersion 10
        targetSdkVersion 22
    }

    productFlavors {
        pro {
            packageName "de.janusz.journeyman.zinsrechner.pro"
        }
        free { }
    }
}

dependencies {
    compile 'com.android.support:support-v4:22.2.0'
    freeCompile 'com.google.android.gms:play-services-ads:7.5.0'
}
 类似资料:
  • 更新:不推荐使用GCM,请使用FCM 我正在按照Google Developers页面中的指南实现新的Google云消息 我已经成功地运行并测试了它。但我现在的问题是,我有不同的产品风格,有不同的applicationID/packageName和不同的Google Cloud Messaging Project ID。必须放在而不是flavors文件夹中。 有什么方法可以使配置针对多种口味不同吗

  • 在app.gradle中,我只为专业版添加了LockPattern库: 我在两种风格中都描述了相同的类(所以在主文件夹中),因为它很大,我不想在两种风格中重复代码。pro版本成功构建,但lite版本显示了一个错误,因为我没有导入lite版本的依赖项。 我看到的一个解决方案是将lockpattern库添加到两种口味中,然后使用proGuard,将其从lite口味中删除。虽然我相信这可能奏效,但这可能

  • 问题内容: 我想要 与 ndk库 不同的 字符串 值 。因为我有两个风味演示和现场直播,所以我想为演示风味和实时风味值“你好,我来自演示”,我想“我来自现场” 这是我的java文件代码 } 这是我的cpp文件代码 这是我的build.gradle文件 我已经在演示文件夹以及主文件夹中粘贴了相同的cpp文件,但是可以实现我的任务。任何帮助将不胜感激,这是一些参考链接 https://develope

  • 前言:这不是一个关于如何在一个Android应用中使用构建类型和产品口味的问题。我理解其中涉及的基本概念。这个问题更多的是试图理解在构建类型中应该指定哪个配置,在产品风味中应该指定哪个配置,以及实际上是否有必要进行任何区分。 本周,我学习了更多关于Android应用程序的分级配置。我最初认为自己对构建类型和产品风格有很好的把握,但我对文档越深入,就越意识到这两者之间的区别对我来说根本不清楚。 既然

  • 我有一个如下结构的android模块: 我在模块的build.gradle文件中定义了两个产品风味,称为flavor1和flavor2,位于文件夹src/main/assets/flavor1/下,而src/main/assets/flavor2是完全不同的动态库,例如:libhelper.so。它们适用于不同的产品风味。 我的意图是在gradle构建过程中,根据产品风格将不同的动态库复制到jni

  • 我有一个由maven管理依赖关系的多模块项目。 我在子模块“插件”中有多个插件。我想在不同的场景中添加不同的插件,但在每个场景中都需要一些插件。 “插件”模块中的pom.xml。 无论我运行“mvn包”还是“mvn包-P内部”,它只包含第二个模块作为依赖项。有人知道原因吗? 我的maven版本是3.3.9