Szukaj…


Uwagi

Narzędzie Lint sprawdza pliki źródłowe projektu Androida pod kątem potencjalnych błędów i ulepszeń optymalizacji pod kątem poprawności, bezpieczeństwa, wydajności, użyteczności, dostępności i internacjonalizacji. Możesz uruchomić Lint z wiersza polecenia lub z Android Studio.

Oficjalna dokumentacja:

https://developer.android.com/studio/write/lint.html

Korzystanie z narzędzi: zignoruj w plikach xml

tools:ignore atrybutów tools:ignore mogą być używane w plikach xml do odrzucania ostrzeżeń.

ALE odrzucanie ostrzeżeń o strzępach za pomocą tej techniki jest w większości przypadków niewłaściwym sposobem postępowania.

Ostrzeżenie o strzępach należy zrozumieć i naprawić ... można je zignorować tylko wtedy, gdy masz pełne zrozumienie jego znaczenia i silny powód, aby je zignorować.

Oto przypadek użycia, w którym uzasadnione jest zignorowanie ostrzeżenia o kłaczkach:

  • Tworzysz aplikację systemową (podpisaną kluczem producenta urządzenia)
  • Twoja aplikacja musi zmienić datę urządzenia (lub inne działanie chronione)

Następnie możesz to zrobić w swoim manifeście: (tj. Prosząc o chronione pozwolenie i ignorując ostrzeżenie o strzępach, ponieważ wiesz, że w twoim przypadku pozwolenie zostanie udzielone)

<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"/>

Importowanie zasobów bez błędu „Przestarzałe”

Używając Android API 23 lub nowszego, bardzo często można zaobserwować taką sytuację:

wprowadź opis zdjęcia tutaj

Sytuacja ta jest spowodowana zmianami strukturalnymi interfejsu API Androida w zakresie pozyskiwania zasobów. Teraz funkcja:

public int getColor(@ColorRes int id, @Nullable Theme theme) throws NotFoundException    

należy użyć. Ale biblioteka android.support.v4 ma inne rozwiązanie.

Dodaj następującą zależność do pliku build.gradle:

com.android.support:support-v4:24.0.0

Następnie dostępne są wszystkie metody z biblioteki wsparcia:

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));

Ponadto można zastosować więcej metod z biblioteki wsparcia:

ViewCompat.setElevation(textView, 1F);
ViewCompat.animate(textView);
TextViewCompat.setTextAppearance(textView, R.style.AppThemeTextStyle);
...

Skonfiguruj LintOptions ze stopniowaniem

Możesz skonfigurować lint, dodając sekcję lintOptions w pliku 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
    }
}

Można uruchomić strzępków dla konkretnego wariantu (patrz poniżej), np ./gradlew lintRelease , czy dla wszystkich wariantów ( ./gradlew lint ), w którym to przypadku tworzy raport, który opisuje, jakie konkretne warianty dana sprawa dotyczy.

Sprawdź tutaj odniesienie DSL dla wszystkich dostępnych opcji .

Jak skonfigurować plik lint.xml

Możesz określić swoje preferencje sprawdzania Lint w pliku lint.xml . Jeśli tworzysz ten plik ręcznie, umieść go w katalogu głównym swojego projektu na Androida. Jeśli konfigurujesz preferencje Lint w Android Studio, plik lint.xml jest automatycznie tworzony i dodawany do projektu Android.

Przykład:

<?xml version="1.0" encoding="UTF-8"?>
    <lint>
        <!-- list of issues to configure -->
</lint>

Ustawiając wartość atrybutu ważności w znaczniku, można wyłączyć sprawdzanie kłaczków dla problemu lub zmienić poziom istotności dla problemu.

Poniższy przykład pokazuje zawartość pliku 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>

Konfigurowanie sprawdzania kłaczków w plikach źródłowych Java i XML

Możesz wyłączyć sprawdzanie Lint w plikach źródłowych Java i XML.

Konfigurowanie sprawdzania kłaczków w Javie

Aby wyłączyć sprawdzanie Lint specjalnie dla klasy lub metody Java w projekcie Android, dodaj adnotację @SuppressLint do tego kodu Java.

Przykład:

@SuppressLint("NewApi")
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

Aby wyłączyć sprawdzanie wszystkich problemów Lint:

@SuppressLint("all")

Konfigurowanie sprawdzania kłaczków w XML

Możesz użyć tools:ignore atrybut, aby wyłączyć sprawdzanie kłaczków dla określonych sekcji plików XML .

Na przykład:

tools:ignore="NewApi,StringFormatInvalid"

Aby wyłączyć sprawdzanie wszystkich problemów Lint w elemencie XML, użyj

tools:ignore="all"

Oznacz tłumienie ostrzeżeń

Dobrą praktyką jest zaznaczanie ostrzeżeń w kodzie. Na przykład niektóre przestarzałe metody wymagają testowania lub starej wersji wsparcia. Ale sprawdzanie Lint oznaczy ten kod ostrzeżeniami. Aby uniknąć tego problemu, potrzebujesz adnotacji @SuppressWarnings.

Na przykład dodaj ignorowanie ostrzeżeń do przestarzałych metod. W adnotacji należy również umieścić opis ostrzeżeń:

@SuppressWarnings("deprecated");
public void setAnotherColor (int newColor) {
    getApplicationContext().getResources().getColor(newColor)
}

Za pomocą tej adnotacji możesz zignorować wszystkie ostrzeżenia, w tym Lint, Android i inne. Korzystanie z funkcji Pomiń ostrzeżenia pomaga prawidłowo zrozumieć kod!



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow