如何跳过基础包中的retrofit2使用的proguard模型?
我正在用Kotlin和Retrotif 2写一个应用程序。当我使用proguard时,我遵循这里的规则
https://github.com/krschultz/android-proguard-snippets/blob/master/libraries/proguard-square-retrofit2.pro
除此之外,我也需要推进我的模型,如https://stackoverflow.com/a/41136007/3286489
如果我在一个包中有我的模型,并且我有-keep class com.elyeproj.wikisearchcount.model.** { *; }
-keep class com.elyeproj.wikisearchcount.model.** { *; }
package com.elyeproj.wikisearchcount.model object Model { data class Result(val query: Query) data class Query(val searchinfo: SearchInfo) data class SearchInfo(val totalhits: Int) }
但是,如果我保留我的模型在基础包中的代码如下,但我不想保留整个包即-keep class com.elyeproj.wikisearchcount.** { *; }
因为这打败了proguard的目的
package com.elyeproj.wikisearchcount object Model { data class Result(val query: Query) data class Query(val searchinfo: SearchInfo) data class SearchInfo(val totalhits: Int) }
我怎么能保留我的模型班?
我尝试了-keep class com.elyeproj.wikisearchcount.Model.** { *; }
-keep class com.elyeproj.wikisearchcount.Model.** { *; }
,但它不起作用。
你为什么不使用注解@SerializedName
,然后你不必担心混淆? 你可以使用下面的代码:
object Model { data class Result(@SerializedName("query") val query: Query) data class Query(@SerializedName("searchInfo") val searchinfo: SearchInfo) data class SearchInfo(@SerializedName("totalhits") val totalhits: Int) }
经过进一步探索,我找到了答案
-keep class com.elyeproj.wikisearchcount.Model** { *; }
- 新的建筑与匕首和Kotlin
- Kotlin:Dagger2 @Inject context var始终为空
- AndroidInjector <android.app.Activity>不能提供@ Provide或者@ Produces注解的方法
- 使用kapt时,Dagger跳过Google服务模块的工厂代码
- Kotlin + Dagger2 @模块提供者方法用法中的注释
- 我如何提供匕首依赖的活动上下文?
- 改进API调用:如何确保在进行api调用后该值不为空?
- 在RxAndroid用例的演示者中测试什么以及如何测试
- 在Moshi 1.5中使用Kotlin使用KotlinJsonAdapterFactory()时,无法找到类