Android Lint — inbyggd statisk kodanalysator i Android Studio och Gradle som kontrollerar källfiler mot Googles rekommendationer. Lint hittar potentiella fel före kompilering: oanvända resurser, prestandaproblem, minnesläckor och API-inkompatibilitet. Verktyget analyserar XML-, Java- och Kotlin-filer. Mer på Android Lint Guide.
Huvudpunkter
Android Lint — statiskt analysverktyg som ingår i Android SDK och Android Studio. Lint skannar applikationens källkod utan att köra den och hittar problem som kompilatorn missar: oanvända resurser, felaktig lokalisering, potentiella minnesläckor, API-inkompatibilitet med minSdkVersion och brott mot Googles prestandarekommendationer.
Statisk analys — metod för att kontrollera programvara utan att faktiskt köra koden. Till skillnad från kompilatorn som bara kontrollerar syntax och typer, letar den statiska analysatorn efter logiska fel, antimönster och avvikelser från bästa praxis. Lint utför över 200 inbyggda kontroller per kategori: correctness, performance, security, accessibility, usability och I18N.
Lint arbetar på flera nivåer: XML-analys kontrollerar layouter (layout), resurser (strings, colors, dimens), manifestet och konfigurationsfiler. Java/Kotlin-analys — källkod för anrop till föråldrade API:er, trådproblem och kontextläckor. Gradle-analys — byggkonfiguration för versionskompatibilitet.
Lint-kontroll körs via Android Studio (Analyze > Inspect Code) eller Gradle-kommando: ./gradlew lint. Resultat — HTML-rapport i mappen build/reports/lint-results.html och XML-rapport för CI-system. Lint analyserar varje fil oberoende och tillämpar en uppsättning regler (Issue), var och en med unikt ID, beskrivning, kategori och allvarlighetsgrad.
Allvarlighetsgrader för Lint: Error (fel — blockerar bygget), Warning (varning — påverkar kvaliteten), Informational (information — för kännedom), Ignore (ignoreras som standard). Nivåer konfigureras i lint.xml. Lint-fel kan konfigureras så att Gradle-bygget misslyckas när de finns via lintOptions.abortOnError true.
android {
lintOptions {
abortOnError true
checkAllWarnings true
baselineFile file("lint-baseline.xml")
htmlReport true
xmlReport true
lintConfig file("lint.xml")
}
}
Lint baseline — fil som låser nuvarande varningar som acceptabla. Skapas med kommandot lint --baseline baseline.xml. Efter att baseline har lagts till i projektet rapporterar Lint bara nya problem. Detta är praktiskt för att införa Lint i ett gammalt projekt med hundratals varningar — teamet åtgärdar fel gradvis.
lint.xml — konfigurationsfil i projektroten för att ställa in Lint-regler. Den specificerar ignorerade regler, allvarlighetsgrader och undantag för specifika filer eller kataloger. Filen skapas manuellt och tillämpas globalt på alla projektmoduler. Utan lint.xml fungerar alla regler med standardinställningar.
<?xml version="1.0" encoding="UTF-8"?>
<lint>
<!-- Inaktivera kontroll av oanvända resurser -->
<issue id="UnusedResources" severity="ignore" />
<!-- Öka allvarlighetsgraden för kontextläcka -->
<issue id="StaticFieldLeak" severity="error" />
<!-- Ignorera i genererade filer -->
<issue id="MissingTranslation" severity="ignore">
<ignore path="build/generated" />
</issue>
</lint>
@SuppressLint — annotering för att inaktivera Lint på metod- eller klassnivå i Java/Kotlin. Exempel: @SuppressLint("SetTextI18n") för en metod där text dynamiskt sätts i TextView. Annoteringen @RequiresApi anger lägsta API-nivå för en metod — Lint ger ingen varning om minSdk är högre än det angivna värdet.
CI-integration av Lint — standardpraxis inom Android-utveckling. Kommandot ./gradlew lint startar analys av alla moduler och genererar rapporter. I CI/CD-konfiguration (Jenkins, GitLab CI, GitHub Actions) körs Lint vid varje pull request. Vid fel misslyckas bygget och utvecklaren får ett meddelande med HTML Lint-rapporten.
lint-check:
script:
- ./gradlew lint
artifacts:
paths:
- app/build/reports/lint-results.html
when: always
HTML-rapport Lint innehåller en tabell över alla hittade problem med kategori, regel-ID, fil, rad och beskrivning. Rapporten finns på CI-servern eller publiceras som byggartefakt. XML-rapport (lint-results.xml) används för integration med kodanalyssystem (SonarQube, CodeClimate) och automatisk skapande av uppgifter i trackers (Jira, YouTrack).
Lint i pull request — konfigurera GitHub Actions eller GitLab CI så att Lint körs automatiskt vid skapande av MR/PR. Om Lint hittar fel returnerar CI status failure och sammanslagning blockeras. Detta förhindrar att problematisk kod kommer in i huvudgrenen och upprätthåller kodbasens kvalitet.
Lint-kategorier täcker alla aspekter av Android-utveckling. Google delar in reglerna i 12 kategorier, var och en ansvarig för en specifik typ av problem. De viktigaste kategorierna är Correctness, Performance, Security och Accessibility. För utvecklaren räcker det att känna till nyckelkontrollerna för varje kategori för att arbeta effektivt med Lint.
| Kategori | Beskrivning | Exempelregel |
|---|---|---|
| Correctness | Fel som påverkar applikationens funktion | MissingPermission, WrongConstant |
| Performance | Prestanda- och minnesproblem | UnusedResources, ViewHolder, DrawAllocation |
| Security | Sårbarheter och säkerhetsöverträdelser | ExportedContentProvider, WorldReadableFiles |
| Accessibility | Tillgänglighetsproblem för användare | ContentDescription, TouchTargetSize |
| Usability | Användbarhet och användarupplevelse | NotSibling, BackButton, HardcodedText |
| I18N | Internationalisering och lokalisering | MissingTranslation, ExtraTranslation |
Performance-regler — mest användbara i praktiken. UnusedResources hittar resurser som deklarerats i XML men inte används i koden. ViewHolder kontrollerar om ViewHolder-mönstret används i RecyclerView-adaptrar. DrawAllocation varnar för att skapa objekt i onDraw-metoden. Att åtgärda dessa problem minskar APK-storleken och påskyndar applikationen.
Security-regler är obligatoriska för publicerade appar. ExportedContentProvider kontrollerar om ContentProvider exporteras utan skydd. WorldReadableFiles varnar för att skapa filer som är tillgängliga för alla appar. AllowBackup kontrollerar flaggan allowBackup i manifestet — det rekommenderas att stänga av den för datasäkerhet.
Vanliga frågor
Kompilatorn kontrollerar syntax och typer och översätter kod till bytekod för exekvering. Lint analyserar kod utan kompilering och hittar logiska problem som kompilatorn missar: oanvända variabler, resursläckor, lokaliseringsproblem, prestandaöverträdelser och API-inkompatibilitet med minSdkVersion. Lint kompletterar kompilatorn men ersätter den inte.
I XML-filer använd attributet tools:ignore med regel-ID: tools:ignore="UnusedResources". I Java/Kotlin lägg till annoteringen @SuppressLint på en metod eller klass: @SuppressLint("SetTextI18n"). För en hel katalog konfigurera lint.xml med noden issue och severity="ignore". För hela projektet konfigurera lint.xml i modulroten.
Lint baseline — XML-fil som låser nuvarande Lint-varningar som acceptabla. Skapas med kommandot ./gradlew lint -Pbaseline eller via lintOptions.baselineFile i build.gradle. Efter att baseline lagts till rapporterar Lint bara nya problem. Detta är praktiskt för att införa Lint i projekt med ärvd kod — teamet åtgärdar fel iterativt.
Skapa en ny Java/Kotlin-modul med beroenden till lint-api och lint-checks från biblioteket com.android.tools.lint. Implementera klassen Detector för att hitta problem och klassen Issue för att beskriva dem. Bygg modulen till en JAR, placera i mappen lintLibs i ditt Android-projekt. Android Studio accepterar automatiskt anpassade regler.
Lint hittar problem som kompilatorn inte ser: kontextläckor (Activity, Fragment), API-inkompatibilitet med minSdkVersion, Gradle-konfigurationsproblem, för stora PNG-ikoner, saknade alternativa resurser för olika språk och skärmkonfigurationer. Google Play rekommenderar Lint före publicering. Utan Lint kan appen krascha på äldre enheter.
Sammanfattning
Vi utvecklar en mobil applikation nyckelfärdigt
IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.
Läs också