react-native-image-picker 安装破坏了我的应用程序

react-native-image-picker installation breaks my app

第 1 步:npm 安装 react-native-image-picker
......应用程序仍在构建中......
第 2 步:react-native link react-native-image picker
...应用不再编译

当我清理 gradle 时出现错误: “无法将进程工作目录设置为 'C:\code\rn\xs\node_modules\react-native-image-picker\example\android':无法设置当前目录(错误号 3)

当我尝试在 gradle 中重建时,我也遇到错误: “清单合并失败:属性 application@appComponentFactory 值=(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"'.....
我现在在清理时仍然遇到同样的错误......但重建时的错误有点不同: “工具:替换在 line:10 处指定的属性 android:appComponentFactory,但未指定新值。


请帮忙!!

你的react-native版本使用了Androix库,但是你安装的react-native-image-picker使用了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;

作为 Lenoarod 答案的补充,您可以使用 jetifier library。它将帮助您转换所有尚未转换为 AndroidX 的库。

根据它的文档

So now you need to convert your app to AndroidX, but many of your react-native libraries ship native Java code and have not updated. How is this done?

First, use Android Studio's refactoring tool to convert your app re: the Android developer docs
1. npm install --save-dev jetifier
2. npx jetify
3. npx react-native run-android (your app should correctly compile and work)
4. Call npx jetify run in the postinstall target of your package.json (Any time your dependencies update you have to jetify again)

谢谢两位。 lzzuddiin 的答案是最接近的....我需要做的就是从菜单栏中 "Refactor > Migrate to AndroidX";仅此一项就解决了问题