产品风格[从eclipse迁移到android studio]

产品风格[从eclipse迁移到android studio],android,android-studio,android-productflavors,Android,Android Studio,Android Productflavors,我已经将我的应用程序从eclipse迁移到android studio,现在我正在尝试运行产品风格。 我一直在关注这个博客 以下是从eclipse导入时的构建结构。 我可以在构建变体窗口中看到变体 下面是build.gradle 应用插件:“com.android.application” dependencies { compile fileTree(dir: 'libs', include: '*.jar') compile project(':volley') c

我已经将我的应用程序从eclipse迁移到android studio,现在我正在尝试运行产品风格。 我一直在关注这个博客

以下是从eclipse导入时的构建结构。

我可以在构建变体窗口中看到变体

下面是build.gradle

应用插件:“com.android.application”

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile project(':volley')
    compile 'com.google.android.gms:play-services-gcm:7.5.0'
    compile 'com.android.support:cardview-v7:21.0.+'
    compile 'com.android.support:recyclerview-v7:21.0.+'
    compile 'com.android.support:appcompat-v7:21.0.+'
}

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.0"

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }

        // Move the tests to tests/java, tests/res, etc...
        instrumentTest.setRoot('tests')

        // Move the build types to build-types/<type>
        // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
        // This moves them out of them default location under src/<type>/... which would
        // conflict with src/ being used by the main source set.
        // Adding new build types or product flavors should be accompanied
        // by a similar customization.
        debug.setRoot('build-types/debug')
        release.setRoot('build-types/release')
    }

    defaultConfig {
        multiDexEnabled true
    }

    buildTypes {

        release {
            minifyEnabled true;
            proguardFiles getDefaultProguardFile('proguard-project.txt');
        }
    }

    productFlavors {

        demo {
            applicationId "com.demo.app"
        }

    }

    lintOptions {
        checkReleaseBuilds false;
        abortOnError false;
    }
}
但是从eclipse迁移时的结构似乎完全不同。
我试图在src[demo/com.demo.app]中创建一个目录来检查味道变量。但它不起作用。谁能给我指点一下吗?如何为从eclipse迁移的项目提供产品风格支持当您从eclipse导入项目时,Android Studio保持相同的文件夹结构,这样您的源代码就不会移动太多

这意味着您将无法使用默认的源位置。这就是build.gradle具有
sourceset
闭包的原因:

sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }
}
此块设置所有默认代码的位置(
main
配置)

如果不想更改项目结构,可以在
sourceset
中添加另一个块,以满足您的需要。下面的示例将允许您将
demo
风格的所有代码放在
demo/src
下:

sourceSets {
        main {}
        demo {
            manifest.srcFile 'demo/AndroidManifest.xml'
            java.srcDirs = ['demo/src']
            resources.srcDirs = ['demo/src']
            aidl.srcDirs = ['demo/src']
            renderscript.srcDirs = ['demo/src']
            res.srcDirs = ['demo/res']
            assets.srcDirs = ['demo/assets']
        }
}

另一种选择是完全删除
源集
闭包,并更新项目结构以匹配Gradle支持的项目的标准结构。

听起来很完美。我将尝试解决方案并接受答案。。干杯:)在包含了您提到的源代码集之后,我在编译时面临着各自风格的重复类错误复制类:com.demo.app.Constants'听起来您的主源代码集和演示源代码集中都有一个
Constants
类。主源集中的所有代码都包含在所有变体中,而其他源集中的代码(如demo)仅包含在各自的变体中。因此,如果两个类中都有一个
常量
,那么最终将得到同一类的两个冲突副本。听起来您可能需要一个带有发布常量的
release
源代码集和一个带有演示常量的
demo
源代码集。
sourceSets {
        main {}
        demo {
            manifest.srcFile 'demo/AndroidManifest.xml'
            java.srcDirs = ['demo/src']
            resources.srcDirs = ['demo/src']
            aidl.srcDirs = ['demo/src']
            renderscript.srcDirs = ['demo/src']
            res.srcDirs = ['demo/res']
            assets.srcDirs = ['demo/assets']
        }
}