1. 程式人生 > >使用AndroidStudio自定義Gradle外掛

使用AndroidStudio自定義Gradle外掛

1.概述

目標:編寫一個Gradle外掛,學習自定義Gradle外掛。
功能:利用lint自動刪除無用資源。
實現思路:先執行lint任務,通過解析生成的xml檔案,找到id為UnusedResources的檔案路徑,並遍歷刪除,輸出日誌。
開發工具:Android Studio 2.4。

2.內容

2.1新建一個工程,再新建一個Module作為外掛模組,刪除裡面所有檔案,新建src/main/groovy資料夾,留下build.gradle,目錄如下:
目錄結構

因為是基於groovy開發,所有程式碼檔案要以.groovy結尾

2.2配置build.gradle
build配置
加入該外掛依賴的庫,設定group和version,使用maven倉庫,這裡配置了上傳到本地資料夾

2.3新建CleanTask.groovy,自定義Task
task
必須要繼承DefautTask,並使用@TaskAction來定義Task的入口函式

2.4新建PluginExtension.groovy,引入外部引數
此處輸入圖片的描述

2.5新建CleanResPlugin.groovy,定義外掛入口
plugin

2.6宣告我是一個Gradle外掛,定義外掛id
end
main資料夾下新建resources/META-INF/gradle-plugins目錄,再新建me.denghui.cleaner.properties檔案,這裡me.denghui.cleaner作為id,應用到project時要使用。裡面的內容指向外掛入口

2.7編譯並上傳到本地
此處輸入圖片的描述
開啟右側Task列表,雙擊執行uploadArchives

2.8檢視本地倉庫
此處輸入圖片的描述

2.9使用該外掛時的小插曲
此處輸入圖片的描述
配置完後,報找不到外掛,原因是在定義CleanResPlugin.groovy,沒有加入包名,需要加入,該目錄下每個groovy檔案都要加入這句

package me.denghui.gradle

2.10重新編譯並上傳,就可以引入使用了
在根目錄的build.gradle配置

