Robust熱更應(yīng)用在SDK項目

美團(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項目


image.png

引用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ù)問題來修改源碼。


image.png

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


image.png

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

這個錯誤信息還是告訴我們某某某不能應(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

image.png

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

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

image.png

image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,725評論 25 709
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,502評論 19 139
  • 用到的組件 1、通過CocoaPods安裝 2、第三方類庫安裝 3、第三方服務(wù) 友盟社會化分享組件 友盟用戶反饋 ...
    SunnyLeong閱讀 15,139評論 1 180
  • 沙汀《在其香居茶館里》 從刑幺吵吵和主任打架開始,我就一直笑到末篇,其實如果僅看人物對話而忽視角色身份,這篇特別像...
    王家人寧閱讀 1,506評論 0 0
  • LOL是近年來迅速興起的一款團(tuán)隊5v5的競技游戲,其中不乏一些電競BB機(jī),當(dāng)你遇到他們卻無力反駁之時,想起我今日言...
    蘇北陳陽閱讀 227評論 0 0

友情鏈接更多精彩內(nèi)容