当你在看到这篇博客的时候,可能正在为RN无法运行而感到头疼。我还是很遗憾地想说,我并不能保证以下方法能够成功,毕竟这些只是我的经历。
方法1.排错
根据报错提示进行排错,适合偶然出现的小错误,是最直接的方法。 如果是接手别人遗留的无法运行的项目,那就看运气了,因为一个错误解决了,还有另一个错误等着你。 可以看一下我对某个项目的排错笔记,可能看起来挺乱的,毕竟当时是写给自己看的
------分割线:排错笔记-------
react-native run-android的报错信息不够详细时,可在android studio中build,并在android目录下运行gradlew [报错信息] --stacktrace (gradlew [报错信息] --stacktrace,例如报错:app:processDebugManifest FAILED就运行gradlew processDebugManifest --stacktrace,一般如此,但也不一定是这样,具体参照网上资料)查看详细记录,有时会给出操作意见。 参考:Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get m 参考:Manifest merger failed with multiple errors, see logs问题处理
1、:app:processDebugManifest FAILED 参考:react-native run-android Build failed报错(:app:processDebugManifest FAILED)
android目录下运行gradlew processDebugManifest --stacktrace ,看到给出了建议Suggestion: add 'tools:replace="android:appComponentFactory"' to application element at AndroidManifest.xml... 根据建议添加后报错误2
2、Error: tools:replace specified at line:14 for attribute android:appComponentFactory, but no new value specified E:\Android\Job\TestDemoProject\github\BaseApplication\BaseApplication\app\src\main\AndroidManifest.xml Error: Validation failed, exiting 参考:解决 导入三方时出现: appComponentFactory 错误 解决:
<application
tools:replace="android:appComponentFactory" //除了这行之外
android:appComponentFactory="任意字符" //还要加上这一行
3、:app:transformDexArchiveWithExternalLibsDexMergerForDebug
android studio中在android目录下运行gradlew transformDexArchiveWithExternalLibsDexMergerForDebug --stacktrace 查看详细报错。 参考:jar冲突 - app:transformDexArchiveWithExternalLibsDexMergerForDebug 参考:问题:com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex
4、:app:transformClassesWithMultidexlistForDebug Duplicate zip entry [97.jar:androidx/versionedparcelable/CustomVersionedParcelable.class] 参考资料
dependencies {
configurations {
all*.exclude group: 'androidx.core', module: 'core'
}
}
5、:app:transformResourcesWithMergeJavaResForDebug More than one file was found with OS independent path 'META-INF/***' 参考资料
android{
...
...
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
}
}
6、react-native run-android Could not read path...(常见) 参考资料 cd android && gradlew clean 或者删app目录下的build文件夹
7、Error type 3 Error: Activity class {com.aiworks/com.aiworks.MainActivity} does not exist.
--------分割线---------
以上是android调试,到最后问题7的时候项目其实已经build successful了,然而就报了这么一个错不给我跑,排错就这么失败了。
方法2.迁移
- 重新初始化一个RN项目,并确保能运行
- 在新项目中重新安装第三方组件和依赖
对于需要修改android或ios代码的第三方组件,最好是单独安装,安装并配置好后确保项目能够运行,若无法运行可先略过,先安装其他依赖。其他不需要额外配置的依赖,可直接写入package.json并npm install 或 yarn。
- 拷贝旧项目的js代码,进行最终调试。
我通过方法2成功地让项目跑起来了。
注意事项
|