使用proguard删除MediaPlayer的日志调用

时间:2016-06-08 11:29:56

标签: android android-mediaplayer proguard android-videoview

我正在尝试使用proguard从我最终签名的apk中删除所有日志。一切正常,但MediaPlayer仍然显示其错误日志。我花了两天时间尝试解决这个问题,但我没有找到解决此错误的解决方案,也没有从日志中删除此错误消息。 logcat中的错误:

https://github.com/jrendel/SwiftKeychainWrapper

我的代码(和整个应用程序)运行正常。该应用程序成功播放链接中的所有视频,此错误实际上没有任何意义。 我发现类似的问题here正如他们所说:

日志中的消息是内置于Android MediaPlayer中的调试消息。这不是一个实际错误..他们正在使用控制流的异常。有关内部血腥详细信息,请参阅Android MediaPlayer.java的setDataSource()来源。

好吧,我在调试代码中并不关心这个问题,但我不希望在我的生产应用程序中看到任何日志。我使用proguard从我的应用程序中删除所有日志。 我的E/MediaPlayer: setDataSource: IOException! uri=https://my-url java.io.FileNotFoundException: No content provider: https://my-url 文件:

proguard-rules.pro

在我的-assumenosideeffects class android.util.Log { public static boolean isLoggable(java.lang.String, int); public static *** v(...); public static *** i(...); public static *** w(...); public static *** d(...); public static *** e(...); } # for Okhttp: -keepattributes Signature -keepattributes *Annotation* -keep class com.squareup.okhttp.** { *; } -keep interface com.squareup.okhttp.** { *; } -dontwarn com.squareup.okhttp.** # Okio (okhttp) -keep class sun.misc.Unsafe { *; } -dontwarn java.nio.file.* -dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement # Glide specific rules # # https://github.com/bumptech/glide -keep public class * implements com.bumptech.glide.module.GlideModule -keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** { **[] $VALUES; public *; } ## Google Analytics 3.0 specific rules ## -keep class com.google.analytics.** { *; } # for search view # -keep class android.support.v7.widget.SearchView { *; } # for jsoup # -keeppackagenames org.jsoup.nodes # for share action provider # -keep class android.support.v7.widget.ShareActionProvider { *; } 文件中:

build.gradle

但没有任何改变。所以问题是:

一般情况下,如何删除这些日志消息,并删除日志中的链接,尤其是MediaPlayer生成的链接?如果没有机会用proguard做,我有什么选择?在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

简短回答:您无法

长答案:ProGuard仅处理属于您的应用程序的代码。 MediaPlayer是设备上安装的运行时库的一部分。当您的应用程序调用MediaPlayer时,它会使用您设备上安装的版本,而ProGuard无法处理此部分并删除相应的日志记录调用。