マルチモジュールプロジェクトがあります。プロジェクトのルート(複数のモジュールを含む)から、「gradle build」を呼び出して、渡したパラメーターに応じて、モジュールの1つで異なるAndroidManifestを使用できるようにしたいと考えています。達成するための最良の方法は何ですかこの? gradle.propertiesファイルを使用する必要がありますか、それともsettings.gradleファイルで別のbuild.gradleを指定できますか?助けていただければ幸いです。
settings.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ビルドでは、別のディレクトリでマニフェストを指定していることがわかります。動作します。