Android
Advertencias de la pelusa
Buscar..
Observaciones
La herramienta Lint comprueba los archivos de origen de su proyecto Android para detectar posibles errores y mejoras de optimización para la corrección, seguridad, rendimiento, facilidad de uso, accesibilidad e internacionalización. Puede ejecutar Lint desde la línea de comandos o desde Android Studio.
Documentación oficial:
Usando herramientas: ignorar en archivos xml
Las tools:ignore
atributos tools:ignore
se pueden usar en archivos xml para descartar las advertencias de pelusas.
PERO descartar advertencias de pelusas con esta técnica es la mayoría de las veces la forma incorrecta de proceder.
Una advertencia de pelusas debe ser entendida y reparada ... puede ignorarse solo si tiene un entendimiento completo de su significado y una razón importante para ignorarlo.
Aquí hay un caso de uso donde es legítimo ignorar una advertencia de pelusa:
- Está desarrollando una aplicación de sistema (firmada con la clave del fabricante del dispositivo)
- Su aplicación necesita cambiar la fecha del dispositivo (o cualquier otra acción protegida)
Entonces puede hacer esto en su manifiesto: (es decir, solicitar el permiso protegido e ignorar la advertencia de pelusa porque sabe que en su caso se otorgará el permiso)
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
...>
<uses-permission android:name="android.permission.SET_TIME"
tools:ignore="ProtectedPermissions"/>
Importando recursos sin error "En desuso"
Usando la API de Android 23 o superior, muy a menudo tal situación se puede ver:
Esta situación es causada por el cambio estructural de la API de Android con respecto a obtener los recursos. Ahora la función:
public int getColor(@ColorRes int id, @Nullable Theme theme) throws NotFoundException
debería ser usado. Pero la biblioteca android.support.v4 tiene otra solución.
Agregue la siguiente dependencia al archivo build.gradle:
com.android.support:support-v4:24.0.0
Entonces todos los métodos de la biblioteca de soporte están disponibles:
ContextCompat.getColor(context, R.color.colorPrimaryDark);
ContextCompat.getDrawable(context, R.drawable.btn_check);
ContextCompat.getColorStateList(context, R.color.colorPrimary);
DrawableCompat.setTint(drawable);
ContextCompat.getColor(context,R.color.colorPrimaryDark));
Además, se pueden utilizar más métodos de la biblioteca de soporte:
ViewCompat.setElevation(textView, 1F);
ViewCompat.animate(textView);
TextViewCompat.setTextAppearance(textView, R.style.AppThemeTextStyle);
...
Configurar LintOptions con gradle
Puede configurar la pelusa agregando una sección lintOptions
en el archivo build.gradle
:
android {
//.....
lintOptions {
// turn off checking the given issue id's
disable 'TypographyFractions','TypographyQuotes'
// turn on the given issue id's
enable 'RtlHardcoded','RtlCompat', 'RtlEnabled'
// check *only* the given issue id's
check 'NewApi', 'InlinedApi'
// set to true to turn off analysis progress reporting by lint
quiet true
// if true, stop the gradle build if errors are found
abortOnError false
// if true, only report errors
ignoreWarnings true
}
}
Puede ejecutar lint para una variante específica (ver más abajo), por ejemplo ./gradlew lintRelease
, o para todas las variantes ( ./gradlew lint
), en cuyo caso produce un informe que describe a qué variantes específicas se aplica un problema determinado.
Consulte aquí la referencia DSL para todas las opciones disponibles .
Cómo configurar el archivo lint.xml
Puede especificar sus preferencias de control de pelusa en el archivo lint.xml
. Si está creando este archivo manualmente, colóquelo en el directorio raíz de su proyecto de Android. Si está configurando las preferencias de Lint en Android Studio, el archivo lint.xml se crea automáticamente y se agrega a su proyecto de Android para usted.
Ejemplo:
<?xml version="1.0" encoding="UTF-8"?>
<lint>
<!-- list of issues to configure -->
</lint>
Al establecer el valor del atributo de severidad en la etiqueta, puede deshabilitar la verificación de Lint para un problema o cambiar el nivel de severidad para un problema.
El siguiente ejemplo muestra el contenido de un archivo lint.xml
.
<?xml version="1.0" encoding="UTF-8"?>
<lint>
<!-- Disable the given check in this project -->
<issue id="IconMissingDensityFolder" severity="ignore" />
<!-- Ignore the ObsoleteLayoutParam issue in the specified files -->
<issue id="ObsoleteLayoutParam">
<ignore path="res/layout/activation.xml" />
<ignore path="res/layout-xlarge/activation.xml" />
</issue>
<!-- Ignore the UselessLeaf issue in the specified file -->
<issue id="UselessLeaf">
<ignore path="res/layout/main.xml" />
</issue>
<!-- Change the severity of hardcoded strings to "error" -->
<issue id="HardcodedText" severity="error" />
</lint>
Configuración de la comprobación de pelusas en archivos fuente de Java y XML
Puede deshabilitar la comprobación de Lint desde sus archivos de origen Java y XML.
Configurando la comprobación de pelusas en Java
Para deshabilitar la verificación de Lint específicamente para una clase o método Java en su proyecto de Android, agregue la anotación @SuppressLint
a ese código Java.
Ejemplo:
@SuppressLint("NewApi")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Para deshabilitar la comprobación de todos los problemas de Lint:
@SuppressLint("all")
Configurando la comprobación de pelusas en XML
Puede usar las tools:ignore
atributo para deshabilitar la verificación de Lint para secciones específicas de sus archivos XML .
Por ejemplo:
tools:ignore="NewApi,StringFormatInvalid"
Para suprimir la comprobación de todos los problemas de Lint en el elemento XML, use
tools:ignore="all"
Marca suprimir advertencias
Es una buena práctica marcar algunas advertencias en su código. Por ejemplo, algunos métodos en desuso son necesarios para su prueba, o versión de soporte anterior. Pero la comprobación de pelusa marcará ese código con advertencias. Para evitar este problema, necesita usar la anotación @SuppressWarnings.
Por ejemplo, agregue ignorar las advertencias a métodos en desuso. También hay que poner la descripción de las advertencias en la anotación:
@SuppressWarnings("deprecated");
public void setAnotherColor (int newColor) {
getApplicationContext().getResources().getColor(newColor)
}
Usando esta anotación puede ignorar todas las advertencias, incluyendo Lint, Android y otras. Usando Suppress Warnings, ayuda a entender el código correctamente!