首页 > 解决方案 > react-native-media-meta 在调试时工作但在发布 APK 时崩溃

问题描述

要为我们的应用程序读取选定的媒体元数据react-native,我们使用了react-native-media-meta. 它在已发布的 APK 中导致问题,但在调试中工作正常。

包链接:https ://github.com/mybigday/react-native-media-meta 我在读取媒体元数据方面取得了成功,应用程序在调试iOSAndroid调试中都运行良好。在发布 APK 时,应用程序抛出Exception如下:

java.lang.NoSuchFieldError: no "J" field "mNativeContext" in class "Lwseemann/media/FFmpegMediaMetadataRetriever;" or its superclasses at wseemann.media.FFmpegMediaMetadataRetriever.native_init(Native Method) at wseemann.media.FFmpegMediaMetadataRetriever.<clinit>(Unknown Source:43) at com.mybigday.rnmediameta.RNMediaMeta.getMetadata(Unknown Source:19) at com.mybigday.rnmediameta.RNMediaMeta.access$000(Unknown Source:0) at com.mybigday.rnmediameta.RNMediaMeta$1.run(Unknown Source:8)

只有在发布时才Exception存在。我遵循从这里使用的特定库描述Androidhttps ://github.com/wseemann/FFmpegMediaMetadataRetriever#using-fmmr-in-your-application-android-studioreact-native-media-meta

但是,如果我要发布基于 APK 的架构,它给出的结果相同。如果我为每个架构声明多个依赖项,则会产生dependancy duplication问题。

目前,这个单一问题是构建已发布的 Android APK 的障碍。任何帮助将不胜感激,我该如何克服这个问题。

类似问题:1. https://github.com/mybigday/react-native-media-meta/issues/22 2. https://github.com/wseemann/FFmpegMediaMetadataRetriever/issues/197

标签: androidreact-nativereact-native-android

解决方案


我刚刚通过在 progaurd-rules.pro 文件中添加这些行来解决这个问题

  • -keep class com.mybigday.** { *; }
  • -keep class com.mybigday.rnmediameta.** { *; }
  • -保持类 wseemann.media.** {*;}

它解决了发布版本中的问题。


推荐阅读