Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何告诉Gradle使用不同于命令行的AndroidManifest?_Android_Command Line_Android Manifest_Gradle_Command Line Arguments - Fatal编程技术网

如何告诉Gradle使用不同于命令行的AndroidManifest?

如何告诉Gradle使用不同于命令行的AndroidManifest?,android,command-line,android-manifest,gradle,command-line-arguments,Android,Command Line,Android Manifest,Gradle,Command Line Arguments,我有一个多模块的项目。从我的项目根目录(包含多个模块)开始,我希望能够调用“gradle build”,并让它在我的一个模块中使用不同的AndroidManifest,具体取决于我传入的一些参数。实现这一目标的最佳方式是什么?我应该使用gradle.properties文件还是可以在settings.gradle文件中指定不同的build.gradle?感谢您的帮助 settings.gradle: include 'ActionBarSherlock' include '<main_ap

我有一个多模块的项目。从我的项目根目录(包含多个模块)开始,我希望能够调用“gradle build”,并让它在我的一个模块中使用不同的AndroidManifest,具体取决于我传入的一些参数。实现这一目标的最佳方式是什么?我应该使用gradle.properties文件还是可以在settings.gradle文件中指定不同的build.gradle?感谢您的帮助

settings.gradle:

include 'ActionBarSherlock'
include '<main_app>'

我正在寻找使用不同AndroidManifest.xml的最佳方法,比如我在//test/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']
        }
    }
}
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构建,我在不同的目录中指定了一个清单。有效。

我发现不同的AndroidManifest.xml文件合并在一起时出现问题,不应该合并。例如,我有一个debug和一个qa buildType,它们在为debug构建时被合并在一起。我认为这是通过设计实现的,这样您就可以对不同的构建拥有不同的权限。这个答案比整个插件文档更有用;)有没有办法禁用合并?我选择了一个不同的构建变体,并且它正在构建一个合并的清单,除非我在build.gradle中注释掉该变体