12

저는 다중 모듈 프로젝트를 가지고 있습니다. 내 프로젝트의 루트 (여러 모듈 포함)에서 'gradle build'를 호출하고 전달하는 매개 변수에 따라 다른 모듈을 사용하도록하고 싶습니다. 무엇이 가장 좋은 방법인가요? 이? gradle.properties 파일을 사용해야합니까, 아니면 다른 settings.gradle 파일에 다른 build.gradle을 지정할 수 있습니까? 어떤 도움을 주셔서 감사합니다!Gradle에게 명령 줄에서 다른 AndroidManifest를 사용하도록 알려주는 방법은 무엇입니까?

settings.gradle :

include 'ActionBarSherlock' 
include '<main_app>' 

build.gradle : 나는 다른의 AndroidManifest.xml를 사용하는 가장 좋은 방법을 찾고 있어요

buildscript { 
    repositories { 
     mavenCentral() 
    } 

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

apply plugin: 'android' 

dependencies { 
    compile project(':ActionBarSherlock') 
} 

android { 
    buildToolsVersion "17.0" 
    compileSdkVersion 17 

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

, 나는 // 테스트가 한 말 /AndroidManifest.xml. 그리고이 변경 사항을 명령 줄에서 지정할 수 있어야합니다. 어떤 아이디어?

답변

13

다른 빌드 유형을 사용하여이 문제를 해결했습니다. 당신이 내 utest 빌드, 나는 다른 디렉토리에 매니페스트를 지정하고 있습니다 볼 수 있습니다

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

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

     release { 
      zipAlign true 
      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 { 
      debuggable true 
      signingConfig signingConfigs.debug 

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

:

여기 내 build.gradle입니다. 공장.

+1

다른 AndroidManifest.xml 파일을 병합 할 때 병합해서는 안되는 문제가 있습니다. 예를 들어, 디버그 용으로 빌드 할 때 함께 병합되는 디버그 및 qa buildType이 있습니다. –

+0

디자인 상으로는 다른 빌드에 대해 다른 권한을 가질 수 있다고 생각합니다. –

+1

이 답변은 전체 플러그인 설명서보다 유용합니다.) –

관련 문제