android - 如何告诉 Gradle 从命令行使用不同的 AndroidManifest?

标签 android command-line android-manifest gradle command-line-arguments

我有一个多模块项目。从我的项目(包含多个模块)的根目录开始,我希望能够调用“gradle build”并让它根据我传入的某些参数在我的一个模块中使用不同的 AndroidManifest。完成的最佳方法是什么这个?我应该使用 gradle.properties 文件还是可以在我的 settings.gradle 文件中以某种方式指定不同的 build.gradle?任何帮助表示赞赏!

设置.gradle:

include 'ActionBarSherlock'
include '<main_app>'

build.gradle:

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 的最佳方式,比如说我在//test/AndroidManifest.xml 中的一个。我需要能够从命令行指定此更改。有什么想法吗?

最佳答案

我通过使用不同的构建类型解决了这个问题。

这是我的 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 构建,我在不同的目录中指定了一个 list 。有效。

关于android - 如何告诉 Gradle 从命令行使用不同的 AndroidManifest?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17583126/

相关文章:

android - Activity onBackPress 不显示警报对话框

android - 添加Realm脱离后,Butterknife和Realm之间的文件重复异常

linux - 历史扩展在脚本中不起作用

python - 如何在 Python 中将参数传递给导入的脚本

安卓工作室 2.2.3 : Error Running App: Default Activity not found

java - 如何使用登录:pass@ url in Glide on Android?

android - 为什么当方向改变时,区域设置会在 PreferenceActivity 上被覆盖?

node.js - npm - 有关已安装 Node 模块命令行参数的问题

java - 如何用多行文本覆盖图像(文本将位于 Canvas 的中心)

android - AndroidManifest.xml 中的 Activity 声明