web-dev-qa-db-fra.com

Avec l'API 28 et le projet de bibliothèque "androidx.appcompat", le symbole "AppCompatActivity" est introuvable.

J'ai mis à jour ma version de build et cible à 28 (Pie) et remplacé les dépendances pertinentes. Maintenant, mon projet dit que le symbole n’a pas été trouvé sur AppCompatActivity. J'ai essayé de

  • Projet propre
  • Reconstruire le projet
  • Invalider les caches/redémarrer

Mais le résultat est le même. D'ailleurs quand j'essaye Ctrl+Space après le mot clé de la classe d'activité, il n'y a pas de "AppCompatActivity suggestion. J'ai essayé de vérifier si son contenu dans le dossier libraries était présent.

enter image description here

Maintenant, que dois-je faire pour que cela fonctionne? S'il existe une variante/alternative avec androidx libs, veuillez me le faire savoir. Voici mon complet build.gradle fichier

apply plugin: 'com.Android.application'
apply plugin: 'com.google.gms.google-services'

Android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.invogen.messagingapp"
        minSdkVersion 16
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
//    implementation 'com.Android.support:appcompat-v7:28.0.0'
//    implementation 'com.Android.support.constraint:constraint-layout:1.1.3'
//    implementation 'com.Android.support:design:28.0.0'
//    implementation 'com.Android.support:support-v4:28.0.0'

    // Libs for newer API 28
    implementation 'androidx.appcompat:appcompat:1.0.2'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'com.google.Android.material:material:1.1.0-alpha01'
    implementation 'androidx.cardview:cardview:1.0.0'


    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.Android.support.test:runner:1.0.2'
    androidTestImplementation 'com.Android.support.test.espresso:espresso-core:3.0.2'

    // Libs for Firebase Functionality
    implementation 'com.google.firebase:firebase-core:16.0.5'
//    implementation 'com.google.firebase:firebase-database:16.0.4'
    implementation 'com.google.firebase:firebase-messaging:17.3.4'
    implementation 'com.google.firebase:firebase-auth:16.0.5'
    implementation 'com.google.firebase:firebase-storage:16.0.4'

    // Lib for Firebase UI Elements
    implementation 'com.firebaseui:firebase-ui-database:4.2.1'

    // Libs for QR Code
    implementation 'com.google.zxing:core:3.2.1'
    implementation 'com.journeyapps:zxing-Android-embedded:3.2.0@aar'

    // Lib for Circle Image View (Profile Image)
    implementation 'de.hdodenhof:circleimageview:2.2.0'

    // Lib for Loading Images
    implementation 'com.squareup.picasso:picasso:2.71828'

    //Lib for Cropping Images
    api 'com.theartofdev.edmodo:Android-image-cropper:2.8.+'


}
apply plugin: 'com.google.gms.google-services'

D'autres publications suggèrent d'ajouter les deux paramètres ci-dessous dans le fichier Manifest

Android:appComponentFactory="anystrings be placeholder"
tools:replace="Android:appComponentFactory"

Mais avec ces deux lignes, le projet synchronise avec plusieurs erreurs et Android Studio dit

La compilation a échoué. voir la sortie d'erreur du compilateur pour plus de détails.

Si je dois ajouter plus de détails à la question, veuillez me le faire savoir.

8
Inzimam Tariq IT

Edit: Maintenant, vous pouvez facilement migrer votre projet vers androidx, cliquez simplement sur Refactor => Migrate to Androidx de la barre de menu. enter image description here

Auparavant, je procédais comme suit.
Avec Clean and build et Rebuild project Android studio n'a pas nettoyé les importations inutilisées comme les importations de Android.support.v7 donc je les ai tous supprimés manuellement de toutes les activités. Maintenant Android studio suggère AppCompatActivity à partir de la bonne bibliothèque androidx.appcompat.

J'espère que cela aidera quelqu'un.

5
Inzimam Tariq IT

vous devriez remplacer la classe cible.

par exemple.

import Android.support.v7.app.AppCompatActivity;

remplacer par:

import androidx.appcompat.app.AppCompatActivity;
16
iamcxl

Ajoutez les lignes ci-dessous dans vos propriétés de gradle:

Android.useAndroidX = true Android.enableJetifier = true

Cela mettra à niveau votre projet en Android X.

1
Mayuresh Deshmukh