gradle 尽管设置了 SuppressWarnings,但打印警告
gradle prints warning although SuppressWarnings is set
我有一个 android 应用程序导入到 Android Studio。它包含一些 Java 库。到目前为止一切正常。
以下方法:
@SuppressWarnings("deprecation")
private Drawable getDrawable() {
if(Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT_WATCH)
return activity.getResources().getDrawable(R.drawable.separator_gradient, activity.getTheme());
else
return activity.getResources().getDrawable(R.drawable.separator_gradient);
}
始终打印贬值警告:
:androidAnsatTerminal:compileDebugJava
C:\...\src\main\java\de\ansat\terminal\activity\widgets\druckAssistent\FahrkartenArtSelector.java:131: warning: [deprecation] getDrawable(int) in Resources has been deprecated
return activity.getResources().getDrawable(R.drawable.separator_gradient);
^
1 条警告
这不是我项目中唯一的@SuppressWarnings("deprecation")。其他地方没有打印警告...
例如:
@SuppressWarnings("deprecation")
private void setBackgroundToNull(ImageView imgRight) {
if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.JELLY_BEAN) {
imgRight.setBackgroundDrawable(null);
} else {
imgRight.setBackground(null);
}
}
来自我的Android清单:
<uses-sdk
android:minSdkVersion="15"
android:targetSdkVersion="21" />
我怎样才能摆脱这个警告信息?
我不想关闭全局警告之类的。
编辑:
如果我只是调用带有 Theme 参数的 getDrawable,这当然会发生在 SDK15 设备上:
java.lang.NoSuchMethodError: android.content.res.Resources.getDrawable
at de.ansat.terminal.activity.widgets.druckAssistent.FahrkartenArtSelector.getDrawable(FahrkartenArtSelector.java:128)
用@SuppressWarnings("all") 来测试
我发现由于未知原因,这段代码触发了警告:
private Drawable getShadow(Context context) {
@SuppressWarnings("deprecation")
final Drawable drawable = context.getResources().getDrawable(R.drawable.shadow_top);
return drawable;
}
虽然这个等效代码没有:
private Drawable getShadow(Context context) {
final int resId = R.drawable.shadow_top;
@SuppressWarnings("deprecation")
final Drawable drawable = context.getResources().getDrawable(resId);
return drawable;
}
提取辅助方法似乎也有效并为我解决了问题:
@SuppressWarnings("deprecation")
private Drawable getDrawable(Context context, int resId) {
return context.getResources().getDrawable(resId);
}
@SuppressWarnings
注释用于 Java 编译器警告。对于 lint 警告,请使用
@SuppressLint("NewApi")
或
@TargetApi(android.os.Build.VERSION_CODES.JELLY_BEAN)
我有一个 android 应用程序导入到 Android Studio。它包含一些 Java 库。到目前为止一切正常。
以下方法:
@SuppressWarnings("deprecation")
private Drawable getDrawable() {
if(Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT_WATCH)
return activity.getResources().getDrawable(R.drawable.separator_gradient, activity.getTheme());
else
return activity.getResources().getDrawable(R.drawable.separator_gradient);
}
始终打印贬值警告:
:androidAnsatTerminal:compileDebugJava
C:\...\src\main\java\de\ansat\terminal\activity\widgets\druckAssistent\FahrkartenArtSelector.java:131: warning: [deprecation] getDrawable(int) in Resources has been deprecated
return activity.getResources().getDrawable(R.drawable.separator_gradient);
^
1 条警告
这不是我项目中唯一的@SuppressWarnings("deprecation")。其他地方没有打印警告...
例如:
@SuppressWarnings("deprecation")
private void setBackgroundToNull(ImageView imgRight) {
if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.JELLY_BEAN) {
imgRight.setBackgroundDrawable(null);
} else {
imgRight.setBackground(null);
}
}
来自我的Android清单:
<uses-sdk
android:minSdkVersion="15"
android:targetSdkVersion="21" />
我怎样才能摆脱这个警告信息? 我不想关闭全局警告之类的。
编辑: 如果我只是调用带有 Theme 参数的 getDrawable,这当然会发生在 SDK15 设备上:
java.lang.NoSuchMethodError: android.content.res.Resources.getDrawable
at de.ansat.terminal.activity.widgets.druckAssistent.FahrkartenArtSelector.getDrawable(FahrkartenArtSelector.java:128)
用@SuppressWarnings("all") 来测试
我发现由于未知原因,这段代码触发了警告:
private Drawable getShadow(Context context) {
@SuppressWarnings("deprecation")
final Drawable drawable = context.getResources().getDrawable(R.drawable.shadow_top);
return drawable;
}
虽然这个等效代码没有:
private Drawable getShadow(Context context) {
final int resId = R.drawable.shadow_top;
@SuppressWarnings("deprecation")
final Drawable drawable = context.getResources().getDrawable(resId);
return drawable;
}
提取辅助方法似乎也有效并为我解决了问题:
@SuppressWarnings("deprecation")
private Drawable getDrawable(Context context, int resId) {
return context.getResources().getDrawable(resId);
}
@SuppressWarnings
注释用于 Java 编译器警告。对于 lint 警告,请使用
@SuppressLint("NewApi")
或
@TargetApi(android.os.Build.VERSION_CODES.JELLY_BEAN)