如何告诉Gradle使用不同于命令行的AndroidManifest?
我有一个多模块的项目。从我的项目根目录(包含多个模块)开始,我希望能够调用“gradle build”,并让它在我的一个模块中使用不同的AndroidManifest,具体取决于我传入的一些参数。实现这一目标的最佳方式是什么?我应该使用gradle.properties文件还是可以在settings.gradle文件中指定不同的build.gradle?感谢您的帮助 settings.gradle:如何告诉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
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中注释掉该变体