美團(tuán)Robust提供的的依賴只能應(yīng)用在APP項目中,SDK項目要使用Robust必須簡單的修改一下源碼才能使用。在修改源碼前我們需要到github上去下載Robus的源碼https://github.com/Meituan-Dianping/Robust。然后按照我之前寫的《Robust熱更應(yīng)用在APP項目》這篇文章上的步驟配置后robust的配置。一切準(zhǔn)備就緒后就開始準(zhǔn)備改了。。。。
配置好之后的目錄結(jié)構(gòu)是這樣的。。。
mylibrary是新建的sdk項目

引用gradle插件項目需要將gradle發(fā)布到本地倉庫,也就是需要在本地搭建一個maven倉庫。具體搭建方法網(wǎng)上有很多博客,這里就不列出來了。
//設(shè)置maven deployer
uploadArchives {
repositories {
mavenDeployer {
//設(shè)置插件的GAV參數(shù)
pom.groupId = 'com.xy.plugin'
//pom.artifactId = 'cooker-plugin'
pom.version = 1.6
//文件發(fā)布到下面目錄
repository(url: uri('D:/release'))
}
}
}
我是將groupId設(shè)置為“com.xy.plugin”,所以在全局的build.gradle中使用本地倉庫里面的robust就需要如下配置
dependencies {
classpath 'com.android.tools.build:gradle:2.1.0'
classpath 'com.xy.plugin:gradle-plugin:1.6'
classpath 'com.xy.plugin:auto-patch-plugin:1.6'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3'
classpath 'me.tatarka:gradle-retrolambda:3.2.0'
classpath 'me.tatarka.retrolambda.projectlombok:lombok.ast:0.2.3.a2'
}
其余配置和應(yīng)用到app項目是一樣的。
配置好mylibrary后編譯項目會遇到如下問題,不要緊張,我們根據(jù)問題來修改源碼。

上圖中的問題是找不到屬性“applicationVariants”,因為我們是library項目,所以application相關(guān)的屬性是沒有的,所以搜索一下applicationVariants,將改為libraryVariants

改好之后編譯一下,咦,還是報一樣的錯誤,那是因為我們引用的是本地倉庫的代碼,所以發(fā)布一下再編譯就好了,發(fā)布之前記得mylibrary項目先不要引用robust項目,要不然uploadArchives時候還是會報錯的。
項目發(fā)布之后再次編譯,這次錯誤換了一個。。。

這個錯誤信息還是告訴我們某某某不能應(yīng)用到library項目
我們先了解一下scopes
scopes:transform 的作用域
| type | des |
|---|---|
| PROJECT | 只處理當(dāng)前項目 |
| SUB_PROJECTS | 只處理子項目 |
| PROJECT_LOCAL_DEPS | 只處理當(dāng)前項目的本地依賴,例如jar, aar |
| EXTERNAL_LIBRARIES | 只處理外部的依賴庫 |
| PROVIDED_ONLY | 只處理本地或遠(yuǎn)程以provided形式引入的依賴庫 |
| TESTED_CODE | 測試代碼 |
也就是說我們現(xiàn)在需要修改一下transform 的作用域,那我們找到robust的transform,是在RobustTransform.groovy

我們需要將SCOPE_FULL_PROJECT修改一下,但是怎么改呢,先點進(jìn)去看一下源碼

源碼定義了SCOPE_FULL_PROJECT和SCOPE_FULL_LIBRARY,看名字毫無疑問改為SCOPE_FULL_LIBRARY。
然后再發(fā)布到本地倉庫,編譯一下
apk和補(bǔ)丁都編譯成功。。。。
測試一下也能成功應(yīng)用補(bǔ)丁
Demo項目代碼已經(jīng)上傳到github https://github.com/xyAndroid/RobustDemo

