注意:android.support.v4.app.NotificationCompatJellybean调用'Field.getType'

时间:2015-10-11 23:14:13

标签: java android android-studio proguard android-proguard

我在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

如何解决此说明的问题?

2 个答案:

答案 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类中的此字段,您可以使用上面的命令忽略此注释。