2014-02-21 35 views
1

我已将我的Android项目迁移到Gradle和Android Studio,主要是为了包含风格。 但是,现在当我创建一个带有New - > Android Component的片段时,它将文件放在错误的目录中,并且找不到资源。在工作室下的错误目录中创建文件

例如。我下org.idoms.iDomsAndroid.fragments添加一个片段,我得到以下包名称:

package .........src.org.idoms.iDomsAndroid.fragments; 

那么资源文件被创建下:

/idoms-android/src/main/res/layout/ 

,而不是

/res/layout 

我的gradle文件如下所示:

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

repositories { 
    mavenCentral() 
} 

dependencies { 
    compile 'com.google.android.gms:play-services:4.1.+' 
    compile 'com.android.support:appcompat-v7:+' 
    compile 'com.android.support:support-v4:+' 
} 

android { 
    compileSdkVersion 19 
    buildToolsVersion "19.0.1" 

    defaultConfig { 
     minSdkVersion 8 
     targetSdkVersion 19 
     versionCode 6 
    } 

    productFlavors { 
     iDomsTest { 
      packageName 'org.idoms.iDomsAndroidTest' 
     } 
     iDomsAndroidDev { 
      packageName 'org.idoms.iDomsAndroidDev' 
     } 
     iDomsAndroid { 
      packageName 'org.idoms.iDomsAndroid' 
     } 
    } 

    signingConfigs { 
     release { 
       XXX 
     } 
    } 

    buildTypes { 
     release { 
      signingConfig signingConfigs.release 
     } 
    } 

    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') 

     iDomsAndroidDebug.setRoot('product-flavors/iDomsAndroid') 
     iDomsAndroidRelease.setRoot('product-flavors/iDomsAndroid') 
     iDomsAndroidDevDebug.setRoot('product-flavors/iDomsAndroidDev') 
     iDomsAndroidDevRelease.setRoot('product-flavors/iDomsAndroidDev') 
     iDomsTestDebug.setRoot('product-flavors/iDomsTest') 
     iDomsTestRelease.setRoot('product-flavors/iDomsTest')  
    } 
    println "main: " + android.sourceSets.main.res.srcDirs 

    android.applicationVariants.all { variant -> 
     println variant.name + ": " + android.sourceSets[variant.name].res.srcDirs 
    } 

    android.productFlavors.all { flavor -> 
     println flavor.name + ": " + android.sourceSets[flavor.name].res.srcDirs 
    } 

    android.buildTypes.all { buildType -> 
     println buildType.name + ": " + android.sourceSets[buildType.name].res.srcDirs 
    } 
} 

有什么我应该改变,让IDE再次正常工作?

+0

我在使用Eclipse Studio目录结构(在根级别为“src”和“res”)的项目上使用Android Studio时遇到了问题。一旦我采用了maven结构,我有更好的运气(即移动“src”到“src/main/java”和“res”到“src/main/res”。我终于决定采用Android Studio而不回头看了对不起,如果这不是你要找的答案 – AndroidGuy

+0

谢谢,我会尝试,无论如何我还是在使用Idea,所以如果需要的话,新的结构也可以在那里工作。是否有关于它的官方帮助/手册应该是,还是仅仅如上所示? –

+1

Android Studio和Gradle大部分可以处理Eclipse风格的目录结构,但是基于模板的向导(如New> Android Component)还不够聪明。 –

回答

0

请参阅Android Studio的Gradle帮助文件。工作室(真的,Gradle)采用不同的目录结构作为您在/ src/main下的文件,如您所见。这使项目与Eclipse不兼容。

+0

I改变了结构,现在一切似乎都可以正常工作 –

+0

很高兴你能够得到它的工作!祝你的项目好运! –