J'ai la classe suivante
import com.Android.annotations.NonNullByDefault;
@NonNullByDefault
public final class Log {
...
}
et voici mon fichier build.gradle (certaines parties omises)
apply plugin: 'com.Android.application'
Android {
compileSdkVersion 25
buildToolsVersion '24.0.1'
defaultConfig {
minSdkVersion 16
targetSdkVersion 25
versionCode 2
versionName "0.2"
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
}
dependencies {
compile 'com.Android.support:appcompat-v7:25.0.0'
compile 'com.Android.support:support-annotations:25.0.0'
compile 'com.Android.support:design:25.0.0'
}
Dans Android Studio, aucun avertissement n'est émis pour ma classe
Cependant, lorsque j'essaie de créer et d'exécuter mon application, j'obtiens cette erreur de gradle
Information:Gradle tasks [:app:clean, :app:generateDebugSources, :app:generateDebugAndroidTestSources, :app:mockableAndroidJar, :app:prepareDebugUnitTestDependencies, :app:assembleDebug]
Warning:[options] bootstrap class path not set in conjunction with -source 1.7
/home/puter/git-repos/TaskManager3/app/src/main/Java/com/treemetrics/taskmanager3/util/Log.Java
Error:(3, 31) error: package com.Android.annotations does not exist
Error:(7, 2) error: cannot find symbol class NonNullByDefault
Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
> Compilation failed; see the compiler error output for details.
Information:BUILD FAILED
Information:Total time: 21.021 secs
Information:3 errors
Information:1 warning
Information:See complete output in console
Pour résoudre automatiquement tous les problèmes de Android pour androidx pour React Native, (Prerequisite npx)
Ajoutez les deux indicateurs suivants à true dans votre fichier gradle.properties dans ProjectFolder/Android/gradle.properties
Android.useAndroidX=true
Android.enableJetifier=true
Execute
npm install --save-dev jetifier
npx jetify
npx react-native run-Android
Dans votre package.json, ajoutez ce qui suit aux scripts
"postinstall" : "npx jetify"
Plus d'informations sur https: //github.com/mikehardy/jetifier
Mise à jour: Ceci est maintenant intégré en réactif 0.60 natif. Si vous migrez vers la version 0.60 native de React, vous n'aurez pas besoin de cette étape. - https: //facebook.github.io/react-native/blog/2019/07/03/version-60#androidx-support
Utiliser l'implémentation androidx.appcompat:appcompat:1.0.2
gradle puis
changement import Android.support.annotation.Nullable;
à import androidx.annotation.NonNull;
dans les classes importations
Ouvert gradle.properties
et utilisez le code suivant:
Android.useAndroidX=false
Android.enableJetifier=false
ou U peut également utiliser ces dépendances:
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.annotation:annotation:1.0.2'
J'ai rencontré des problèmes similaires lors de la migration vers androidx.
Si en ajoutant les deux lignes ci-dessous à gradle.properties n'a pas résolu le problème
Android.useAndroidX=true
Android.enableJetifier=true
Puis essayez
Si vous rencontrez toujours des problèmes de migration, essayez manuellement de remplacer les bibliothèques à l'origine du problème.
Par exemple
Si vous rencontrez un problème avec Android.support.annotation.NonNull
changez-le en androidx.annotation.NonNull
comme indiqué dans le tableau de mappages de classes ci-dessous.
Dans mon cas, j'ai dû utiliser
import androidx.annotation...
au lieu de
import Android.annotation...
J'ai migré vers AndroidX et j'ai oublié de changer cela.
Vous pouvez trouver ici le javadoc officiel du support-annotations
bibliothèque.
Erreur: (3, 31) erreur: le package com.Android.annotations n'existe pas
Comme vous pouvez le voir, toutes les classes sont dans le même package Android.support.annotation
et non com.Android.annotations
.
Erreur: (7, 2) erreur: impossible de trouver la classe de symboles NonNullByDefault
De plus, la classe NonNullByDefault
n'existe pas dans ce package.
J'ai rencontré des problèmes similaires lors de la migration vers androidx. ce problème est dû à la dépendance de la bibliothèque Old Butter Knife.
si vous utilisez un couteau à beurre, vous devez utiliser au moins la version 9.0.0-SNAPSHOT de couteau à beurre ou supérieure.
implementation 'com.jakewharton:butterknife:9.0.0-SNAPSHOT' annotationProcessor 'com.jakewharton:butterknife-compiler:9.0.0-SNAPSHOT'
Les annotations proviennent du support's library
qui sont emballés dans Android.support.annotation
.
Comme autre option, vous pouvez utiliser @NonNull
annotation qui indique qu'une valeur de retour de paramètre, de champ ou de méthode ne peut jamais être nulle.
Il est importé de import Android.support.annotation.NonNull;
Vous ne devez éditer aucun code manuellement jetify devrait faire ce travail pour vous, si vous exécutez/construisez à partir de cli en utilisant react-native
vous n'avez pas besoin de faire quoi que ce soit, mais si vous exécutez/construisez Andriod studio, vous devez exécuter jetify en tant que pré-build, voici comment vous automatisez ceci:
1- Dans le menu ci-dessus, allez dans éditer les configurations:
2- Ajoutez le bas de l'écran que vous trouverez avant le lancement cliquez sur le plus et choisissez Exécuter l'outil externe
2- Remplissez les informations suivantes, notez que le répertoire de travail est le répertoire racine de votre projet (pas le répertoire Android):
3- Assurez-vous que cela fonctionne avant toute autre chose, à la fin, votre configuration devrait ressembler à ceci:
Tout ce que vous devez faire est de remplacer "import Android.support.annotation.Nullable" dans les importations de classe par "import androidx.annotation.Nullable;"
C'est une pratique courante ... chaque fois que n'importe quel problème d'importation donne ... supprimez cette importation et appuyez simplement sur Alt + Entrée sur la classe associée .. qui vous donnera l'option pour 'importer la classe' .. indice Entrée et les choses seront résolues .. .
en cas d'erreur du fichier généré automatiquement par butterknife, mettez à jour la version de dépendance de butterknife
implementation 'com.jakewharton:butterknife:10.0.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.0.0'
Pour moi, c'était une ancienne version de npm
.
Courir npm install npm@latest -g
puis npm install