記錄Android組件化及遇到的問題

去年看了積木的Android組件化方案,也按照他的方案寫了demo,但是始終理解不透,最近有時間,又使用ARouter重新做了一個組件化demo,這篇文章主要記錄在做組件化demo時遇到的問題,demo鏈接在文章最后

首先我參考了下面組件化的鏈接,做了一個基礎的demo,能夠實現組件的獨立運行,集成運行,以及通過ARouter進行跳轉和傳遞參數

組件化參考鏈接:https://blog.csdn.net/u010302765/article/details/101015212
ARouter使用詳解:https://blog.csdn.net/feather_wch/article/details/81605300

1:baselibrary

有了這個基礎demo之后,我開始根據自己的想法進行改進,首先我創建了一個基礎的library,用來放一些公共的依賴,工具類,以及BaseActivity等,以后會在基礎模塊中加入mvp的基類,方便每個moudle都做成mvp架構,這里需要注意的是:每個moudle都需要添加基礎模塊作為依賴,無論這個moudle是獨立運行還是集成運行.

2:baselibrary的依賴問題

基礎組件中的依賴jar包,不能使用implementation,要使用api,比如Gson: api 'com.google.code.gson:gson:2.8.2'

3:butterknife的使用

在使用butterknife時,我直接在baselibrary中添加了butterknife的依賴,然后在主APP中使用沒問題,但是到了作為library運行的功能moudle中,就報了很多人遇到的錯,具體的報錯及解決方案如鏈接所示:http://www.lxweimin.com/p/a7c94907baaf,這里需要注意的一點,也是我浪費了很多時間的一點,就是某個moudle單獨運行時,butterknife找控件需要用R,作為library運行時,則需要用R2,因此一定要在moudle的build.gradle中加入以下代碼,否則moudle單獨運行時不能識別R2,我就是卡在了單獨運行時不能識別R2這里
annotationProcessor "com.jakewharton:butterknife-compiler:$butterknife_version"

在library中做點擊事件時,不能使用swich-case,而要使用if else,butterknife綁定控件時用的是R2,但是點擊事件這里要用R

@Override
    public void onClick(View v)
    {
        if (v.getId() == R.id.tv_close)
        {
            finishForresult();
        }
    }

4:主APP和各個moudle之間的通訊

經測試,在集成運行時,可以采用RxBus來傳遞消息,RxBus是從RxJava中衍生出來的,功能類似于EventBus

5:統一管理Module版本號

參考鏈接:https://blog.csdn.net/gao_chun/article/details/58105089

6:多個Module的Application共存問題

參考鏈接:http://www.lxweimin.com/p/5ccc545596d4

7:運行后手機上出現多個icon

注意點:所有可能成為library的組件,都要改集成運行時的清單文件,否則還是會出問題
參考鏈接:https://blog.csdn.net/u010899138/article/details/53516400

8:如何所有組件都可以使用全局上下文,參考鏈接中的3.3

參考鏈接: https://www.cnblogs.com/ldq2016/p/9073105.html

9:組件生命周期問題,可以結合6中的反射方法,在主APP中進行動態設置

參考鏈接: http://www.lxweimin.com/p/aa17cf4b2dca

10:ARouter如何自動生成路由地址表,這個問題暫時還沒有答案.

最后附上demo下載地址:
https://github.com/gongchenghao/zujianhuademo2.git

贈人玫瑰,手留余香,多謝點贊和star

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。