web-dev-qa-db-fra.com

Migration vers AndroidX

Eh bien, j'ai commencé une migration vers AndroidX à partir d'un projet d'un an (intact depuis lors) et j'ai des problèmes avec les ressources et la construction de Gradle. Je suis complètement perdu avec les nouveaux espaces de noms, j'ai changé certains d'entre eux, j'ai mis à niveau tout ce que AndroidStudio m'a dit, mais je ne reconnais toujours pas les choses sur mon projet. Je vais coller les deux notes ici et je mettrai l'erreur ci-dessous.

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {

    repositories {
        google()
        jcenter()
        mavenCentral()
    }
    dependencies {
        classpath 'com.Android.tools.build:gradle:3.2.1'


        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        mavenCentral()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

Module

apply plugin: 'com.Android.application'

Android {
    compileSdkVersion 28
    buildToolsVersion "28.0.3"
    defaultConfig {
        applicationId "com.example.usuario.tm"
        minSdkVersion 15
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test:runner:1.1.0-alpha3"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
        }
    }

    dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar'])
        androidTestImplementation('androidx.test.espresso:espresso-core:3.1.0-alpha3', {
            exclude group: 'com.Android.support', module: 'support-annotations'
        })
        implementation 'androidx.appcompat:appcompat:1.0.0'
        implementation 'com.Android.support.constraint:constraint-layout:1.1.3'
        implementation 'androidx.legacy:legacy-support-v4:1.0.0'
        implementation 'com.google.Android.material:material:1.0.0'
        implementation 'com.google.gms:google-services:4.1.0'
        implementation 'com.google.Android.gms:play-services-auth:16.0.1'
        testImplementation 'junit:junit:4.12'
    }
}

apply plugin: 'com.Android.application'
apply plugin: 'maven'

Erreur

Android resource linking failed
Output:  C:\Users\Xrless\Desktop\Programing\TN\TM\app\src\main\res\layout\activity_principal.xml:34: error: attribute Android:style not found.
error: failed linking file resources.

Command: C:\Users\Xrless\.gradle\caches\transforms-1\files-1.1\aapt2-3.2.1-4818971-windows.jar\cf456f090f0725907522fb6d2bec3322\aapt2-3.2.1-4818971-windows\aapt2.exe link -I\
        C:\Users\Xrless\AppData\Local\Android\Sdk\platforms\Android-28\Android.jar\
        --manifest\
        C:\Users\Xrless\Desktop\Programing\TN\TM\app\build\intermediates\merged_manifests\debug\processDebugManifest\merged\AndroidManifest.xml\
        -o\
        C:\Users\Xrless\Desktop\Programing\TN\TM\app\build\intermediates\processed_res\debug\processDebugResources\out\resources-debug.ap_\
        -R\
        @C:\Users\Xrless\Desktop\Programing\TN\TM\app\build\intermediates\incremental\processDebugResources\resources-list-for-resources-debug.ap_.txt\
        --auto-add-overlay\
        --Java\
        C:\Users\Xrless\Desktop\Programing\TN\TM\app\build\generated\not_namespaced_r_class_sources\debug\processDebugResources\r\
        --custom-package\
        com.example.usuario.tm\
        -0\
        apk\
        --output-text-symbols\
        C:\Users\Xrless\Desktop\Programing\TN\TM\app\build\intermediates\symbols\debug\R.txt\
        --no-version-vectors
Daemon:  AAPT2 aapt2-3.2.1-4818971-windows Daemon #0
6
Santiago Bozzi

Il y a une erreur dans votre activity_principal.xml. Essayer de changer:

Android: style

à

style

Vous devez également ajouter

Android.useAndroidX = true

dans votre fichier gradle.properties si vous souhaitez utiliser la bibliothèque androidX au lieu de la bibliothèque de support.

1
Sinan Ceylan

Dans Android Studio 3.2+, vous pouvez utiliser Refactor | Migrez vers AndroidX pour mettre à niveau un projet. Pour en savoir plus, allez ici .

1
werfar

J'ai passé une nuit entière à essayer de résoudre ce problème après la migration vers androidX. Voici les quelques choses que j'ai faites pour que cela fonctionne:

Dans gradle.property:

dex.force.jumbo=true
Android.useAndroidX=true
Android.enableJetifier=true
Android.enableD8=true
Android.enableR8.libraries = false
Android.enableR8 = false

Dans build.gradle:

defaultConfig {
    ...
    compileSdkVersion 28
    …
}
//Use JDK1.8 and make sure the same is well specified in your gradle file.
compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}
//Exclude Guava libraries
 ...
configurations {
    ...
    implementation.exclude group: 'com.google.guava'
}

//Make sure your firebase and google libraries are all updated
   ...
   implementation 'com.google.guava:guava:27.0.1-Android'
   ...

Après tout cela, peu de choses habituelles:

  • Assurez-vous de mettre à jour votre gradle vers la dernière version (3.4.2 à partir de maintenant)
  • l'action précédente nécessitera Android Studio version 3.4 et supérieure
  • Videz vos caches Gradle (utilisez cette commande si sur macOs rm -rf $HOME/.gradle/caches/)
  • Invalider les caches et redémarrer, ...
  • Le reste sera juste de changer quelques implémentations qui n'ont pas été refactorisées correctement.

Pensez que tout devrait être trouvé après cela. J'espère que cela vous fera gagner du temps.

0
Gomez NL

Bien que la réponse acceptée soit correcte. Mais pour aider d'autres gars, dans des projets complexes, nous avons trouvé ce type d'erreurs que nous devons corriger manuellement. J'ai écrit un article complet sur le sujet, en particulier les correctifs manuels. ltimate Guide to Migrate Android Project to AndroidX .

0
Asad Ali Choudhry

ouvrir le fichier gralde.properties ajouter sous la ligne

Android.useAndroidX = true

Projet de synchronisation

Cela fonctionne parfaitement.

0
sssvrock

Bien, j'ai changé les deux implémentations et ajouté l'androix = true au fichier de propriétés. La chose gradle de construction ne lance plus d'erreurs (je pense) Mais mes dispositions ne sont pas visibles sur la vue de conception

IMAGE DU PROBLÈME

enter image description here

Et ça:

IMAGE DU PROBLÈME 2

enter image description here

0
Santiago Bozzi
  1. implémentation androidx.appcompat: appcompat: 1.0.0-alpha1
  2. implémentation androidx.constraintlayout: constraintlayout: 1.1.2
0
initialise