先unlink再uninstall
1,当你出现这样的报错:缺少***组件的路径,说明之前你可能干了一件蠢事,安装了组件之后并且link了,但是后面不需要这个组件了,(比如react-native-push-notification这个组件好像和react-native-marquee-ab两者不能共存的样子,,,反正安了push再安ab会报错,说已经有push了什么鬼,所以就卸载了push),所以你想卸载它但是直接uninstall了
2,然后你直接npm uninstall ×××,然后这个时候你再次reload是没有问题的(因为只是reload,并没有重新下载依赖包社么的)。
3,然后你接下来准备 react-native run-android,惨了,报错了:说缺少push-notification的路径
4,然后你又重新npm install react-native-push-notification,结果又报错(说重复引用第三方包):
Manifest merger failed : Attribute application@appComponentFactory value=(android.support.v4.app.CoreComponentFactory) from [com.android.support:support-compat:28.0.0] AndroidManifest.xml:22:18-91 is also present at [androidx.core:core:1.0.0] AndroidManifest.xml:22:18-86 value=(androidx.core.app.CoreComponentFactory).
Suggestion: add 'tools:replace="android:appComponentFactory"' to <application> element at AndroidManifest.xml:7:5-117 to override.
就是说建议添加tools:replace="android:appComponentFactory在AndroidManifest.xml:7:5-117中,以覆盖。
5,然后你往提示的路径文件中添加 tools:replace="android:appComponentFactory",这个时候会报错说:Manifest merger failed with multiple errors, see logs。(你的tools没有基于定义吧)然后你把它改成这样:
android:appComponentFactory=""
tools:replace="android:appComponentFactory"
6,结果还是报错:
Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
> com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives:
7,也没啥路子可整了,这个时候突然想起来,是不是我的组件卸载的不到位,毕竟一开始就是因为组件依赖包不对。
8,这篇文章:点击 告诉我,原来卸载组件和安装流程是轴对称的:
安装的时候npm install,然后react-native link。卸载的时候react-native unlink,然后才uninstall。
9,正常情况下自动删除干净了,如果还有问题,自己手动删除吧
10,下面补充一下步骤9中,手动删除出现的几个常见文件的含义作用: