Proguard使我的remoteconcontroller在API<19设备上实现崩溃



我正试图获得与API 19一起引入的RemoteController API,以便与API 14+一起工作,因为API已经在那里可用但隐藏了。到目前为止,我得到了一切工作,剩下的唯一问题是,proguard似乎破坏了我在API<19设备上的构建,每当我在MicroService.java:

中初始化我的RemoteMetadataProvider时都会导致AbstractMethodError:
java.lang.AbstractMethodError: abstract method not implemented
        at android.media.IRemoteControlDisplay$Stub.setCurrentClientId(IRemoteControlDisplay.java)
        at android.media.IRemoteControlDisplay$Stub.onTransact(IRemoteControlDisplay.java:65)
        at android.os.Binder.execTransact(Binder.java:367)
        at dalvik.system.NativeStart.run(Native Method)

MicroService.java: https://github.com/tomahawk-player/tomahawk-android/blob/master/src/org/tomahawk/tomahawk_android/services/MicroService.java

我的实现是基于这个指南/库由DrBreen: http://forum.xda-developers.com/showthread.php?t=2432267

我正在使用的WisdomWolf统一库:https://github.com/WisdomWolf/UnifiedRemoteMedadataProvider

proguard配置文件:https://github.com/tomahawk-player/tomahawk-android/blob/master/proguard-android.txt

当我完全禁用proguard时,一切都可以正常工作而不会崩溃,所以我猜proguard以某种方式剥离了所需的类/接口。关于如何正确配置proguard有什么想法吗?

My attempts so far:

  • 新增"-keep class org.electricwisdom"。**"one_answers"-keep class com.woodblockwithoutco."。* *"到我的proguard文件,因为这两个是RemoteMetadataProvider库的包名,该库实现了API 14-18的RemoteController API
  • 添加"-keep *"实现android.media。IRemoteControlDisplay" and/or "-keep *扩展android.media。IRemoteControlDisplay$Stub"到我的proguard文件
  • 增加"-keep class android.media.IRemoteControlDisplay$**"

解决了我的问题:加上"-保持班"。**"one_answers"-保持接口org.electricwisdom。

你是否检查过你使用的是正确的android版本,带有v18后缀的文件适用于android 4.3,没有v18后缀的文件适用于android 4.2.2及以下版本

就像在你发布

的同一帖子中所说的那样

请不要交叉使用这些库,否则您将获得RuntimeException(在getInstance()方法中)或AbstractMethodError(如果您以某种方式获得RemoteMetadataProvider的实例而没有调用getInstance())。

最新更新