Unused Resources Remover for Android
Gradle Plugin that removes unused resources in Android projects.
Features
- Easy to remove unused resources by simple gradle command
- Customize extra/exclude files configuration
- Support DataBinding & Multi module project
Simple usage
build.gradle
buildscript {
repositories {
maven { url "https://plugins.gradle.org/m2/" }
}
dependencies {
classpath "gradle.plugin.com.github.konifar.gradle:plugin:0.3.3"
}
}
NOTE: If your gradle version is 2.1 and later, you can use new snippet for plugins DSL.
If you want to know more details, see plugin page.
app/build.gradle
apply plugin: "com.github.konifar.gradle.unused-resources-remover"
Run
$ ./gradlew removeUnusedResources
Advanced usage
This plugin checks some basic resource files below.
|--res
|--anim
| |--*.xml
|--animator
| |--*.xml
|--drawable*
| |--*.xml
| |--*.png
| |--*.jpg
| |--*.9.png // 9-patch
|--layout*
| |--*.xml
|--menu
| |--*.xml
|--mipmap*
| |--*.xml
| |--*.png
|--values*
|--attrs*.xml
|--bools*.xml
|--colors*.xml
|--dimens*.xml
|--floats*.xml
|--ids*.xml
|--integers*.xml
|--strings*.xml
|--styles*.xml
|--themes*.xml
If you want to check other files, you can add custom remover settings in app/build.gradle
.
Here is two example.
fonts.xml
(actually same format with strings.xml)text_appearance.xml
(actually same format with styles.xml)
unusedResourcesRemover {
extraRemovers = [
createXmlValueRemover("fonts", "string", "string"), // fonts.xml
createXmlValueRemover("text_appearance", "style", "style", "style") // text_appearance.xml
]
...
}
There are other optional configuration below
unusedResourcesRemover {
...
// Write file or directory names
excludeNames = [
"strings.xml", // strings.xml is never checked
"res/drawable" // drawable* dirs are never checked
]
// When dryRun option is true, unused files are not removed.
dryRun = true // default false
}
To know more, See UnusedResourcesRemoverExtension
Contributing
This project is under development.
I'm always welcome your contribution! Feel free to report Issue or send Pull Request!
Project structure
plugin/ - The main module of Gradle plugin
example/ - An example android project that uses this plugin
example-module/ - An example module that are used in example
Download repository
$ git clone [email protected]:konifar/gradle-unused-resources-remover-plugin.git
$ cd gradle-unused-resources-remover-plugin
Edit build.gradle
dependencies {
classpath 'com.android.tools.build:gradle:3.1.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
+// classpath "gradle.plugin.com.github.konifar.gradle:plugin:0.3.3"
- classpath "gradle.plugin.com.github.konifar.gradle:plugin:0.3.3"
// For mavenLocal
+ classpath 'com.github.konifar.gradle:unused-resources-remover:0.3.3'
-// classpath 'com.github.konifar.gradle:unused-resources-remover:0.3.3'
}
Install to local maven
$ cd plugin
$ ./../gradlew assemble install
Run example
$ cd example
$ ./../gradlew removeUnusedResources
...
$ > Task :example:removeUnusedResources
$ extraRemovers:
$ fileType: font, resourceName: string, type: DEFAULT
$ fileType: text_appearance, resourceName: style, type: STYLE
$ excludeNames:
$ fonts.xml
$ dryRun: false
$ [layout] ======== Start layout checking ========
$ [layout] example
$ [layout] Remove unused_layout.xml
$ [layout] Complete to remove files.
$ [layout] example-module
$ [layout] No unused layout files.
$ [layout] plugin
...