将播放服务更新到8.3.0后无法创建发布版本

时间:2015-11-16 11:32:03

标签: java android google-play-services android-support-library android-6.0-marshmallow

将播放服务更新到版本8.1.0或8.3.0后无法创建发布APK我遇到以下例外情况。

任何人都知道如何解决这个问题。

Uncaught translation error: com.android.dx.cf.code.SimException: com.android.dx.rop.cst.CstMethodRef cannot be cast to com.android.dx.rop.cst.CstInterfaceMethodRef
Uncaught translation error: com.android.dx.cf.code.SimException: com.android.dx.rop.cst.CstMethodRef cannot be cast to com.android.dx.rop.cst.CstInterfaceMethodRef
2 errors; aborting
Error:Execution failed for task ':project:dexRelease'.
com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.8.0_66\bin\java.exe'' finished with non-zero exit value 1

2 个答案:

答案 0 :(得分:4)

请参阅此Android issue

这是一个已知的错误。官方解决方法是:

  

开发团队已修复您已报告的问题及其问题   将在以后的版本中提供。

     

暂时解决方法:问题是你需要把问题放在一边   useLibrary元素,如果你需要编译它。但如果你不这样做   编译你的代码,但你有第三方库使用它   并且你通过proguard(这是想要看到所有的挑剔   使用的类),然后我们需要将它传递给proguard   是否要求编译。

     

短期解决方法是要求图书馆进行编译   (然后它也会将它添加到我们给出的类路径中   proguard的)。

这基本上意味着您应该使用最新的Google Play服务重新编译所有库(包括第三方库),或者恢复为较旧的Google Play服务版本。

答案 1 :(得分:1)

我遇到了同样的错误消息。就我而言,它与Retrolambda有关。

我没有使用任何依赖Google Play服务的第三方库,所以Codos的答案很有用,但并没有为我解决问题。

事实证明,接口上的静态工厂方法导致了这个问题:

>>> [x.replace(foo, '').split('.')[0] for x in faa]
['file1', 'file2']

从界面中删除静态方法并进行清理/重建解决了我的问题。

根据文档,静态接口方法存在已知问题:Retrolambda Known limitations