Android,Gradle产品风味;包不存在

时间:2013-08-15 00:54:38

标签: java android gradle android-build

我在这个问题上寻求帮助的高低,但仍然找不到任何东西。

我开始使用新的构建系统构建和应用程序。我在这个项目中使用两种产品口味,免费和专业。 gradle.build文件如下:

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

    repositories {
        mavenCentral()
    }

    android {
        compileSdkVersion 17
        buildToolsVersion "17.0.0"

        defaultConfig {
            minSdkVersion 7
            targetSdkVersion 17
        }

        productFlavors {
            free {
                packageName "com.example.free"
                buildConfig "public static final Boolean versionPro = true;"
            }

            pro {
                packageName "com.example.pro"
                buildConfig "public static final Boolean versionPro = false;"
            }
        }
    }

    dependencies {
        compile 'com.android.support:support-v4:13.0.+'
    }

我已经像这样构建了src文件结构,工作正常:

- 主 -java -memphic -孱 -游戏 -java文件

-free -java -memphic -孱 - 自由 -java文件

-pro -java -memphic -孱 -Pro -java文件

我想知道如何从主要活动的flavor源文件中引用一个类。我在主java文件中使用了以下代码来尝试引用免费的包类文件。

com.example.free.ClassFile.addObject();

这在构建免费版本时有效,因为它可以找到包;但是在构建专业版时,它无法找到包参考。

有没有办法可以在类文件中动态引用另一个包?因此,在编译专业版和免费版时,可以动态地找到包。我想不出办法做到这一点。

也有人知道如何使用新构建概念的好实用示例,因为这样的概念不在Gradle构建之外吗?

1 个答案:

答案 0 :(得分:0)

正如tbruyelle所提到的那样回答我的问题,就是在整个构建文件中保留相同的包名称,以便它们在构建期间不会发生冲突。

然后通过Grade.build文件更改构建包名称。这将使每种风味在设备上部署时保持唯一。