Не работает autolinking библиотек в react-native
В React-Native приложении не работает автоматическая линковка(autolinking) устанавливаемых библиотек, которые используют нативные api, например, @react-native-clipboard/clipboard. Линковка должна работать так как используемая версия React-Native 0.70.5.
Я пробовал удалить папку node_modules
, убрать все ручные линкинги из нативных файлов, а далее запустил команду yarn
, после этого запустил в папке android команду ./gradlew clean
.
После описанных выше действий build происходит, но при открытии приложения оно крашится, в консоли ничего нет, открываю заново, опять крашится.
Зависимости в package.json:
"dependencies": {
"@react-native-async-storage/async-storage": "^1.17.10",
"@react-native-clipboard/clipboard": "^1.11.2",
"@react-native-community/geolocation": "^3.0.4",
"@react-navigation/drawer": "^6.6.2",
"@react-navigation/native": "^6.1.6",
"@redux-devtools/extension": "^3.2.5",
"axios": "^0.27.2",
"centrifuge": "^3.1.0",
"date-fns": "^2.29.3",
"date-fns-tz": "^1.3.7",
"lodash.isequal": "^4.5.0",
"metro-config": "^0.73.4",
"prettier": "^2.8.1",
"react": "18.1.0",
"react-native": "0.70.5",
"react-native-android-open-settings": "^1.3.0",
"react-native-biometrics": "^2.2.0",
"react-native-config": "^1.5.0",
"react-native-gesture-handler": "2.8.0",
"react-native-maps": "^0.31.0",
"react-native-outside-press": "^1.1.0",
"react-native-paper": "^5.1.0",
"react-native-permissions": "^3.3.1",
"react-native-reanimated": "^2.0.0",
"react-native-safe-area-context": "^4.5.3",
"react-native-screens": "^3.20.0",
"react-native-svg": "^12.3.0",
"react-native-table-component": "^1.2.2",
"react-native-touch-id": "^4.4.1",
"react-native-vector-icons": "^9.2.0",
"react-native-webview": "^11.23.1",
"react-native-yamap": "^4.1.14",
"react-redux": "^7.2.2",
"redux": "^4.2.0",
"redux-persist": "^6.0.0",
"redux-saga": "^1.1.3"
},
"devDependencies": {
"@babel/core": "^7.17.9",
"@babel/runtime": "^7.17.9",
"@react-native-community/eslint-config": "^3.2.0",
"@tsconfig/react-native": "^2.0.3",
"@types/jest": "^29.2.4",
"@types/lodash.isequal": "^4.5.6",
"@types/react": "^18.0.26",
"@types/react-native": "^0.70.8",
"@types/react-native-table-component": "^1.2.4",
"@types/react-native-vector-icons": "^6.4.13",
"@types/react-redux": "^7.1.25",
"@types/react-test-renderer": "^18.0.0",
"babel-jest": "^28.0.0",
"babel-plugin-import-glob": "^2.0.0",
"cross-env": "^7.0.3",
"eslint": "^8.14.0",
"jest": "^28.0.0",
"metro-react-native-babel-preset": "0.72.3",
"react-native-svg-transformer": "^1.0.0",
"react-test-renderer": "18.1.0",
"typescript": "^4.9.4"
},
Из app/build.gradle
я удалил следующее:
implementation project(':react-native-config')
implementation project(':@react-native-community-clipboard')
implementation project(':react-native-reanimated')
Из MainApplication.java
:
import com.th3rdwave.safeareacontext.SafeAreaContextPackage;
import com.swmansion.rnscreens.RNScreensPackage;
import com.swmansion.gesturehandler.RNGestureHandlerPackage;
import com.reactnativecommunity.asyncstorage.AsyncStoragePackage;
import com.rnfingerprint.FingerprintAuthPackage;
import ru.vvdev.yamap.RNYamapPackage;
// пропущено некоторое количество кода
new FingerprintAuthPackage(),
new RNYamapPackage(),
new SvgPackage(),
new ClipboardPackage(),
new ReanimatedPackage()
Из android/settings.gradle
:
include ':react-native-reanimated'
project(':react-native-reanimated').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-reanimated/android')
Если кратко, если оставить код выше в нативных файлах, то сборка происходит успешно, приложение работает ожидаемо. Если убрать ручной линкинг, то сборка также происходит успешно, но приложение при запуске крашится.