添加play-services-maps依赖自动添加glEsVersion 2.0要求

时间:2016-02-21 13:13:47

标签: android google-maps android-gradle google-play-services android-manifest

我想与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

1 个答案:

答案 0 :(得分:4)

我能够使用build.gradle黑客通过手动覆盖合并的清单源来解决它。

但是我希望使用Gradle's manifest merger工具(tools:nodetools: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')
            }    
        }
    }