Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 652|回复: 0

react-native项目无法运行的暴力解决方案

[复制链接]
  • TA的每日心情
    奋斗
    3 天前
  • 签到天数: 789 天

    [LV.10]以坛为家III

    2049

    主题

    2107

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    722638
    发表于 2021-7-8 20:34:29 | 显示全部楼层 |阅读模式

    当你在看到这篇博客的时候,可能正在为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成功地让项目跑起来了。

    注意事项

    • 某些第三方组件的配置文档可能并不适用最新的RN版本,比如现在RN已经不需要手动link了,并且MainApplication.java中的getPackages() 方法中不需要再手动添加包了。
    • ios可以使用cocoaPods来管理第三方组件,在ios/目录下运行pod install就可以安装第三方组件,cocoaPods需要 .podspec文件,年代比较久远的第三方组件可能没有这个文件,就需要自己手动加,
      示例:https://github.com/rt2zz/react-native-contacts/blob/master/react-native-contacts.podspec
    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-9-9 12:36 , Processed in 1.025443 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表