第3章 組件聲明式編程 仿微信".api"化

今天終于方案研究出來了,雙擊666

導(dǎo)航

第3章 組件聲明式編程 仿微信".api"化(上)
第3章 仿微信".api"化 實(shí)現(xiàn)原理(下)

1、背景

微信Android模塊化架構(gòu)重構(gòu)實(shí)踐,在騰訊文章中提到“.api”解決方案
原文介紹位置,建議讀此文讀者反復(fù)讀這個位置

--重塑模塊化
    --改變通信方式
        --接口暴露

難點(diǎn):技術(shù)難點(diǎn)卡在如何創(chuàng)造這兩個函數(shù)上來支持這個功能

include_with_api(project:":plugin-messenger-foundation")//初始化項目
dependencies{
      compileApi(":plugin-messenger-foundation")//引入項目依賴
}

“.api”化的功能,強(qiáng)大在于,在編譯的時候,子組件將公用接口下沉到基礎(chǔ)庫,供其他module使用,而不會導(dǎo)致base module急劇增大,分工職責(zé)更加明確化

效果==>使用效果前

使用效果后==>

其中“.api”立下承擔(dān)50%效果

2、編寫的思想

聲明式編程:將模塊中代碼拆分為“聲明+實(shí)現(xiàn)”,其他模塊只需要引用聲明即可。
微信的方案,只留了一個遐想空間“自動生成一個sdk工程,拷貝.api后綴文件到工程當(dāng)中,后面其他工程依賴編譯的只是這個生成工程,簡單好用”
解決方案是那兩個函數(shù)include_with_api,compileApi,此時感受到一萬點(diǎn)暴擊

經(jīng)過了一周的鉆研已經(jīng)攻克了,先從使用教程,再到原理分析

3使用教程

在根目錄下build.gradle

buildscript{
  dependencies {
    //本插件代碼已上傳jcenter ,下載記得翻墻
    classpath 'com.chaoliu:weixinApi:1.0.0' 
  }
    repositories {
        jcenter()
    }
}

//gradle 腳本尾部
apply plugin: 'weixinApi'

gradle.properties 聲明

##支持聲明api式編程
##引用的moudle
ApiModule=':module_api'
##是否每次都執(zhí)行 未配置此屬性 默認(rèn)為true 
isRunAlways=true

支持weixinapi腳本自動觸發(fā),且有良心提示

組名weixinapi,且有良心提示

settings.gradle 正常寫法

//api testmodule 為lib庫
include ':module_api'

若有module采用".api"方式開發(fā)
引入公共ApiModule即可

特別提供addComponent 函數(shù),只有在assemble任務(wù)才引入依賴
開發(fā)中避免本moudle引入過多其他module聲明

    //和正常開發(fā)無任何變化
    implementation project(':module_api')

    // addComponent(':module_api')

如果想編輯.api后綴的java文件,為了能讓Android Studio繼續(xù)高亮該怎么辦?可以在File Type中把.api作為java文件類型。

設(shè)置File Types
4、喜歡的朋友們記得給我的項目一個star

https://github.com/yinlingchaoliu/AndroidComponent
具體代碼位置去".api"插件
component/weixinApi

示例module
module_main ,module_girls

下一篇進(jìn)行原理分析,如何進(jìn)行操作,解決這個問題

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

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

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