Sök…


Anmärkningar

Lint-verktyget kontrollerar dina källfiler för Android-projekt för potentiella buggar och optimeringsförbättringar för korrekthet, säkerhet, prestanda, användbarhet, tillgänglighet och internationalisering. Du kan köra Lint från kommandoraden eller från Android Studio.

Officiell dokumentation:

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

Använda verktyg: ignorera i xml-filer

Attributverktygen tools:ignore kan användas i xml-filer för att avvisa luddvarningar.

MEN att avvisa luddvarningar med den här tekniken är oftast fel sätt att fortsätta.

En luddvarning måste förstås och fixas ... den kan ignoreras om och bara om du har en fullständig förståelse för dess mening och en stark anledning att ignorera den.

Här är ett användningsfall där det är legitimt att ignorera en luddvarning:

  • Du utvecklar en system-app (signerad med enhetstillverkarens nyckel)
  • Din app måste ändra enhetsdatumet (eller någon annan skyddad åtgärd)

Sedan kan du göra detta i ditt manifest: (dvs. be om skyddat tillstånd och ignorera luddvarningen eftersom du vet att i ditt fall kommer tillståndet att beviljas)

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

Importera resurser utan "Deprecated" -fel

Med Android API 23 eller högre kan en sådan situation ofta ses:

ange bildbeskrivning här

Denna situation orsakas av den strukturella förändringen av Android API när det gäller att få resurser. Nu funktionen:

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

borde användas. Men android.support.v4-biblioteket har en annan lösning.

Lägg till följande beroende i filen build.gradle:

com.android.support:support-v4:24.0.0

Då är alla metoder från supportbibliotek tillgängliga:

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

Dessutom kan fler metoder från supportbiblioteket användas:

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

Konfigurera LintOptions med gradle

Du kan konfigurera ludd genom att lägga till en lintOptions sektion i build.gradle fil:

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
    }
}

Du kan köra ludd för en specifik variant (se nedan), t.ex. ./gradlew lintRelease , eller för alla varianter ( ./gradlew lint ), i vilket fall den producerar en rapport som beskriver vilka specifika varianter en given fråga gäller.

Kolla här för DSL-referens för alla tillgängliga alternativ .

Hur man konfigurerar lint.xml-filen

Du kan ange dina lintkontrollpreferenser i lint.xml filen. Om du skapar den här filen manuellt placerar du den i rotkatalogen för ditt Android-projekt. Om du konfigurerar Lint-inställningar i Android Studio skapas lint.xml-filen automatiskt och läggs till ditt Android-projekt åt dig.

Exempel:

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

Genom att ställa in värdet på attributet för svårighetsgrad i taggen kan du inaktivera Lint-kontrollen för ett problem eller ändra svårighetsgraden för ett problem.

Följande exempel visar innehållet i en lint.xml fil.

<?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>

Konfigurera lintkontroll i Java- och XML-källfiler

Du kan inaktivera lintkontroll från dina Java- och XML-källfiler.

Konfigurera luddontroll i Java

Om du vill inaktivera Lintkontroll specifikt för en Java-klass eller -metod i ditt Android-projekt lägger du till @SuppressLint anteckningen till den Java-koden.

Exempel:

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

Så här inaktiverar du kontrollen för alla luddproblem:

@SuppressLint("all")

Konfigurera luddontroll i XML

Du kan använda tools:ignore attribut för att inaktivera Lintkontroll för specifika delar av dina XML-filer .

Till exempel:

tools:ignore="NewApi,StringFormatInvalid"

För att undertrycka kontrollen för alla luddfrågor i XML-elementet använder du

tools:ignore="all"

Markera undertryck varningar

Det är bra att markera några varningar i din kod. Till exempel krävs vissa avskrivna metoder för din testning eller en gammal supportversion. Men lutkontroll kommer att markera den koden med varningar. För att undvika detta problem måste du använda annotation @SuppressWarnings.

Lägg till exempel till ignorering av varningar till föråldrade metoder. Du måste lägga till varningsbeskrivning i kommentarer också:

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

Med denna kommentar kan du ignorera alla varningar, inklusive ludd, Android och annat. Att använda Undertryck Varningar hjälper till att förstå koden korrekt!



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow