我想与Google Play Services Maps
模块集成。
由于地图清单声明:
<uses-feature
android:glEsVersion="0x00020000"
android:required="true"/>
Gradle
manifest merger将此块添加到生成的清单中,使我的应用在运行OpenGL 1.0
的设备上不受支持,但我的地图功能不是必需的,而且我也是想要支持这些设备。
我已尝试在其中添加其中一个:
<uses-feature
android:glEsVersion="0x00010000"
android:required="false" />
或
<uses-feature
android:glEsVersion="0x00010000"
android:required="false"
tools:replace="glEsVersion,required" />
或
<uses-feature
android:glEsVersion="0x00010000"
android:required="false"
tools:node="remove"
tools:replace="glEsVersion,required"/>
但没有任何作用,要么自动选择具有最高值的那个(2.0),要么将两个块添加到生成的清单中,仍然使我的应用程序需要2.0
答案 0 :(得分:4)
我能够使用build.gradle
黑客通过手动覆盖合并的清单源来解决它。
但是我希望使用Gradle's manifest merger
工具(tools:node
,tools:replace
等更优雅的方式。)
我从glEsVersion
删除了AndroidManifest
,并将以下内容添加到build.gradle
:
applicationVariants.all { variant ->
variant.outputs.each { output ->
output.processManifest.doLast {
def manifestOutFile = output.processManifest.manifestOutputFile
def newFileContents = manifestOutFile.getText('UTF-8').replace("android:glEsVersion=\"0x00020000\"", "android:glEsVersion=\"0x00010000\"")
manifestOutFile.write(newFileContents, 'UTF-8')
}
}
}