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.
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
Essayez avec jetifier
npm install --save-dev jetifier
Ou utilisez du fil, mais installez-le localement dans votre projet, pas globalement
npx jetify
ounpx jetify -w=1
- pour spécifier le nombre de travailleurs parallèles
npx react-native run-Android
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.
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 .