web-dev-qa-db-fra.com

Android 11 App Crash avec "The Meta-Data Tag dans l'application AndroidManifest.xml n'a pas la bonne valeur. Attendu 12451000 mais trouvé 4323000"

Mon application commence à se bloquer sur Android 11 périphériques avec le message d'erreur suivant "La balise Meta-Data dans votre application androidmanifest.xml n'a pas la bonne valeur. Attendu 12451000 mais a trouvé 4323000 ". Je suis au courant de tels problèmes et j'ai déjà défini la valeur correcte dans le fichier manifeste comme suit:

 <meta-data
        Android:name="com.google.Android.gms.version"
        Android:value="@integer/google_play_services_version" />

Si je suis Google_play_services_version, je peux trouver la valeur attendue

<integer name="google_play_services_version">12451000</integer>

Avec l'aide de Firebase Analytics, je peux confirmer que cela se produit avec Android 11 dispositifs uniquement. impacted end user device

Des différents SO POSTES J'ai essayé les choses suivantes jusqu'à présent:

1- Mettez à jour toutes les dépendances de jeu de jeu d'utilisées et de firebase à la dernière version disponible.

2- Outils d'occasion: Remplacer par la version Clean Clean Process, dans la balise méta-donneur, comme suit pour le module d'applications ainsi que pour le module d'usure:

<meta-data
        Android:name="com.google.Android.gms.version"
        Android:value="@integer/google_play_services_version"
        tools:replace="Android:value" />

3- Vérifiez que toutes les fichiers manifest de la 3ème partie/SDK utilisés pour @ integer/google_play_services_versions, mais tous se redirrent à la valeur attendue I.E. 12451000.

Voici les fichiers 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 Top-Niveau.Gradle Fichier:

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()
     }
     }

Je vérifie la disponibilité du service de jeu de mon écran Splash {Activité de la batterie de l'enfance}. J'ai même essayé d'attraper une exception lancée en appliquant l'essai et en capable de l'attraper avec succès, mais une application toujours écrasante:

Je vérifie la disponibilité du service de jeu de mon écran Splash {Activité de la batterie de l'enfance}. J'ai même essayé d'attraper une exception lancée en appliquant Essayez de prendre la capture et de la capable de l'attraper avec succès, mais une application toujours écrasante:

    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;
}

Je suis capable d'attraper mais l'application a toujours eu des accidents qui me conduis à une autre idée que peut-être une autre dépendance du SDK se lance cette exception. Je consulte toutes les 3ème SDK et constaté que deux autres paiements {Facebook et Braintree de SDK vérifient également sur Google Play Service}.

_ J'ai supprimé les deux SDK, mais je me crois toujours.

Remarque: ce crash ne se produit que sur Android 11 périphériques/émulateurs pour toutes les versions de construction.

Maintenant, je n'ai aucune option pour essayer. Toute conduite serait très utile.

Merci d'avance.

7
Adarsh Yadav

Si vous avez META TAG en place la réponse dans la plupart des cas, il s'agirait d'une combinaison de versions de bibliothèque compatibles et de mises à jour des méthodes obsolètes.

Vous avez mentionné la suite dans votre build.Gradle:

mise en œuvre ('com.facebook.android:Facebook-android-sdk:5.15.3')

Une raison éventuelle que je me connaissais sur Android 11 avec la version SDK ci-dessus est utilisée de méthode obsolète ActivateApp conduit à mentionner mentionné publier.

Méthode de mise à jour appeventslogger.activateApp (this); à:

AppEventsLogger.activateApp(getApplication());

Faites-nous savoir si cela a fonctionné pour vous.

1
Sahil