如何解决使用暂停函数混淆内部类后的ClassCastException
我正在构建一个kotlin AAR库,在发布之前我需要对其进行混淆。我有以下结构:
package com.example.token
interface TokenManager {
suspend fun getTokenStatus(): String
}
以上是可用于api客户端的公共接口。该实现已移至内部软件包:
package com.example.token.internal
internal class RestApiTokenManager: TokenManager {
override suspend fun getTokenStatus(): String {
//....
}
}
我的混淆异常仅包括公共接口程序包:
-keep class com.example.token.*{*;}
不幸的是,这导致了类强制转换异常:
java.lang.classCastException: e.e.a.a.l.d.e$a cannot be cast to c.a.a.e.a.a$a
为了解决此问题,我需要为实现包添加一个混淆异常,我想避免这种情况。
现在真正的怪异问题是,ClassCastException
删除后,suspend
就消失了。
我尝试添加-keeptkotlinMetadata
,但收到R8: UnkNown option
错误。
我已经为此困扰了很长时间,没有一个不会强迫我为内部实现类添加异常的解决方案。
解决方法
这可能是R8中的错误,我已经打开issue 167373399进行跟踪。
请在那里跟进有关当前使用的Android Studio / R8版本的信息?
也请看看this Medium post,其中有更多有关使用R8缩小Kotlin代码的详细信息。
,讨论继续进行,并在问题跟踪器167373399
上结束了版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。