React-native 0.65 (targetSdk=30) android build 由于 react-native-reanimated 而失败

Posted

技术标签:

【中文标题】React-native 0.65 (targetSdk=30) android build 由于 react-native-reanimated 而失败【英文标题】:React-native 0.65 (targetSdk=30) android build is failing because of react-native-reanimated 【发布时间】:2021-10-10 07:21:47 【问题描述】:

我已经将 react-native 从版本 0.64.1 升级到 0.65.0-rc.3,因为需要 targetSdk=30 从 8 月 21 日起将捆绑包发布到 Google Play。我正在使用 upgrade helper 升级字母到字母现在我得到了./gradlew bundleRelease 错误:

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:mergeReleaseAssets'.
> Could not resolve all files for configuration ':app:releaseRuntimeClasspath'.
   > Failed to transform react-native-reanimated-65-jsc.aar (project :react-native-reanimated) to match attributes artifactType=android-assets.
      > Execution failed for JetifyTransform: MyApp/node_modules/react-native-reanimated/android/react-native-reanimated-65-jsc.aar.
         > Transform's input file does not exist: MyApp/node_modules/react-native-reanimated/android/react-native-reanimated-65-jsc.aar. (See https://issuetracker.google.com/issues/158753935)

已经试过了:

删除 node_modules,重新安装 清理 gradle、项目、纱线缓存等... 试图显式喷射 升级安卓工作室 将 react-native-reanimated 升级到最新版本

由于没有稳定的 react-native 版本来满足 Google 的要求,他们花了几个小时感到沮丧。有什么想法让它发挥作用吗?

----- 编辑----

作为一种临时解决方法,只需更改项目级 gradle 文件中的版本即可:

ext 
  buildToolsVersion = "30.0.2"
  minSdkVersion = 21
  compileSdkVersion = 30
  targetSdkVersion = 30
  ndkVersion = "20.1.5948944"

【问题讨论】:

请分享您的错误日志 @AftabAmin 你可以在这篇文章中看到上面的日志。或者你的意思有什么不同? @matusalem 您能否在真实设备中测试您的解决方案? @olegario 当然,我已经将我的更新发布到了 Google Play Alpha 通道并且它正在工作。 我遇到了同样的错误,我只是按照文档docs.swmansion.com/react-native-reanimated/docs/fundamentals/… 【参考方案1】:

我刚刚升级到 RN 0.65 stable 并且在 Android 上遇到了同样的错误。我认为这是因为如果你想使用 react-native-reanimated 包 v2.0 升级有点早。他们可能还没有将 Android 升级到 RN 0.65。查看使用 RN Reanimated v. 2.0 的 RN 0.64-rc.1 早期升级者发生的类似问题:https://github.com/software-mansion/react-native-reanimated/issues/1486。我们需要等待 RN Reanimated 升级他们的库。

编辑:这里是 RN Reanimated incompatibility with RN 0.65 issue on Github 的链接:https://github.com/software-mansion/react-native-reanimated/issues/2290。

编辑 2:可以确认升级到 RN Reanimated v.2.3.0-alpha.2 解决了这个问题,并且 Android 构建成功使用 RN 0.65。

【讨论】:

感谢 github 问题链接,更新为 2.3.0-alpha.2 后,我的 android 构建现在成功,同时使用 react-native 0.65.0 请分享您的 podfile。我无法构建 ios iOS 立即为我构建了 RN 0.65。我正在使用标准 RN 模板 Podfile:github.com/facebook/react-native/blob/main/template/ios/Podfile.【参考方案2】:

请确保这些模块与您的 package.json 中的编写方式完全相同,否则它将失败。我在 react-native-reanimated 上看到了很多原生发射器错误。

"react": "17.0.2",
"react-native": "0.65",
"react-native-reanimated": "^2.3.0-alpha.2",

删除旧的 npm 模块。然后运行yarn install

我尝试使用 > yarn add react-native-reanimated@next 但构建失败。 我的最新版本在那个 package.json 上运行。我不太确定 IOS 版本。

我在 android 上的构建也成功地使用了这些依赖项。一路上我遇到了 npm 的问题,所以我切换到了 yarn。

我不知道为什么很多人都会出错,但我的即使使用 react native 的 rc3 也能正常工作。

"react-native": "0.65.0-rc.3",
"react-native-reanimated": "^2.3.0-alpha.2",

############################################## #################

> Task :app:installDebug
Installing APK 'app-debug.apk' on 'Redmi Note 8 Pro - 11' for app:debug
Installed on 1 device.

BUILD SUCCESSFUL in 1m 40s
133 actionable tasks: 110 executed, 23 up-to-date
info Connecting to the development server...
info Starting the app...
Starting: Intent  cmp=com.myapp/.MainActivity 

【讨论】:

您正在使用 reanimated 的 alpha 版本,其中包含对问题的修复。虽然它是一个 alpha 版本,所以大多数人都没有使用它。他们很可能仍在使用最新的稳定版(截至目前为 2.2)。 好吧,正如我最近尝试过的那样,Native Emitter 问题实际上仍然存在于 alpha 上。我暂时停止了 RN,然后回去做出反应,直到他们释放出稳定的 RN; :)【参考方案3】:

试试这个:

npm i react-native-reanimated@^1.13.2

【讨论】:

与之前的贡献者建议的那样升级到Reanimated v.2.3.0-alpha.2 有什么好处?【参考方案4】:

没有什么对我有用,所以我重新安装了较低版本的 RN,之前我使用的是 RN 0.65.1=>

npm install react-native@0.64.2

【讨论】:

【参考方案5】:

唯一与 react native v65 兼容的 reanimated 版本是 v2.3.0-alpha3。 Try This

【讨论】:

以上是关于React-native 0.65 (targetSdk=30) android build 由于 react-native-reanimated 而失败的主要内容,如果未能解决你的问题,请参考以下文章

c里面,double a=0.65f 这样的赋值是啥意思,是错的吗?

如何在 C 中制作 Siren 噪声 wav 文件?

MediaRecorder 录制开始时静音(延迟?)

浮点数的范围与精度

浮点数的范围与精度

将tomcat注册成windows系统服务方法