Android
Luddvarningar
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:
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:
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!