android-添加play-services-maps依赖关系自动添加glEsVersion 2.0要求
作者:互联网
我想与Google Play服务地图模块集成.
由于地图清单声明:
<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
解决方法:
我可以使用build.gradle hacks来解决此问题,方法是手动覆盖合并的清单源.
但是我更喜欢使用Gradle的清单合并工具(tools:node,tools:replace等)的更优雅的方式.
我从AndroidManifest中删除了glEsVersion,并将以下内容添加到我的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')
}
}
}
标签:google-play-services,android-gradle,google-maps,android-manifest,android 来源: https://codeday.me/bug/20191027/1943548.html