buildscript {
    repositories {
        maven {
            url 'file:///Users/Allen/repos/'
}
jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.2.0' classpath 'me.denghui.gradle:plugin:1.0.0' } }

在工程app的build.gradle配置

apply plugin: 'com.android.application'
apply plugin: 'me.denghui.cleaner'

android {
    // ...
}

// ...

lintCleaner {
    lintXmlPath "${buildDir}/outputs/lint-results-debug.xml"
    outputPath "${buildDir}/outputs/lintlog.txt"
}

2.11加入幾張無用的資源,命令列執行 ./gradlew cleanUnusedRes 或者在右側Gradle的Tasks中找到並雙擊執行
此處輸入圖片的描述

2.12檢視log和結果
此處輸入圖片的描述
我們發現刪除了無用的資源!外掛開發完成~

3.小結

相關推薦

使用AndroidStudio定義Gradle外掛

1.概述 目標:編寫一個Gradle外掛,學習自定義Gradle外掛。 功能:利用lint自動刪除無用資源。 實現思路:先執行lint任務,通過解析生成的xml檔案,找到id為UnusedResources的檔案路徑,並遍歷刪除,輸出日誌。 開發工具:Andr

AndroidStudio定義gradle外掛:無需釋出,僅用於當前專案

最近由於工作需要,想要做個gradle外掛輔助一下,各種難易程度的講解文章也看了不少,腦子裡的資訊比較亂,在這抽個時間整理一下。 因為是最近剛接觸gradle外掛的製作,剛開始除錯的時候構造的是可釋出的外掛模組,每次修改都得重新發布到本地,麻煩死了~ 在這裡提供一個免釋出

定義 Gradle 外掛學習記錄

參考:https://juejin.im/entry/577bc26e165abd005530ead8 ## 建立Model 1.在Android studio 中建立Model,切換到project模式; 2.刪除model下的除build.gradle檔案和src/main目錄以

定義Gradle外掛(一)

Google已經建議Android開發全部轉向Android Studio開發,Android Studio 是使用gradle編譯、打包的,那麼問題來了,gradle可是有一堆東西...,為了測底瞭解gradle,今天就來學習下如何寫自己的gradle外掛(當然外掛原

安卓開發通過定義Gradle外掛實現自動化埋點

一 埋點現狀: 公司APP在實際開發中埋點是一個很碎片化的問題,我總結了以下幾點: 1.變化快,埋點文件經常變化,開發人員不得不修改程式碼,造成了一定的風險 2.頁面埋點之前是通過把握Activity和Fragment的生命週期實現大部分的統一配置,但是這裡面又牽扯到 Fr

定義gradle外掛從入門到放棄

       最近參與基礎架構組的crashly收集專案,其中一個環節就是收集專案中使用到的公司內部的依賴庫和混淆後的mapping檔案, 然後呼叫python檔案實現檔案和資料欄位的上傳。請求網路上傳資料這塊python使用的程式碼量非常少就幾行程式碼的事情,所以我在專案中

Android如何定義Gradle外掛

Android-如何自定義gradle外掛 自定義gradle外掛可以實現定製自己的構建流程,以達到複用目的; 1. 自定義外掛方式 自定義外掛有三種方式 新增腳步 在你的app專案的build.gradle中直接使用groovy腳步語言編寫外掛

定義Gradle外掛(二)

上一篇部落格已經介紹瞭如何實現簡單的自定義gradle外掛,今天介紹如何自定義Task。 一、自定義Task          1、直接沿用上一篇的程式碼,copy一份改名CustomPluginTask          在plugin\src\main\groov

定義Gradle外掛和AspectJ實戰

生成gradle外掛步驟 create new Module select Android Library 把生成的module(例如:plugin)裡面的東西都刪除(除了build.gradle,但是要被gradle裡面的所有內容刪除) 在plugin

為Android Studio編寫定義Gradle外掛的教程

Google已經建議Android開發全部轉向Android Studio開發,Android Studio 是使用gradle編譯、打包的,那麼問題來了,gradle可是有一堆東西...,為了徹底瞭解gradle,今天就來學習下如何寫自己的gradle外掛(當然外掛原始碼是使用groovy寫的),先看如下

通過定義Gradle外掛修改編譯後的class檔案

或許你會覺得沒有必要這樣做,可是有一種應用場景就是,為每個編譯後的class檔案新增一行程式碼。比如:在每個Java類的建構函式中加一句System.out.println("I Love HuaChao!");(PS:莫吐槽~,莫嘲笑~),如果你每次建

Fiddler開發實踐之定義匯出外掛

一、準備工作 1.安裝fiddler4; 2.vs2010以上(下方演示截圖都是基於vs2015的); 3.開啟fiddler debug相關功能; 在下圖位置輸入如下內容: 顯示錯誤和異常資訊: prefs set fiddler.debug.extensions.showerro

定義jquery外掛

開發自定義Jquery外掛 這幾年隨著各種前端框架的出現,操作DOM被更多的封裝起來,有些專案你甚至可以完全拋開jquery進行開發,但不可否認的是,jquery多年來作為前端工程師的必備基本功夫有其不可替代的作用,即使你不用jquery,你也應該掌握他: 大多數專案依然在採用jquery,雖然不作

AndroidStudio定義包名

在你的app/build.gradle下面新增 打包時間 (可選) static def releaseTime() { return new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("UTC")) } 在你的app

定義gradle,讓程式碼更簡潔,讓簽名更安全

文章目錄 rootproject下自定義gradle檔案(config.gradle) gradle.properties中設定簽名信息 app下的module中的build.gradle引入依賴 AndroidStudio3.0以

Vue 定義一個外掛的用法及案例

1.開發外掛 install有兩個引數,第一個是Vue構造器,第二個引數是一個可選的選項物件   MyPlugin.install = function (Vue, options) {   // 1. 新增全域

定義 gradle plugin,教你如何 hook 系統 task 和位元組碼

一、開源背景 大家在自己寫 library 的時候估計也遇到過這種困惑:一個 library 中的某個類中有些方法或類只想給該 library 中的類使用,並不想暴露出去,但是由於專案的包的層級關係,不得不把方法寫為 public ,導致暴露給了外界!!! 當時這個問題確實困惑了我一段時間,總不

定義nodelet外掛

參考連結: http://wiki.ros.org/nodelet http://wiki.ros.org/nodelet/Tutorials/Running a nodelet http://wiki.ros.org/nodelet/Tutorials/Porting nodes to n

AndroidStudio定義註釋 Edit variables不可點選灰色

1,自定義註釋  1.1,Androidstudio 選單欄點選FIle —> Settings —> Editor找到Live Templates             1.2,點選上圖中的右邊的 + 號選擇Template Group,建立一個Templ

關於nagios系統下使用shell指令碼定義監控外掛的編寫以及沒有實時監控圖的問題

關於nagios系統下shell自定義監控外掛的編寫、指令碼規範以及沒有實時監控圖的問題的解決辦法 在自已編寫監控外掛之前我們首先需要對nagios監控原理有一定的瞭解 Nagios的功能是監控服務和主機,但是他自身並不包括這部分功能,所有的監控、檢測功能都是通過各種外掛來完成的。 啟動Nagios後,