java - Android、Gradle 产品 flavor ;包不存在

标签 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 -孟菲斯 -孱 -游戏 -java文件

-免费 -java -孟菲斯 -孱 -自由的 -java文件

-亲 -java -孟菲斯 -孱 -亲 -java文件

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

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

这在构建免费版本时有效,因为它可以找到包;但是在构建专业版时找不到包引用。

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

还有谁知道任何地方都有关于如何使用新构建概念的很好的实际示例,因为 Gradle 构建之外没有涵盖这样的概念?

最佳答案

如 tbruyelle 所提到的,对我的问题的回答是在整个构建文件中为各种风格保留相同的包名称,这样它们在构建过程中就不会发生冲突。

然后通过Grade.build文件更改构建包名称。这将使每种风格在设备上的部署都是独一无二的。

关于java - Android、Gradle 产品 flavor ;包不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18244700/

相关文章:

gradle - JUnit 测试无法正确加载 fop 0.20.5 所需的 xercesImpl jar

java - 反转单链表只会输出第一个条目(java

java - 加载另一个 JFrame 类的进度条

android - Kotlin中emptyList的作用是什么

Android gradle - 根据市场构建

c++ - 仅来自链接库的 Gradle NativeExecutable

java - TreeMap put 未按预期工作

java - 如何在 Spring @Service 和非 Spring 对象之间集成?

android - 在 TextView 中指定每行中的字符数?

android - Android Q 上 chris Jenx 的书法库崩溃