Android Kotlin ProGuard规则错误?

Android Kotlin ProGuard规则错误?,android,kotlin,gradle,proguard,Android,Kotlin,Gradle,Proguard,目前,我有一个库将被多个其他项目使用,但是在使用.aar时,我遇到了代码混淆的问题,尤其是在某些类中: 这是一个用来处理后端响应或异步任务等 sealed class Result<out T : Any> { open class Success<out T : Any>(val data: T) : Result<T>() open class Error(val error: ErrorModel) : Result<Nothing

目前,我有一个库将被多个其他项目使用,但是在使用.aar时,我遇到了代码混淆的问题,尤其是在某些类中:

这是一个用来处理后端响应或异步任务等

sealed class Result<out T : Any> {
    open class Success<out T : Any>(val data: T) : Result<T>()
    open class Error(val error: ErrorModel) : Result<Nothing>()
}
我使用的规则是:

#noinspection ShrinkerUnresolvedReference
-keep class com.cross.project.compilation.testlib.response.** { *; }
-keep class com.cross.project.compilation.testlib.LibApp.** { *; }
目前我有3种构建类型和2种风格:

buildTypes {
        release {
            debuggable false
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }

        releaseDebug{
            debuggable true
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }

        debug{
            debuggable true
            minifyEnabled false
        }
    }

    flavorDimensions "libFlavors"

    productFlavors {

        dev {

        }

        prod {

        }

    }
当我在consumer项目中检查反编译源中的版本变体时,我得到:

结果获取从成功返回中剥离的

public sealed class Result<out T : kotlin.Any> private constructor() {
    public open class Error public constructor(error: com.cross.project.compilation.testlib.response.ErrorModel) : com.cross.project.compilation.testlib.response.Result {
        public final val error: com.cross.project.compilation.testlib.response.ErrorModel /* compiled code */
    }

    public open class Success<out T : kotlin.Any> public constructor(data: T) : com.cross.project.compilation.testlib.response.Result {
        public final val data: T /* compiled code */
    }
}
为此:

 return when (val response = accountService.getAccountData()) {
            is Result.Success<*> -> ConsumerResult.Success((response.data as AccountData))
            is Result.ErrorModel -> ConsumerResult.Failure(response.errorModel)
        }
并将@Keep注释添加到类中的每个级别,如:

@Keep class LibApp private constructor(
    ...

    @Keep
    companion object {
       ...

        @Keep
        fun init(
        ...
但是,我没有幸修改规则以保持结果的一般返回。成功,知道我做错了什么吗

作为补充信息,我正在使用和构建maven publish插件:

Android Gradle插件4.0.1 梯度包装6.1.1

此问题似乎是在我从以下位置升级后出现的:

Android Gradle插件3.6.3
Gradle Wrapper 5.6.4

结果中不键入任何内容。错误在R8模糊处理时被清除。尝试在build.gradle文件中添加以下内容:

-keepclasseswithmembers class com.cross.project.compilation.testlib.LibApp {
    public *;
}

-keep @interface kotlin.Metadata {
  *;
}
-keepattributes RuntimeVisibleAnnotations
buildscript {
     repositories {
       // other repos are omitted 
        maven { url  'https://storage.googleapis.com/r8-releases/raw' }
    }
    dependencies {
        classpath 'com.android.tools:r8:2.1.68'
        // other dependencies are omitted 
在proguard文件中声明要防止混淆的结果类型

-keep class [path_to_class].Result { *; }
-keep class [path_to_class].Result$** { *; }
buildscript {
     repositories {
       // other repos are omitted 
        maven { url  'https://storage.googleapis.com/r8-releases/raw' }
    }
    dependencies {
        classpath 'com.android.tools:r8:2.1.68'
        // other dependencies are omitted 
-keep class [path_to_class].Result { *; }
-keep class [path_to_class].Result$** { *; }