是否可以为 gradle 生成的 AndroidManifest 指定额外的 XML 字段。具体来说,用例是我有一个使用谷歌地图的应用程序,并且根据 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/
。我还尝试将任意 AndroidManifest.xml 添加到 myapp/tests/
,即使 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
This new merger was introduced in version 0.10 of the plugin. As of 0.11, this tool is used by default by the gradle plugin.
关于android - 为 gradle 生成的 AndroidManifest 指定额外的 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17354716/