我正在我的应用程序中执行ProGuard:
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
当我尝试使用Retrofit2进行http调用时,我得到了异常:
java.lang.IllegalArgumentException:缺少@GET URL或@Url参数。
Service
是:
interface ContentService {
@GET
fun getCMSCon(@Url url: String): Single<CMSCon>
}
minifyEnabled false
和shrinkResources false
我在互联网上进行了一项研究,最后我将proguard-rules.pro
修改为:
# Retrofit
-dontwarn retrofit2.**
-keep class retrofit2.** { *; }
-keepattributes Signature
-keepattributes Exceptions
-keepattributes *Annotation*
-keepattributes RuntimeVisibleAnnotations
-keepattributes RuntimeInvisibleAnnotations
-keepattributes RuntimeVisibleParameterAnnotations
-keepattributes RuntimeInvisibleParameterAnnotations
-keepattributes EnclosingMethod
-keepclasseswithmembers class * {
@retrofit2.* <methods>;
}
-keepclasseswithmembers interface * {
@retrofit2.* <methods>;
}
但没有改变。
从@Url
和字面值传递res
,以检查Flavors是否存在问题。
答案 0 :(得分:2)
解决方案是在func removeSpecificCustomAnnotation(
annotationArray: [CustomPointAnnotation],
annotationIdToRemove: String,
viewController: HasMapView) {
print("\(viewController.mapView)")
}
中描述的任何调用中将@Keep
应用为服务:
interface