web-dev-qa-db-fra.com

réagir erreur de construction native: le package Android.support.annotation n'existe pas

J'ai dû réécrire complètement la question.

J'ai une application native native Android. Lorsque j'ai créé le fichier apk avec ./gradlew assembleRelease -x bundleReleaseJsAndAssets, cela s'est bien passé, mais après cela, il a cessé de compiler du tout. Même react-native run-Android ne fonctionne plus.

Ce que j'ai trouvé jusqu'à présent: premièrement, l'erreur est la suivante

Task :app:processDebugResources FAILED
resource Android:attr/fontVariationSettings not found.
resource Android:attr/ttcIndex not found.

Si j'ajoute ces lignes à gradle.properties,

Android.useAndroidX=true
Android.enableJetifier=true

l'erreur change. Maintenant c'est ça

Task :@JWWon_react-native-universal-pedometer:compileDebugJavaWithJavac FAILED

error: package Android.support.annotation does not exist
import Android.support.annotation.Nullable;
                                 ^
cannot find symbol
  private void sendPedometerUpdateEvent(@Nullable WritableMap params) {
                                         ^
  symbol:   class Nullable
  location: class BMDPedometerModule

Le problème n'est cependant pas avec la bibliothèque. Si je le supprime du projet, il commence à se plaindre d'un autre. Pour le compiler, je dois supprimer 7 bibliothèques. Un exemple:

Task :@react-native-community_netinfo:compileDebugJavaWithJavac FAILED
error: package Android.support.v4.net does not exist
import Android.support.v4.net.ConnectivityManagerCompat;
error: cannot find symbol
    promise.resolve(ConnectivityManagerCompat.isActiveNetworkMetered(getConnectivityManager()));
                    ^
  symbol:   variable ConnectivityManagerCompat
  location: class ConnectivityReceiver
2 errors

alors si j'en supprime un autre, cela se produit:

Task :react-native-camera-kit:compileDebugJavaWithJavac FAILED
package Android.support.annotation does not exist
import Android.support.annotation.ColorInt;
                                 ^
package Android.support.annotation does not exist
import Android.support.annotation.IntRange;
                                 ^
...
92 errors

Il sera donc compilé si je supprime 7 bibliothèques du projet. Elles sont:

react-native-camera-kit @react-native-community_netinfo react-native-Push-notification react-native-sensors @JWWon_react-native-universal-pedometer react-native-keep-awake react-native-toast-native

Sans eux, il se compile parfaitement. Il y a donc un problème plus important qui ne le laisse pas fonctionner. Il y a 2 jours, toutes ces bibliothèques fonctionnaient parfaitement sans problème. Mais maintenant, quelque chose l'écrase.

10
irondsd
allprojects {
  repositories {
      bla bla bla...
  }
  subprojects {
    project.configurations.all {
        resolutionStrategy.eachDependency { details ->
            if (details.requested.group == 'com.Android.support'
                    && !details.requested.name.contains('multidex') ) {
                details.useVersion "26.+"
            }
            if (details.requested.group == 'com.google.Android.gms'
            && !details.requested.name.contains('multidex') && !details.requested.name.contains('play-services-stats')) {
                details.useVersion "12.+"
            }
            if (details.requested.group == 'com.google.Android.gms'
            && !details.requested.name.contains('multidex') && details.requested.name.contains('play-services-stats')) {
                details.useVersion "+"
            }
        }
    }
}

ajouter des sous-projets dans build.gradle (Android)

dependencies {
     ...bla bla bla

    implementation "com.google.Android.gms:play-services-gcm:12.+"
}

ajoutez l'implémentation "com.google.Android.gms: play-services-gcm: 12. +" dans build.gradle (Android/app)

vous n'avez donc pas besoin de migrer vers Androidx

modifier: format de code

7

Essayez avec jetifier

npm install --save-dev jetifier
Ou utilisez du fil, mais installez-le localement dans votre projet, pas globalement

npx jetify
ou
npx jetify -w=1 - pour spécifier le nombre de travailleurs parallèles

npx react-native run-Android

27
bằng đoàn

En fait, quelque chose de très similaire s'est produit et cela a fonctionné

npx jetify

Lorsque je l'ai parcouru dans le pipeline CI, cela n'a pas fonctionné et j'ai dû ajouter

"scripts": {
 ...
    "postinstall": "jetify"
}

Après que npm exécute l'installation dans le pipeline, il exécute ensuite jetify pour convertir en androidx et couvre toutes les bibliothèques qui doivent être converties.

10
Kamil Saykali

essayez d'utiliser androidx

// build.gradle 
implementation "androidx.annotation:annotation:1.1.0"

// where use it
import androidx.annotation.Nullable;

METTRE À JOUR:

si d'autres erreurs de bibliothèques, vous pouvez peut-être essayer jetifier , je le sais par cette question utile .

la référence complète est ci-dessous, espérons utile:)

// Android/build.gradle
ext {
    buildToolsVersion = "28.0.3"
    minSdkVersion = 24
    compileSdkVersion = 28
    targetSdkVersion = 28
    supportLibVersion = "1.0.0-beta01"
}

// app/build.gradle
dependencies {
    implementation fileTree(dir: "libs", include: ["*.jar"])
    implementation "androidx.core:core:1.0.2"
    implementation "androidx.annotation:annotation:1.1.0"
    implementation "androidx.appcompat:appcompat:${rootProject.ext.supportLibVersion}"
    implementation "com.facebook.react:react-native:0.59.9"  // From node_modules
}

par ailleurs, je rencontre ce problème (AndroidX) pendant quelques jours, enfin, le résoudre par la mise à jour [email protected], utilisez le dernier paramètre Android et le jetificateur magique .

6
tokinonagare