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

时间:2019-10-27 23:52:17

标签: react-native react-native-android react-native-image-picker

第1步:npm安装react-native-image-picker
......应用仍然可以正常运行.....
步骤2:react-native链接react-native-图像选择器
...应用程序不再编译

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

当我尝试在gradle中重建时,我也会收到错误消息: “ 清单合并失败:[com.android.support:support-compat:28.0.0] AndroidManifest.xml:22:18-91的属性application @ appComponentFactory value =(android.support.v4.app.CoreComponentFactory)     也存在于[androidx.core:core:1.0.0] AndroidManifest.xml:22:18-86 value =(androidx.core.app.CoreComponentFactory)。     建议:在AndroidManifest.xml:6:5-117的元素上添加'tools:replace =“ android:appComponentFactory”'以覆盖“。

所以我建议错误消息,并将'tools:replace =“ android:appComponentFactory”'添加到应用程序元素........
我现在在清理时仍会收到相同的错误.....但是重建时的错误有所不同: “ tools:replace在属性android:appComponentFactory的第10行指定,但未指定新值。


请帮忙!

3 个答案:

答案 0 :(得分:3)

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

根据其文档

  

因此,现在您需要将应用程序转换为AndroidX,但是您的许多react-native库都附带了本机Java代码并且尚未更新。怎么做?

     

首先,使用Android Studio的重构工具将您的应用重新转换为:Android开发者文档
  1. npm install --save-dev jetifier
  2. npx jetify
  3. npx react-native run-android(您的应用程序应正确编译和运行)
  4.在package.json的postinstall目标中调用npx jetify run(每当依赖项更新时,您都必须再次进行jetify)

答案 1 :(得分:1)

您的react-native版本使用Androix库,但是您安装的react-native-image-picker使用android.support.v4。因此,当您构建项目时,就会发生该错误。我建议采用两种方法解决此问题。
一种解决方案是您更新react-native-image-picker版本。新版本支持androix支持的库。以下是official guide

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;

答案 2 :(得分:0)

都谢谢。 lzzuddiin的回答是最接近的。...我要做的只是菜单栏中的“ Refactor> Migrate to AndroidX”;单独解决了问题