reactnativecn / react-native-website

React Native 中文网
https://reactnative.cn
MIT License
218 stars 328 forks source link

newArchEnabled 新架构只能依赖 RN 源码编译吗? #603

Closed CD3108 closed 2 years ago

CD3108 commented 2 years ago

newArchEnabled 新架构只能依赖 RN 源码编译吗?

sunnylqm commented 2 years ago

有个开关,目前中文文档还没更新,我周末看有空的话更一下

CD3108 commented 2 years ago

有个开关,目前中文文档还没更新,我周末看有空的话更一下

大佬好,感谢回复。那个文档已经看过。我在 Demo 中把那个开关打开了, Demo 启用了 Fabric。但是我项目是用的 ReactAndroid 打包成的 aar。我就在 demo 中尝试剥离 RN 源码相关的依赖,于是我就仅注释掉此处代码,结果再跑起来就报错。

if (isNewArchitectureEnabled()) { // If new architecture is enabled, we let you build RN from source // Otherwise we fallback to a prebuilt .aar bundled in the NPM package. // This will be applied to all the imported transtitive dependency. configurations.all { resolutionStrategy.dependencySubstitution { substitute(module("com.facebook.react:react-native")) .using(project(":ReactAndroid")).because("On New Architecture we're building React Native from source") } } }

报错信息如下,其中 awesomeproject_appmodules_aaaaaaaaaaaa 为便于查找所修改 android.mk 文件的 so 名

2022-06-11 14:20:27.163 12469-12546/com.awesomeproject E/SoLoader: couldn't find DSO to load: libawesomeproject_appmodules_aaaaaaaaaaaa.so caused by: dlopen failed: cannot locate symbol "_ZTVN8facebook5react22DebugStringConvertibleE" referenced by "/data/app/~~p-94nRA8z8z6osbq2G5kjw==/com.awesomeproject-nXJWSmTGEw-9Ups25t-W-w==/lib/arm64/libawesomeproject_appmodules_aaaaaaaaaaaa.so"... result: 0 2022-06-11 14:20:27.165 12469-12546/com.awesomeproject E/AndroidRuntime: FATAL EXCEPTION: create_react_context Process: com.awesomeproject, PID: 12469 java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libawesomeproject_appmodules_aaaaaaaaaaaa.so caused by: dlopen failed: cannot locate symbol "_ZTVN8facebook5react22DebugStringConvertibleE" referenced by "/data/app/~~p-94nRA8z8z6osbq2G5kjw==/com.awesomeproject-nXJWSmTGEw-9Ups25t-W-w==/lib/arm64/libawesomeproject_appmodules_aaaaaaaaaaaa.so"... result: 0 at com.facebook.soloader.SoLoader.doLoadLibraryBySoName(SoLoader.java:1098) at com.facebook.soloader.SoLoader.loadLibraryBySoNameImpl(SoLoader.java:914) at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:826) at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:773) at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:743) at com.awesomeproject.newarchitecture.modules.MainApplicationTurboModuleManagerDelegate.maybeLoadOtherSoLibraries(MainApplicationTurboModuleManagerDelegate.java:44) at com.facebook.react.turbomodule.core.TurboModuleManagerDelegate.(TurboModuleManagerDelegate.java:29) at com.facebook.react.ReactPackageTurboModuleManagerDelegate.(ReactPackageTurboModuleManagerDelegate.java:32) at com.awesomeproject.newarchitecture.modules.MainApplicationTurboModuleManagerDelegate.(MainApplicationTurboModuleManagerDelegate.java:25) at com.awesomeproject.newarchitecture.modules.MainApplicationTurboModuleManagerDelegate$Builder.build(MainApplicationTurboModuleManagerDelegate.java:35) at com.awesomeproject.newarchitecture.modules.MainApplicationTurboModuleManagerDelegate$Builder.build(MainApplicationTurboModuleManagerDelegate.java:32) at com.facebook.react.ReactPackageTurboModuleManagerDelegate$Builder.build(ReactPackageTurboModuleManagerDelegate.java:146) at com.facebook.react.ReactInstanceManager.createReactContext(ReactInstanceManager.java:1369) at com.facebook.react.ReactInstanceManager.access$1200(ReactInstanceManager.java:138) at com.facebook.react.ReactInstanceManager$5.run(ReactInstanceManager.java:1111) at java.lang.Thread.run(Thread.java:920) Caused by: java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "_ZTVN8facebook5react22DebugStringConvertibleE" referenced by "/data/app/~~p-94nRA8z8z6osbq2G5kjw==/com.awesomeproject-nXJWSmTGEw-9Ups25t-W-w==/lib/arm64/libawesomeproject_appmodules_aaaaaaaaaaaa.so"... at java.lang.Runtime.load0(Runtime.java:929) at java.lang.System.load(System.java:1620) at com.facebook.soloader.SoLoader$1.load(SoLoader.java:529) at com.facebook.soloader.DirectorySoSource.loadLibraryFrom(DirectorySoSource.java:110) at com.facebook.soloader.DirectorySoSource.loadLibrary(DirectorySoSource.java:63) at com.facebook.soloader.ApplicationSoSource.loadLibrary(ApplicationSoSource.java:91) at com.facebook.soloader.SoLoader.doLoadLibraryBySoName(SoLoader.java:1038) at com.facebook.soloader.SoLoader.loadLibraryBySoNameImpl(SoLoader.java:914)  at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:826)  at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:773)  at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:743)  at com.awesomeproject.newarchitecture.modules.MainApplicationTurboModuleManagerDelegate.maybeLoadOtherSoLibraries(MainApplicationTurboModuleManagerDelegate.java:44)  at com.facebook.react.turbomodule.core.TurboModuleManagerDelegate.(TurboModuleManagerDelegate.java:29)  at com.facebook.react.ReactPackageTurboModuleManagerDelegate.(ReactPackageTurboModuleManagerDelegate.java:32)  at com.awesomeproject.newarchitecture.modules.MainApplicationTurboModuleManagerDelegate.(MainApplicationTurboModuleManagerDelegate.java:25)  at com.awesomeproject.newarchitecture.modules.MainApplicationTurboModuleManagerDelegate$Builder.build(MainApplicationTurboModuleManagerDelegate.java:35)  at com.awesomeproject.newarchitecture.modules.MainApplicationTurboModuleManagerDelegate$Builder.build(MainApplicationTurboModuleManagerDelegate.java:32)  at com.facebook.react.ReactPackageTurboModuleManagerDelegate$Builder.build(ReactPackageTurboModuleManagerDelegate.java:146)  at com.facebook.react.ReactInstanceManager.createReactContext(ReactInstanceManager.java:1369)  at com.facebook.react.ReactInstanceManager.access$1200(ReactInstanceManager.java:138)  at com.facebook.react.ReactInstanceManager$5.run(ReactInstanceManager.java:1111)  at java.lang.Thread.run(Thread.java:920)  2022-06-11 14:20:27.168 12469-12546/com.awesomeproject D/OOMEventManagerFK: checkEventAndDumpForJE: 0 2022-06-11 14:20:27.185 12469-12546/? I/Process: Sending signal. PID: 12469 SIG: 9

所期望的效果是, Fabric 可以像 aar 一样,直接引用,项目中稍做设置即可开启新架构,无需依赖其他 RN 相关源码编译。 不知道能否做到 盼复

sunnylqm commented 2 years ago

按我的理解应该是不能

CD3108 commented 2 years ago

按我的理解应该是不能

我又搞了搞,确实找不到办法。有哪个大佬找到解决办法踢我一脚,谢谢