我在Android Studio项目中使用ProGuard。当我构建我的版本时,我得到以下注释:
Note: android.support.v4.app.NotificationCompatJellybean calls 'Field.getType'
这是我的Gradle配置:
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
这是proguard-rules.pro:
-dontnote org.apache.http.conn.scheme.HostNameResolver
-dontnote org.apache.http.conn.**
-dontnote org.apache.http.params.**
-dontnote android.net.http.**
-dontnote **ILicensingService
-dontnote com.android.vending.billing.IInAppBillingService
如何解决此说明的问题?
答案 0 :(得分:1)
将以下行添加到proguard-rules.pro
文件中:
-keepattributes Signature
说明:
你的注释与android.support.v4.app.NotificationCompatJellybean没有任何关系,但是使用了Field.getType。
方法getType属于反射包的java.lang.reflect.Field
,可能访问存储在Java类文件中的元信息。但是,这个元信息被proguard删除(没有上面的规则) - 因此警告。
另请参阅-keepattributes
可以使用的attributes。属性签名的内容如下:
指定类,字段或的通用签名 方法。编译器可能需要此信息才能正确编译 使用编译库中的泛型类型的类 代码可以通过反思访问此签名。
答案 1 :(得分:0)
尝试将以下行添加到ProGuard配置中:
-dontnote android.support.v4.app.NotificationCompatJellybean
NotificationCompatJellybean
在其Notification.extras
方法中获取私有getExtras()
字段的类型。但是,作为Android SDK的Notification
类中的此字段,您可以使用上面的命令忽略此注释。