Android
Vad är ProGuard? Vad används i Android?
Sök…
Introduktion
Proguard är gratis Java-klassfilkrympare, optimizer, obfuscator och förebyggare. Den upptäcker och tar bort oanvända klasser, fält, metoder och attribut. Det optimerar bytecode och tar bort oanvända instruktioner. Den byter namn på återstående klasser, fält och metoder med korta meningslösa namn.
Krympa din kod och resurser med proguard
För att göra din APK-fil så liten som möjligt bör du aktivera krympning för att ta bort oanvänd kod och resurser i din release-version. Den här sidan beskriver hur du gör det och hur du anger vilken kod och resurser som ska bevaras eller kasseras under byggandet.
Kodkrympning finns med ProGuard, som upptäcker och tar bort oanvända klasser, fält, metoder och attribut från din paketerade app, inklusive de från medföljande kodbibliotek (vilket gör det till ett värdefullt verktyg för att arbeta runt referensgränsen på 64 k). ProGuard optimerar också bytekoden, tar bort oanvända kodinstruktioner och döljer de återstående klasserna, fälten och metoderna med korta namn. Den dolda koden gör din APK svår att återvända ingenjör, vilket är särskilt värdefullt när din app använder säkerhetskänsliga funktioner, t.ex. licensverifiering.
Resurs krympning är tillgängligt med Android-plugin för Gradle, som tar bort oanvända resurser från din paketerade app, inklusive oanvända resurser i kodbibliotek. Det fungerar tillsammans med kod som krymper så att när oanvänd kod inte har tagits bort kan alla resurser som inte längre hänvisas till också tas bort på ett säkert sätt.
Krympa din kod
För att aktivera kod som krymper med ProGuard
, lägger du till minifyEnabled
true till lämplig build.gradle
i din build.gradle
fil.
Var medveten om att kodkrympningen bromsar byggtiden, så du bör undvika att använda den på din felsökning om möjligt. Det är dock viktigt att du aktiverar krympning av din slutliga APK som används för testning, eftersom den kan införa buggar om du inte tillräckligt anpassar vilken kod du vill behålla.
Följande kodavsnitt från en build.gradle
fil möjliggör exempelvis krympning för frigöringsbyggnaden:
android {
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
}
...
}
Förutom den minifyEnabled
egendom, proguardFiles
definierar egenskapen av ProGuard rules
:
Metoden getDefaultProguardFile ('proguard-android.txt') får standard ProGuard-inställningarna från Android SDK- tools/proguard/ folder
. Tips: För ännu mer krympning, prova proguard-android-optimize.txt
som finns på samma plats. Den innehåller samma ProGuard-regler, men med andra optimeringar som utför analys på bytkodnivå - inom och över metoder - för att minska din APK-storlek ytterligare och hjälpa den att köra snabbare. proguard-rules.pro
är där du kan lägga till anpassade ProGuard-regler. Som standard ligger denna fil i roten till modulen (bredvid filen build.gradle). För att lägga till fler ProGuard-regler som är specifika för varje byggvariant lägger du till en annan proguardFiles-egenskap i motsvarande productFlavor
block. Till exempel lägger följande Gradle-fil flavour2-ules.pro till flavors2-produktsmaken. Nu använder flavour2 alla tre ProGuard-reglerna eftersom de från frigöringsblocket också tillämpas.
android {
...
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
}
productFlavors {
flavor1 {
}
flavor2 {
proguardFile 'flavor2-rules.pro'
}
}
}