Android 11 应用程序崩溃并显示“您的应用程序的 AndroidManifest.xml 中的元数据标记没有正确的值。预期为 12451000,但发现为 4323000”
Posted
技术标签:
【中文标题】Android 11 应用程序崩溃并显示“您的应用程序的 AndroidManifest.xml 中的元数据标记没有正确的值。预期为 12451000,但发现为 4323000”【英文标题】:Android 11 app crash with "The meta-data tag in your app's AndroidManifest.xml does not have the right value. Expected 12451000 but found 4323000" 【发布时间】:2021-01-24 10:04:27 【问题描述】:我的应用在 android 11 设备上开始崩溃,并显示以下错误消息“您应用的 AndroidManifest.xml 中的元数据标记没有正确的值。预期为 12451000,但找到了 4323000”。我知道这些问题,并且我已经在清单文件中定义了正确的值,如下所示:
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
如果我关注 google_play_services_version 我可以找到预期值
<integer name="google_play_services_version">12451000</integer>
借助 Firebase 分析,我可以确认它仅在 Android 11 设备上发生。
到目前为止,我尝试了以下各种 SO 帖子:
1- 将所有使用的播放服务和 Firebase 依赖项更新到最新的可用版本。
2- 使用的工具:替换为 build clean 过程,在元数据标签中,app 模块和 Wear 模块如下:
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version"
tools:replace="android:value" />
3- 检查所有使用的第 3 部分库/SDK 清单文件中的 @integer/google_play_services_version,但所有文件都重定向到预期值,即 12451000。
以下是 build.gradle 文件: A- build.gradle :app-
apply from: '../release-config.gradle'
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
apply plugin: 'android-release-plugin'
apply plugin: 'testfairy'
apply from: '../sonar.gradle'
apply from: '../jacoco.gradle'
// Add the Firebase Crashlytics plugin.
apply plugin: 'com.google.firebase.crashlytics'
android.testOptions
unitTests.all
jacoco
includeNoLocationClasses = true
unitTests.returnDefaultValues = true
tasks.sonarqube.dependsOn jacocoTestReport
android
compileSdkVersion 30
buildToolsVersion '29.0.2'
ndkVersion "16.1.4479499"
kapt
javacOptions
option("-Adagger.gradle.incremental")
option("-Adagger.formatGeneratedSource=disabled")
dexOptions
javaMaxHeapSize "4g"
defaultConfig
applicationId "com.xx”
minSdkVersion 23
targetSdkVersion 30
multiDexEnabled true
testInstrumentationRunner
"androidx.test.runner.AndroidJUnitRunner"
buildConfigField "String", "SERVER_BASE", ‘”————“’
buildConfigField "String", "LOCUSLABS_ACCOUNT_ID", ‘”——“’
buildConfigField "String", "GCM_SENDER_ID", ‘”———“’
buildConfigField "String", "GRAB_ID", ‘”———“’
buildConfigField "String", "GCT_CONVERSION_ID", ‘”———“’
buildConfigField "String", "GCT_LABEL", ‘”———“’
buildConfigField "String", "GCT_VALUE", ‘”——“’
signingConfigs
buildTypes
debug
versionNameSuffix "(Debuggable)"
debuggable true
zipAlignEnabled true
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
release
shrinkResources true
signingConfig signingConfigs.release
zipAlignEnabled true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
debuggable false
flavorDimensions 'environment'
productFlavors
dev
applicationIdSuffix ".dev"
buildConfigField "String", "SERVER_BASE", ‘”——————‘
def internalVersion =
releaseConfig.getAppVersion().internalVersion
resValue "string", "app_name", "xx (Test) $internalVersion"
stage
applicationIdSuffix ".stage"
buildConfigField "String", "SERVER_BASE", ‘”—————“’—
def internalVersion =
releaseConfig.getAppVersion().internalVersion
resValue "string", "app_name", "xx (Stage) $internalVersion"
prod
buildConfigField "String", "SERVER_BASE", ‘”———“’——
buildConfigField "String", "LOCUSLABS_ACCOUNT_ID", ‘”———“’
buildConfigField "String", "GCM_SENDER_ID", ‘”——“’
buildConfigField "String", "GRAB_ID", ‘”——“’
buildConfigField "String", "GCT_CONVERSION_ID", ‘”———“’
buildConfigField "String", "GCT_LABEL", ‘”———“’
packagingOptions
exclude 'META-INF/notice.txt'
exclude 'META-INF/license.txt'
exclude 'META-INF/ASL2.0'
exclude 'META-INF/LICENSE'
exclude 'META-INF/NOTICE'
exclude 'META-INF/**rxjava.properties**'
lintOptions
abortOnError false
testfairyConfig
apiKey “———————“
testOptions
unitTests.returnDefaultValues = true
compileOptions
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
androidExtensions
experimental = true
def powermock_version = "2.0.2"
def daggerVersion = "2.16"
def leak_canary_version = "2.0-beta-1"
dependencies
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation project(':common')
implementation('com.facebook.android:facebook-android-sdk:5.15.3')
exclude group: 'com.android.support'
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'com.google.android.material:material:1.2.1'
implementation 'androidx.cardview:cardview:1.0.0'
implementation "androidx.constraintlayout:constraintlayout:2.0.2"
implementation "com.google.android.gms:play-services-base:17.4.0"
implementation "com.google.android.gms:play-services-location:17.1.0"
implementation "com.google.android.gms:play-services-maps:17.0.0"
implementation "com.google.android.gms:play-services-vision:20.1.2"
implementation "com.google.android.gms:play-services-wearable:17.0.0"
implementation 'androidx.core:core:1.3.2'
implementation 'com.romandanylyk:pageindicatorview:1.0.3'
implementation 'com.getbase:floatingactionbutton:1.10.1'
implementation 'com.wdullaer:materialdatetimepicker:4.2.3'
// need by grab sdk
implementation 'androidx.viewpager2:viewpager2:1.0.0'
implementation 'com.github.JakeWharton:ViewPagerIndicator:2.4.1'
implementation('com.squareup.retrofit2:retrofit:2.5.0')
// exclude Retrofit’s OkHttp peer-dependency module and define
your own module import
exclude module: 'okhttp'
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
implementation 'com.squareup.okhttp3:okhttp:3.12.1'
implementation 'com.squareup.okhttp3:logging-interceptor:3.9.1'
implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
implementation 'com.google.zxing:core:3.3.3'
implementation 'io.reactivex.rxjava2:rxjava:2.1.10'
implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
implementation 'com.airbnb.android:lottie:2.5.5'
implementation 'me.grantland:autofittextview:0.2.1'
implementation 'org.greenrobot:eventbus:3.1.1'
implementation 'com.github.bumptech.glide:glide:4.11.0'
kapt 'com.github.bumptech.glide:compiler:4.11.0'
implementation 'org.kamranzafar:jtar:2.2'
implementation 'org.tukaani:xz:1.5'
implementation 'io.reactivex:rxjava:1.3.0'
implementation 'io.reactivex:rxandroid:1.2.1'
implementation(name: 'locuslabs-android-sdk-2.3.10', ext: 'aar')
transitive = true
implementation 'com.facebook.soloader:soloader:0.9.0'
implementation 'com.facebook.litho:litho-core:0.38.0'
implementation 'com.facebook.litho:litho-widget:0.38.0'
compileOnly 'com.facebook.litho:litho-annotations:0.38.0'
kapt 'com.facebook.litho:litho-processor:0.38.0'
// Firebase Dependencies
implementation "com.google.firebase:firebase-messaging:20.3.0"
// Add the Firebase Crashlytics SDK.
implementation 'com.google.firebase:firebase-crashlytics:17.2.2'
// Add the Firebase SDK for Google Analytics
implementation 'com.google.firebase:firebase-analytics:17.6.0'
implementation "com.google.firebase:firebase-core:17.5.1"
// Grab Dependencies
implementation(name: 'grab-framework-1.1.33', ext: 'aar')
implementation 'com.braintreepayments.api:braintree:2.16.0'
implementation 'com.android.volley:volley:1.1.1'
implementation 'androidx.recyclerview:recyclerview:1.1.0'
implementation 'com.google.code.gson:gson:2.8.5'
implementation 'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1'
implementation 'de.hdodenhof:circleimageview:2.0.0'
implementation 'org.kamranzafar:jtar:2.2'
implementation group: 'com.googlecode.libphonenumber', name:
'libphonenumber', version: '8.4.1'
implementation 'io.card:android-sdk:5.5.1'
api 'com.wunderlist:sliding-layer:1.2.5'
// Background Process
implementation 'com.evernote:android-job:1.4.2'
// Dagger
implementation "com.google.dagger:dagger-android:$daggerVersion"
implementation "com.google.dagger:dagger-android-support:$daggerVersion"
kapt "com.google.dagger:dagger-android-processor:$daggerVersion"
kapt "com.google.dagger:dagger-compiler:$daggerVersion"
// Paging
implementation 'androidx.paging:paging-runtime:2.1.2'
// Lifecycle
implementation "androidx.lifecycle:lifecycle-runtime:2.2.0"
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
kapt "androidx.lifecycle:lifecycle-compiler:2.2.0"
// Utils
implementation 'com.jakewharton.timber:timber:4.7.1'
//For updating styles attributes dynamically
implementation 'com.airbnb.android:paris:1.7.1'
// A memory leak detection library.
debugImplementation "com.squareup.leakcanary:leakcanary-android:$leak_canary_version"
implementation "com.squareup.leakcanary:leakcanary-object-watcher-android:$leak_canary_version"
implementation 'com.intuit.sdp:sdp-android:1.0.6'
wearApp project(':wearable')
//Test
testImplementation 'junit:junit:4.12'
testImplementation 'org.mockito:mockito-core:2.23.0'
testImplementation "org.powermock:powermock-module-junit4:$powermock_version"
testImplementation "org.powermock:powermock-module-junit4-rule:$powermock_version"
testImplementation "org.powermock:powermock-api-mockito2:$powermock_version"
testImplementation "org.powermock:powermock-classloading-xstream:$powermock_version"
androidTestImplementation('androidx.test.espresso:espresso-core:3.3.0')
exclude group: 'com.google.code.findbugs'
exclude group: 'com.android.support', module: 'support-annotations'
androidTestImplementation('androidx.test:runner:1.3.0')
exclude group: 'com.android.support', module: 'support-annotations'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation ("com.github.tomeees:scrollpicker:1.7.4")
apply plugin: 'com.google.gms.google-services'
B- *** build.gradle 文件:
buildscript
ext.kotlin_version = '1.3.72'
repositories
maven url 'https://plugins.gradle.org/m2/'
maven url "http://www.bugsense.com/gradle/"
mavenLocal()
jcenter()
google()
dependencies
classpath 'com.android.tools.build:gradle:4.0.2'
classpath 'com.dminc.gradle:android-release-plugin:1.1.0.6'
classpath 'com.testfairy.plugins.gradle:testfairy:2.0'
classpath 'org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:2.6.2'
classpath 'com.google.gms:google-services:4.3.4'
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.3.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
allprojects
repositories
flatDir dirs 'libs'
mavenLocal()
mavenCentral()
google()
我正在通过初始屏幕 午餐活动 检查 Play 服务的可用性。我什至尝试通过应用 try-catch 来捕获抛出的异常并能够成功捕获它,但应用程序仍然崩溃:
我正在通过初始屏幕 午餐活动 检查 Play 服务的可用性。我什至尝试通过应用 try catch 来捕获抛出的异常并能够成功捕获它,但应用程序仍然崩溃:
public static int checkPlayServices(Context activity)
int retValue;
try
int resultCode = GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(activity);
Timber.tag(TAG).d( "This device is supported with api version%s",
GoogleApiAvailability.getInstance().getClientVersion(activity));
if (resultCode != ConnectionResult.SUCCESS)
if (GoogleApiAvailability.getInstance().isUserResolvableError(resultCode))
retValue = PLAY_STORE_RESOLVABLE_ERROR;
Timber.tag(TAG).d( "This device is supported but can be resolved.");
else
Timber.tag(TAG).d( "This device is not supported and cannot be resolved.");
retValue = PLAY_STORE_UN_SUPPORT;
else
retValue = PLAY_STORE_AVAILABLE;
catch (java.lang.IllegalStateException e)
Timber.tag(TAG).d( "This device Throws Illegal state Exception. Probably caused by google_play_services_version");
Timber.tag(TAG).e( e.getMessage());
retValue = PLAY_STORE_VERSION_ERROR;
catch (java.lang.Exception e)
Timber.tag(TAG).d( "This device Throws Exception. Exact Reason is unknown");
Timber.tag(TAG).e( e.getMessage());
retValue = PLAY_STORE_ERROR;
return retValue;
我能够捕捉到,但应用程序仍然出现崩溃,这让我想到另一个想法,可能是其他一些 SDK 依赖项引发了这个异常。我检查了所有第 3 个 SDK,发现另外两个 SDK 的 Facebook 和 Braintree 付款也在检查 Google Play 服务。
_ 我已经删除了两个 SDK,但仍然崩溃。
注意:此崩溃仅发生在适用于所有构建版本的 Android 11 设备/模拟器上。
现在我别无选择。任何线索都会非常有帮助。
提前致谢。
【问题讨论】:
我也面临同样的问题。你找到解决办法了吗? @Himanshu 还没有。 哪种类型的app有这个问题debug或release? @Harkal 两种类型。 同样,我在发布时遇到问题并在分析 apk 后获得正确的值。 【参考方案1】:问题已解决。
只需更改元标记的顺序即可。版本标签应始终放在第一位。
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="@string/google_api_key"
tools:replace="android:value" />
【讨论】:
试过了,但没有成功。【参考方案2】:是的! 我找到了解决方案。 问题出在库上:
implementation "com.google.firebase:firebase-core:17.5.1"
只需替换为
implementation 'com.google.firebase:firebase-core:16.0.3'
上面的库加载了“地下室库”,最后我们有了两个“地下室”库。 第一个由“play services”库加载,第二个由“firebase-core”加载
更多请点击以下网址: The library com.google.android.gms:play-services-basement is being requested by various other libraries at [[15.0.1,15.0.1]], but resolves to 11.8.0
还有这个
https://github.com/evollu/react-native-fcm/issues/1026
如果此答案对您没有帮助,请阅读 'com.google.firebase:firebase-core:16.0.3'
中的 gradle 和 force 库
如下:
implementation ("com.google.firebase:firebase-core:16.0.3")
force = true
注意: “强制”方法已被弃用,您必须使用新功能
【讨论】:
听起来像一个解决方案。正如我在一些日志中看到的“地下室图书馆”。我一定会试一试,很快就会更新你。谢谢。 @AdarshYadav YEAH,在修复之前,我阅读了更多关于 Google Sensei 崩溃的信息,但他们没有帮助我,最后我找到了上面的链接并修复,所以如果我的解决方案有效,请标记为解决方案谢谢!【参考方案3】:如果您有 元标记,则大多数情况下的答案在于拥有兼容的库版本和已弃用方法的更新的组合。
您在 build.gradle 中提到了以下内容:
实现('com.facebook.android:facebook-android-sdk:5.15.3')
我在具有上述 Facebook SDK 版本的 Android 11 上熟悉的一个可能原因是使用了已弃用的方法 activateApp 导致上述问题。
将方法AppEventsLogger.activateApp(this);更新为:
AppEventsLogger.activateApp(getApplication());
让我们知道它是否对您有用。
【讨论】:
你是说如果我改变activateApp调用它可以解决播放服务的崩溃?我之所以问,是因为我在 crashlytics 中看到了这个崩溃,但我无法在我的设备中重现,所以我必须进行更改,将其部署到生产环境中,看看是否有效。 是的,对我来说做出这样的改变是值得的。 我进行了更改,它将在接下来的几天内投入生产,我会在这里评论更新以上是关于Android 11 应用程序崩溃并显示“您的应用程序的 AndroidManifest.xml 中的元数据标记没有正确的值。预期为 12451000,但发现为 4323000”的主要内容,如果未能解决你的问题,请参考以下文章
如果 Android 服务崩溃,它会导致它正在运行的应用程序崩溃吗?
在Android Developer Console上崩溃和ANR
当我们执行以下操作时,您的应用程序在运行 iOS 11.1 并连接到 IPv6 网络的 iPad 和 iPhone 上崩溃: