react-native-media-meta在调试时工作,但在Release APK上崩溃

时间:2019-05-22 07:19:32

标签: android react-native react-native-android

要读取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存在。我从这里开始遵循Android中用于react-native-media-meta的特定库描述:https://github.com/wseemann/FFmpegMediaMetadataRetriever#using-fmmr-in-your-application-android-studio

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

当前,这一个问题是构建已发布的Android APK的障碍。任何帮助将不胜感激,因为我该如何解决这个问题。

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

1 个答案:

答案 0 :(得分:0)

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

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

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