Реактивная установка средства выбора изображений ломает мое приложение - PullRequest
0 голосов
/ 28 октября 2019

Шаг 1: установка npm-установки-native-image-picker
...... приложение все еще работает нормально ...
Шаг 2: Resact-native-link-native-image picker
... приложение больше не компилируется

Когда я очищаю gradle, я получаю сообщение об ошибке: " Не удалось установить рабочий каталог процесса в 'C: \ code \ rn \ xs \ node_modules \ реагировать-нативный-image-picker \ example \ android ': не удалось установить текущий каталог (errno 3)"

При попытке перестроить в Gradle я также получаю сообщение об ошибке:" Ошибка слияния манифеста: Атрибутapplication @ appComponentFactory value = (android.support.v4.app.CoreComponentFactory) из [com.android.support:support-compat:28.0.0] AndroidManifest.xml: 22: 18-91 также присутствует в [androidx.core:core: 1.0.0] AndroidManifest.xml: 22: 18-86 value = (androidx.core.app.CoreComponentFactory). Предложение: добавьте 'tools: replace = "android: appComponentFactory"' к элементу в AndroidManifest.xml: 6:5-117 для переопределения".

Поэтому я беру предложение об ошибке и добавляю 'tools: replace =" android: appComponentFactory "'к элементу приложения .....
Теперь я все еще получаю ту же ошибку при очистке ..... но ошибка при перестроении немного отличается:" tools: replace, указанный в строке: 10для атрибута android: appComponentFactory, но не указано новое значение."
.

Пожалуйста, помогите !!

Ответы [ 3 ]

3 голосов
/ 29 октября 2019

В качестве дополнения к ответу Леноарода, вы можете использовать библиотеку jetifier . Это поможет вам конвертировать всю библиотеку, которая не была конвертирована в AndroidX.

Согласно документации

Так что теперь вам нужно конвертировать ваше приложение в AndroidX, но многие из вашихРеактивные библиотеки поставляют нативный код Java и не обновляются. Как это сделать?

Во-первых, используйте инструмент рефакторинга Android Studio для преобразования вашего приложения: документы для разработчиков Android
1. npm install --save-dev jetifier
2. npx jetify
3. npx response-native run-android (ваше приложение должно правильно скомпилироваться и работать)
4. Вызвать npx jetify run в цели postinstall вашего package.json (Каждый раз, когда обновляются ваши зависимости, вы должны снова выпустить джитит)

1 голос
/ 28 октября 2019

в вашей реактивной версии используется библиотека Androix, но установленный вами реактивный сборщик реагирует на android.support.v4. Поэтому, когда вы строите проект, эта ошибка происходит. Есть два способа для этого решения, которые я предлагаю.
Единственное решение - вы обновляете свою react-native-image-picker версию. новая версия поддерживает библиотеку, поддерживаемую androix. Ниже приведено официальное руководство

To use this library you need to ensure you match up with the correct version of React Native you are using. the flowing is the [official guide][1].

p.s. React Native introduced AndroidX support in 0.60, which is a breaking change for most libraries (incl. this one) using native Android functionality.

Если вам нужно использовать старую версию, вы можете изменить файлы react-native-image-picker. например, ImagePickerModule, ImageConfig. они находятся в папке android / src / main

import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.annotation.StyleRes;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AlertDialog;
0 голосов
/ 29 октября 2019

Спасибо обоим. Ответ Лузуддина был самым близким .... все, что мне нужно было сделать, это «Refactor> Migrate to AndroidX» из строки меню;это само по себе решило проблему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...