Hi,
I've just upgraded to Gradle 1.12 and Android gradle plugin v1.10. Just out of curiosity, I also switched to new android manifest merger by specifying:
android{
useOldManifestMerger false
}
After switch, I encountered several problems. All but one were very clear for me and I fixed them in a couple of minutes - duplicated permissions, missing package names etc. Btw, I love the ${packageName} expression to be used in intent filters etc.
The last problem I have is with merging android:minSdkVersion attribute between my app buildTypes/flavors/dependencies.
My project structure is just a standard:
- root
-- app (app is build to APK and has dependency to app compat library)
My app module has several build types and flavours. One of the build type and flavour configuration is Mo (flavour) Debug (buildType). In both debug/ and mo/ folders I have a manifest files which, in debug/ adds some additional activities to main manifest (DeveloperOptionsActivity etc) and in mo/ adds some additional permissions for GCM for different environment.
In build.gradle of my app module I have:
defaultConfig {
minSdkVersion 9
targetSdkVersion 19
[...]
}
buildTypes {
debug {
debuggable true
packageNameSuffix ".debug"
runProguard false
}
...
}
...
}
Neither my main/ nor debug/ nor /mo AndroidManifest.xml specify <users-sdk /> since when they do, lint says:

So I removed it from all main/ and debug/ and mo/ AndroidManifest.xml.
Once I did it, I see:
app:processMoDebugManifest
/Users/mateuszgrzechocinski/[...]/app/src/debug/AndroidManifest.xml:0:0 Error:
uses-sdk:minSdkVersion 1 cannot be smaller than version 7 declared in library com.android.support:appcompat-v7:19.0.1
:app:processMoDebugManifest FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:processMoDebugManifest'.
> Manifest merger failed : uses-sdk:minSdkVersion 1 cannot be smaller than version 7 declared in library com.android.support:appcompat-v7:19.0.1
The only way to get rid of this issue it to put <uses-sdk androidMinSdkVersion="9" /> in my debug/AndroidManifest.xml. That's not what I want, since I'd like one, and only one place for minSdkVersion to be set for my whole application and it's android{ minSdkVersion 9 } in my build.gradle. Lint thinks the same, I guess.
What's more interesting, putting <uses-sdk androidMinSdkVersion="9" /> in my main/ AndroidManifest.xml file doesn't change anything. Seems like every AndroidManifest.xml variant have to have it's owns <uses-sdk />, or am I missing something?
Thanks in advance and thank you Xavier and your team for a tremendous work!
Matthew