Skip to content
This repository was archived by the owner on Oct 23, 2024. It is now read-only.
This repository was archived by the owner on Oct 23, 2024. It is now read-only.

Android Kotlin 新版本1.3.50 ProGuard 错误 #2929

@cheekiat

Description

@cheekiat

Kotlin 新版本1.3.50 ProGuard 之后 json 转换 object 出错,我把 '1.3.50' 改成 '1.3.21' 才不会出错。

#proguard 内容

-keep class kotlin.reflect.jvm.internal.** { *; }
-dontwarn com.alibaba.fastjson.**
-keepattributes Signature
-keepattributes *Annotation*
-keep class com.cheekiat.fastjson.model.** {*;}
-keep class com.alibaba.fastjson.** {*;}

Activity

manondidi

manondidi commented on Dec 19, 2019

@manondidi

+1

liminghuanghengtian

liminghuanghengtian commented on Aug 21, 2020

@liminghuanghengtian

添加kotlin-reflect库,并对kotlin.reflect子包添加混淆keep规则;数据bean(即data class)也要keep住,另data class类需要给他一个无参构造器

danielaskdd

danielaskdd commented on Nov 9, 2020

@danielaskdd

Android Studio 升级Gradle6.5(Gradle Plugin 4.1)之后,Kotlin中使用fastjason出问题,无法把json串反序列化为Kotlin对象。研究了很久才发现需要这样解决:Kotlin代码中不仅要在data类上添加@keep标注,还需要在其宿主类上添加@keep标注。在Gradle Plugin4.0版没有没有在其宿主类上添加@keep标注也是可以正常工作的,不知道为何升级之后需要这样做,可以解答一下吗? @liminghuanghengtian

目前我让fastjson正常逆序列化Kotlin对象的做法如下:

  • Kotlin代码中需要用fastjson逆序列化的data类,以及其宿主类上都需要添加 @keep 标注
  • data类每个属性都要赋初值,确保Kotllin自动生成空的构建方法
  • 在app的gradle配置中添加kotlin-reflect依赖:
implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
  • proguard的混淆规则需要添加一下内容:
# 按照Gradle Plugin升级说明添的规则
-keep class kotlin.Metadata { *; }
-keepattributes RuntimeVisibleAnnotations

# 因为fastjason需要通过kotlin-reflect完成工作,还需要添加一下规则
-dontwarn kotlin.reflect.jvm.internal.**
-keep class kotlin.reflect.jvm.internal.** { *; }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @liminghuanghengtian@manondidi@cheekiat@danielaskdd

        Issue actions

          Android Kotlin 新版本1.3.50 ProGuard 错误 · Issue #2929 · alibaba/fastjson