是否可以为gradle生成的AndroidManifest指定额外的XML字段。具体来说,用例是我有一个使用Google Maps的应用程序,并且根据their documentation,该应用程序必须指定:
<uses-feature
android:glEsVersion="0x00020000"
android:required="true"/>
在AndroidManifest中。如果您随后尝试使用gradle测试此应用,则会获得:
$ ./gradlew connectedCheck
<snip>
:myapp:processTestTestManifest
[manifestMerge1694110764542760523.xml:1, manifestMerge678902239503841223.xml:15] Main manifest has <uses-feature android:glEsVersion='0x00010000'> but library uses glEsVersion='0x00020000'
Note: main manifest lacks a <uses-feature android:glEsVersion> declaration, and thus defaults to glEsVersion=0x00010000.
我当前的(相关)项目结构是:
myapp/AndroidManifest.xml
myapp/project.properties
myapp/res/
myapp/src/com/magic/package/Foo.java
myapp/tests/java/com/magic/package/test/FooTest.java
换句话说,除了
tests/
之外的遗留项目结构。我也尝试过在myapp/tests/
中添加一个任意的AndroidManifest.xml,即使the doc拒绝这样做,也只是为了进行测试。但是,我没有运气。我的
buid.gradle
看起来像:buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.4.+'
}
}
apply plugin: 'android'
repositories {
mavenCentral()
}
dependencies {
compile project('stuff')
}
android {
compileSdkVersion 17
buildToolsVersion "17"
defaultConfig {
minSdkVersion 8
targetSdkVersion 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']
}
instrumentTest.setRoot('tests')
}
}
如果删除
uses-feature
,则测试将运行,但如果可能的话,我想避免这种情况。 最佳答案
无法提供自定义属性,但看起来合并已损坏。我必须调查一下。
更新:对于google bug filed for this,此问题已通过新 list 合并进行了修复。从manifest merger user guide
关于android - 为gradle生成的AndroidManifest指定额外的XML,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17354716/