我正在尝试使用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的任何想法?
到目前为止我的尝试:
答案 0 :(得分:1)
这就解决了我的问题: 在我的proguard配置文件中添加“-keep class org.electricwisdom。**”和“-keep interface org.electricwisdom。* *”。
答案 1 :(得分:0)
您是否检查过您使用的是正确的Android版本,带有后缀v18的文件适用于Android 4.3以及没有它的文件适用于Android 4.2.2及更低版本。
正如你在发布的同一个帖子中说的那样
请不要交叉使用这个库,否则你将获得RuntimeException(在getInstance()方法中)或AbstractMethodError(如果你以某种方式获取RemoteMetadataProvider的实例而不调用getInstance())。