调用isGooglePlayServicesAvailable触发GooglePlayServicesIncorrectManifestValueException求助
彻底清理构建缓存
执行Gradle命令清空所有缓存和旧构建产物,避免残留的Manifest合并数据干扰:./gradlew clean ./gradlew :app:cleanBuildCache完成后重新构建项目,清除可能遗留的旧版本Manifest数据。
硬编码版本值并强制覆盖
在AndroidManifest.xml的<application>标签内直接写死版本号,同时通过tools:replace确保其他依赖的声明不会覆盖该配置:<!-- 需先在Manifest根标签添加 xmlns:tools="http://schemas.android.com/tools" --> <meta-data android:name="com.google.android.gms.version" android:value="12451000" tools:replace="android:value" />排查多模块Manifest冲突
如果项目包含多个模块,检查其他模块的Manifest中是否存在重复的com.google.android.gms.version声明。可通过以下命令生成合并后的完整Manifest:./gradlew :app:processDebugManifest然后到
app/build/intermediates/merged_manifests/debug/AndroidManifest.xml文件中搜索该meta-data标签,确认是否有其他模块注入了低版本值。临时降级Play Services基础库
尝试将play-services-basement降级至17.x版本,避开18.x版本可能存在的Manifest合并逻辑bug:implementation('com.google.android.gms:play-services-basement:17.6.0') { force = true }
你遇到的异常核心是合并后的Manifest版本值与Google Play Services库预期值不匹配,而首次安装正常、重启触发异常的现象,大概率源于以下原因:
- 构建缓存未彻底清理,首次安装应用使用了新的Manifest,但重启后系统读取了缓存中的旧版本数据;
- 某个依赖库(即使移除Firebase后)仍在后台注入低版本的
com.google.android.gms.version声明,且Manifest合并逻辑未正确覆盖; - Google Play Services 18.x版本的库存在Manifest合并的潜在bug,导致版本值被意外替换。
另外,构建后APK中显示的@ref/0x7f0b000f是编译后的资源引用,可通过aapt dump values app-debug.apk命令查看资源映射,确认该引用对应的实际数值是否为12451000。
内容的提问来源于stack exchange,提问作者Màrius Mora Bosch

