Je travaille sur un projet natif réactif.
Après avoir mis à jour mes modules en exécutant "npm install",
Je ne trouve pas la classe 'Pools' située dans 'Android.support.v4.util' dans 'react-native-gesture-handler'.
1. erreur (dans le cas où exécuter "react-native run-Android") -cmd
Task :react-native-gesture-handler:compileDebugJavaWithJavac FAILED
D:\weneepl\project_y-test2_t\project_y\node_modules\react-native-gesture-handler\Android\src\main\Java\com\swmansion\gesturehandler\react\RNGestureHandlerEvent.Java:3: error: cannot find symbol
import Android.support.v4.util.Pools;
^
symbol: class Pools
location: package Android.support.v4.util
D:\weneepl\project_y-test2_t\project_y\node_modules\react-native-gesture-handler\Android\src\main\Java\com\swmansion\gesturehandler\react\RNGestureHandlerEvent.Java:19: error: package Pools does not exist
private static final Pools.SynchronizedPool<RNGestureHandlerEvent> EVENTS_POOL =
^
D:\weneepl\project_y-test2_t\project_y\node_modules\react-native-gesture-handler\Android\src\main\Java\com\swmansion\gesturehandler\react\RNGestureHandlerStateChangeEvent.Java:3: error: cannot find symbol
import Android.support.v4.util.Pools;
^
symbol: class Pools
location: package Android.support.v4.util
D:\weneepl\project_y-test2_t\project_y\node_modules\react-native-gesture-handler\Android\src\main\Java\com\swmansion\gesturehandler\react\RNGestureHandlerStateChangeEvent.Java:18: error: package Pools does not exist
private static final Pools.SynchronizedPool<RNGestureHandlerStateChangeEvent> EVENTS_POOL =
^
D:\weneepl\project_y-test2_t\project_y\node_modules\react-native-gesture-handler\Android\src\main\Java\com\swmansion\gesturehandler\react\RNGestureHandlerEvent.Java:20: error: package Pools does not exist
new Pools.SynchronizedPool<>(TOUCH_EVENTS_POOL_SIZE);
^
D:\weneepl\project_y-test2_t\project_y\node_modules\react-native-gesture-handler\Android\src\main\Java\com\swmansion\gesturehandler\react\RNGestureHandlerStateChangeEvent.Java:19: error: package Pools does not exist
new Pools.SynchronizedPool<>(TOUCH_EVENTS_POOL_SIZE);
^
Note:D:\weneepl\project_y-test2_t\project_y\node_modules\react-native-gesture-handler\Android\src\main\Java\com\swmansion\gesturehandler\react\RNGestureHandlerButtonViewManager.Java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
6 errors
2. Réaction des informations sur l'environnement natif:
System:
OS: Windows 10
CPU: (4) x64 Intel(R) Core(TM) i5-7500 CPU @ 3.40GHz
Memory: 7.59 GB / 15.96 GB
Binaries:
Yarn: 1.15.2 - C:\Program Files (x86)\Yarn\bin\yarn.CMD
npm: 6.9.0 - C:\Program Files\nodejs\npm.CMD
IDEs:
Android Studio: Version 3.4.0.0 AI-183.5429.30.34.5452501
3.package.json
{
"name": "project_y",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "react-native run-Android",
"gradle-clean": "cd Android & gradlew clean",
"start-root": "react-native run-Android --root",
"test": "jest",
"bundle": "react-native bundle --platform Android --dev false --entry-file
index.js --bundle-output Android/app/src/main/assets/index.Android.bundle --assets-dest Android/app/src/main/res/",
"build": "cd Android & gradlew assembleDebug"
},
"dependencies": {
"axios": "^0.18.0",
"moment": "^2.24.0",
"prop-types": "^15.7.2",
"react": "16.6.3",
"react-native": "0.58.5",
"react-native-Android-open-settings": "^1.3.0",
"react-native-custom-checkbox": "^1.5.2",
"react-native-gesture-handler": "^1.0.16",
"react-native-grid-list": "^1.0.9",
"react-native-image-resizer": "^1.0.1",
"react-native-kakao-logins": "^1.3.6",
"react-native-linear-gradient": "^2.5.3",
"react-native-picker-select": "^6.0.0",
"react-native-shadow": "^1.2.2",
"react-native-super-grid": "^3.0.3",
"react-native-svg": "^9.2.4",
"react-native-vector-icons": "^6.3.0",
"react-native-webview": "^5.5.0",
"react-navigation": "^3.3.2",
"react-redux": "^6.0.1",
"redux": "^4.0.1"
},
"devDependencies": {
"babel-core": "7.0.0-bridge.0",
"babel-jest": "24.1.0",
"jest": "24.1.0",
"metro-react-native-babel-preset": "0.52.0",
"react-test-renderer": "16.6.3",
"redux-devtools": "^3.5.0"
},
"jest": {
"preset": "react-native"
},
"rnpm": {
"assets": [
"./assets/fonts/",
"resources/fonts"
]
}
}
4. build.gradle (app /)
apply plugin: "com.Android.application"
import com.Android.build.OutputFile
project.ext.react = [
entryFile: "index.js"
]
apply from: "../../node_modules/react-native/react.gradle"
def enableSeparateBuildPerCPUArchitecture = false
def enableProguardInReleaseBuilds = false
Android {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
defaultConfig {
applicationId "com.projecty.projecty"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 10
versionName "1.9"
}
splits {
abi {
reset()
enable enableSeparateBuildPerCPUArchitecture
universalApk false // If true, also generate a universal APK
include "armeabi-v7a", "x86", "arm64-v8a"
}
}
buildTypes {
release {
minifyEnabled enableProguardInReleaseBuilds
proguardFiles getDefaultProguardFile("proguard-Android.txt"), "proguard-rules.pro"
}
}
applicationVariants.all { variant ->
variant.outputs.each { output ->
def versionCodes = ["armeabi-v7a":1, "x86":2, "arm64-v8a": 3]
def abi = output.getFilter(OutputFile.ABI)
if (abi != null) { // null for the universal-debug, universal-release variants
output.versionCodeOverride =
versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
}
}
}
}
dependencies {
implementation 'com.google.Android.gms:play-services-base:12.0.0'
implementation 'com.Android.installreferrer:installreferrer:1.0'
implementation 'com.igaworks.adbrix:abx-common-rm:+'
implementation project(':react-native-webview')
implementation project(':react-native-Android-open-settings')
implementation project(':react-native-kakao-logins')
implementation project(':react-native-svg')
implementation project(':react-native-linear-gradient')
implementation project(':react-native-vector-icons')
implementation project(':react-native-gesture-handler')
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation "com.Android.support:appcompat-
v7:${rootProject.ext.supportLibVersion}"
compile(name: 'IgawSSP_v2.0.6a', ext: 'aar')
repositories {
flatDir {
dirs 'libs'
}
}
implementation "com.facebook.react:react-native:+" // From node_modules
}
task copyDownloadableDepsToLibs(type: Copy) {
from configurations.compile
into 'libs'
}
subprojects {
repositories {
mavenCentral()
maven { url
'http://devrepo.kakao.com:8088/nexus/content/groups/public/' }
}
}
5. build.gradle (Android /)
buildscript {
ext {
buildToolsVersion = "28.0.2"
minSdkVersion = 16
compileSdkVersion = 28
targetSdkVersion = 28
supportLibVersion = "28.0.0"
}
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.Android.tools.build:gradle:3.3.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
mavenLocal()
google()
jcenter()
flatDir {
dirs 'libs'
}
maven {
url 'https://dl.bintray.com/igaworks/AdbrixRmSDK'
}
maven {
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
url "$rootDir/../node_modules/react-native/Android"
}
mavenCentral()
maven {
url 'http://devrepo.kakao.com:8088/nexus/content/groups/public/'
}
}
}
task wrapper(type: Wrapper) {
gradleVersion = '4.7'
distributionUrl = distributionUrl.replace("bin", "all")
}
J'attends la fin du projet de construction.
J'avais ce même problème avec React Native 0.60.0 et aucune des réponses ci-dessus ne m'a donné de solution, j'ai donc résolu ce problème:
npm i jetifier
npx jetify
jetifier est un outil de transition AndroidX au format npm, avec un style compatible avec natif réactif.
Si vous utilisez React modules natifs avec un code Java code non converti en AndroidX et que votre application est AndroidX, vous en aurez probablement besoin)
donc, dans RN 0.60, vous avez besoin d'AndroidX
Ouverture du projet dans Android studio -> accédez au fichier spécifié dans RNGestureHandler
enlève ça
import Android.support.v4.util.Pools;
Et ajoutez ceci
import androidx.core.util.Pools;
Une chose similaire m'est arrivée. J'ai vérifié Android sur https://developer.Android.com/reference/Android/support/v4/util/Pools
Allez sur Android/build.gradle
classpath "com.Android.support:support-compat:28.0.0-alpha1"
C'est la première fois que j'écris une réponse sur un débordement de pile, j'espère que c'est dans un bon format de réponse.
Veuillez supprimer ces deux lignes de gradle.properties
Android.useAndroidX=true
Android.enableJetifier=true
J'étais également confronté au même problème. Assurez-vous simplement d'avoir mis à jour la version de react-native-gesture-handler
. Si vous le faites, cela devrait fonctionner. pour moi, cela a fonctionné de cette façon.
Rien ne fonctionnait pour moi mais cela a fonctionné.
Faire le enableJetifier=false
dans gradle.properties
Android.useAndroidX=true
Android.enableJetifier=false
Pour que cela fonctionne, il suffit de modifier Android>gradle.properties
fichier en ajoutant ces deux lignes:
Android.useAndroidX=true
Android.enableJetifier=true
Apportez des modifications dans gradle.properties
Android.useAndroidX=true
Android.enableJetifier=true
npm install --save-dev jetifier
ou
npm install jetifier
npx jetify
npx react-native run-Android
Appel npx jetify
s'exécute dans la cible postinstall de votre package.json (chaque fois que vos dépendances sont mises à jour, vous devez à nouveau jetify)