12

私はマルチモジュールプロジェクトを持っています。私のプロジェクト(複数のモジュールを含む)のルートから、私は 'gradle build'を呼び出すことができ、渡すパラメータに応じて別のAndroidManifestを使用するようにしたいと考えています。この? 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

さまざまなビルドタイプを使用してこれを解決しました。ここで

は私のbuild.gradleです:

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

あなたは私のUTESTビルドのために、私は別のディレクトリにあるマニフェストを指定してることがわかります。働く

+1

複数のAndroidManifest.xmlファイルをマージする際に、マージしないでください。たとえば、デバッグ用にビルドするときに、一緒にマージされているdebugとqaのbuildTypeがあります。 –

+0

私はそれが設計上のものだと思うので、異なるビルドに対して異なる権限を持つことができます。 –

+1

この回答は、プラグインのドキュメント全体よりも便利です。 –

関連する問題