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

时间:2015-06-26 13:42:57

标签: android android-studio android-productflavors

我已将我的应用程序从eclipse迁移到android studio,现在我试图运行产品风格。 我一直关注http://blog.robustastudio.com/mobile-development/android/building-multiple-editions-of-android-app-gradle/

上的博客

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

我能够在构建变体窗口中看到变体。

以下是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;
    }
}

我希望Constants.java文件可用于不同的风格,因为它具有不同风格的不同值。

以下是一般工作室项目中的构建结构

app/
|--libs/
|--src/
   |--vanilla/
   |  |--java/
   |     |--com/example/
   |        |--Flavor.java
   |--strawberry/
   |  |--java/
   |     |--com/example/
   |        |--Flavor.java
   |--main/
      |--java/
      |  |--...
      |--res/
      |  |--...
      |--AndroidManifest.xml

但是从日食迁移时的结构似乎完全不同。 我试图在src [demo / com.demo.app]中创建一个目录来检查flavor变体。但它不起作用。任何人都可以指导我吗?我如何为从eclipse迁移的项目包含产品风味支持

1 个答案:

答案 0 :(得分:1)

从Eclipse导入项目时,Android Studio会保留相同的文件夹结构,因此您的源代码不会移动太多。

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

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配置)的位置。

如果您不想更改项目结构,可以在sourceSets中添加另一个块以满足您的需求。以下示例将允许您将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']
        }
}

另一种方法是完全删除sourceSets闭包并更新项目结构以匹配Gradle支持的项目的标准结构。