2013-07-13 2 views
4

나는 noobie w/gradle이기 때문에 어떤 도움을 주셔서 감사합니다. 여러 buildTypes로 빌드 스크립트가 있지만, 그 중 하나의 설정이 다른 buildTypes를 덮어 쓰는 것으로 보입니다. utest에 대한Gradle Android buildTypes가 서로 무시됩니다.

buildscript { 
    repositories { 
     mavenCentral() 
    } 

    dependencies { 
     classpath 'com.android.tools.build:gradle:0.4.2' 
    } 
} 

apply plugin: 'android' 

dependencies { 
    compile project(':facebook-android-sdk-3.0.1:facebook') 
    compile project(':google-play-services_lib') 
    compile project(':nineoldandroids') 
    compile project(':SlidingMenu-master:library') 
    compile project(':ViewPagerIndicator') 
    compile project(':volley') 
    compile project(':windowed-seek-bar') 
    compile files('compile-libs/androidannotations-2.7.1.jar', 'libs/Flurry_3.2.1.jar', 'libs/google-play-services.jar', 'libs/gson-2.2.4.jar', 'libs/picasso-1.1.1.jar', 'libs/crittercism_v3_0_11_sdkonly.jar', 'libs/gcm.jar', 'libs/apphance-library.jar') 
} 

android { 
    buildToolsVersion "17.0" 
    compileSdkVersion 17 

    signingConfigs { 
     debug { 
      storeFile file('keystores/debug.keystore') 
     } 

     release { 
      storeFile file('keystores/release.keystore') 
      storePassword "***" 
      keyAlias "***" 
      keyPassword "***" 
     } 
    } 

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

     release { 
      signingConfig signingConfigs.release 

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

     utest { 
      debuggable true 
      signingConfig signingConfigs.debug 

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

설정은 릴리스 및 디버그에 대한 설정을 재정의 :

여기 내 build.gradle입니다. 왜 그런지 알아?

답변

12

원본 세트 사용이 잘못되었습니다. 각 빌드 유형 클로저 내부에는 없습니다. 그들은 스스로 선언 : 빌드 유형이 '주'소스 세트의 상단에 자신의 소스 세트가

android { 
    buildTypes { 
     debug { 
      ... 
     } 
     release { 
      ... 
     } 
     utest { 
      ... 
     } 
    } 

    sourceSets { 
     debug { 
      ... 
     } 
     release { 
      ... 
     } 
     utest { 
      ... 
     } 
    } 
} 

하는 것으로. 따라서 모든 빌드 유형 소스 셋을 'src'를 사용하도록 설정하면 안됩니다. 이 경우 utest/AndroidManifest.xml에서 매니페스트 메인 매니페스트에 통합됩니다

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

참고 할 수있다.