作為一個單工程擼到底的開發(fā)人員,想試著將項目進行組件化改造,說動就動。畢竟技術都是寫出來的,看著文章感覺懂了,但是實際開發(fā)中還是能遇到各種各樣的問題,開始搞起來。
為市中等地區(qū)用戶提供了全套網(wǎng)頁設計制作服務,及市中網(wǎng)站建設行業(yè)解決方案。主營業(yè)務為成都網(wǎng)站制作、成都網(wǎng)站建設、市中網(wǎng)站設計,以傳統(tǒng)方式定制建設網(wǎng)站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
一直使用單工程擼到底,項目越來越大導致出現(xiàn)了不少的問題:
將 一個程序按照其功能做拆分,分成相互獨立的模塊 ,以便于每個模塊只包含與其功能相關的內(nèi)容,比如 登錄模塊 、 首頁模塊 等等。
組件指的是單一的功能組件,如 登錄組件 、 視頻組件 、 支付組件 等,每個組件都可以以一個單獨的 module 開發(fā),并且可以單獨抽出來作為 SDK 對外發(fā)布使用。可以說往往一個模塊包含了一個或多個組件。
組件化基于可重用的目的,將應用拆分成多個獨立組件,以 減少耦合 :
組件依賴關系是上層依賴下層,修改頻率是上層高于下層。先上一張圖:
基礎公共模塊,最底層的庫:
這只是個大概,并不是說必須這樣,可以按照自己的方式來。比如:你覺得基礎組件比較多導致project里面的項目太多,那么你可以創(chuàng)建一個lib_base,然在lib_base里面再創(chuàng)建其他基礎組件即可。
這樣盡可能的減少變動項,當然這僅僅是個建議,看個人習慣吧。
因為咱們創(chuàng)建的是一個module,所以在AndridManifest中添加android:exported="true"屬性可直接構建一個APK。下面咱們看看如何生成不同的工程類型。
在 AndroidStudio 開發(fā) Android 項目時,使用的是 Gradle 來構建,具體來說使用的是 Android Gradle 插件來構建,Android Gradle 中提供了三種插件,在開發(fā)中可以通過配置不同的插件來構建不同的工程。
獨立調試 :設置為 Application 插件。
集成調試 :設置為 Library 插件。
isDebug = true 獨立調試
根據(jù)上面動態(tài)配制插件的經(jīng)驗,我們也需要在build.gradle中動態(tài)配制ApplicationId 和 AndroidManifest 文件。
有什么不同?咱們一起看看具體內(nèi)容。
isDebug = true
isDebug = false
當我們需要進行插件版本、依賴庫版本升級時,項目多的話改起來很麻煩,這時就需要我們對Gradle配置統(tǒng)一管理。如下:
具體內(nèi)容
Android 中的界面跳轉那是相當簡單,但是在組件化開發(fā)中,由于不同組件式?jīng)]有相互依賴的,所以不可以直接訪問彼此的類,這時候就沒辦法通過顯式的方式實現(xiàn)了。
所以在這里咱們采取更加靈活的一種方式,使用 Alibaba 開源的 ARouter 來實現(xiàn)。
文檔介紹的蠻詳細的,感興趣的可以自己實踐一下。這里做個簡單的使用。
先在統(tǒng)一的 config.gradl e添加版本等信息
因為所有的功能組件和業(yè)務組件都依賴lib_common,那么咱們先從lib_common開始配制
lib_common
其他組件(如collect)
你要跳轉的 Activity
這里是用 module_main 的HomeFragment跳轉至 module_collect 的CollectActivity界面,兩個module中不存在依賴關系。 "/collect/CollectActivity" 在上面已注冊就不多描述了。
效果如下:
這里是用 module_main 的MineFragment的Adapter跳轉至 module_webview 的WebViewActivity界面,兩個module中同樣不存在依賴關系。
啟動方
這里傳了兩個參數(shù) url 和 name 到WebViewActivity,下面咱們看看WebViewActivity怎么接收。
接收方
上效果圖:
搞定,更多高級玩法可自行探索。
W/ARouter::: ARouter::There is no route match the path
這里出現(xiàn)個小問題,配置注釋都好好的,但是發(fā)送發(fā)無論如何都找不到設置好的Activity。嘗試方案:
后來修改Activity名稱好了。
界面跳轉搞定了,那么數(shù)據(jù)傳遞怎么辦,我在module_main中使用懸浮窗,但是需要判斷這個用戶是否已登錄,再執(zhí)行后續(xù)邏輯,這個要怎么辦?這里我們可以采用 接口 + ARouter 的方式來解決。
在這里可以添加一個 componentbase 模塊, 這個模塊被所有的組件依賴 。
這里我們通過 module_main組件 中調用 module_login組件 中的方法來獲取登錄狀態(tài)這個場景來演示。
lib_common
所有業(yè)務組件和功能組件都依賴lib_common,所以咱們直接在lib_common添加依賴即可
module_login
實現(xiàn)接口
運行結果:
本文介紹了組件化、組件分層、解決了組件的獨立調試、集成調試、頁面跳轉、組件通信等。
其實會了這些后你基本可以搭建自己的組件化項目了。其實最大的問題還是分組分層、組件劃分。這個就需要根據(jù)你的實際情況來設置。
本項目比較糙,后面會慢慢完善。比如添加Gilde、添加MMVK、添加Room等。
項目傳送門
第一步,先打開eclipse。打開后的界面如如圖所示,學過java的人肯定都熟悉這個編程環(huán)境,沒學過java的請先去學習java,因為android使用的是java的語法。
點擊左上角的filenewandroid application project , 以此開始新建一個android項目。
點擊新建后悔出現(xiàn)如下所示的窗口。第一個紅框是讓你寫你應用的名字,就是軟件的名字;第二個紅框是寫這個項目的名字;第三個紅框是寫java代碼包的名字。第四個大的紅框是讓你選擇你要新建的android項目的一些信息,開發(fā)的sdk版本和面向的android版本和使用的主題。完成后,點擊NEXT。
這個窗口是在詢問你是不是創(chuàng)建一個自定義圖標的軟件,是否要創(chuàng)建activity等。完成后,點擊NEXT
這個窗口允許你更換你軟件的圖標。和其它的一些信息。完成后,點擊NEXT
這個窗口讓你選擇一種你軟件activity要使用的樣式。完成后,點擊NEXT
這個窗口讓你輸入你想要的activity的名字和你想要的layout的名字。完成后,點擊NEXT
好了一切設置好惦記finish后悔出現(xiàn)如下所示的窗口,最左側是你項目的分層結構等信息,左上角大部分顯示的是軟件當前默認的layout和操作layout的工具欄等。到此為止,你已經(jīng)成功的創(chuàng)建了一個android項目。
工具/材料
電腦
android studio
01
從網(wǎng)上下載并安裝Android Studio然后打開它。現(xiàn)在,你準備好開始你的第一個Android應用程序!
首先是這個android項目的項目名,在這里進行輸入即可
注意,這里我們使用的android studio的版本為2.2
一直下一步,等待一定的時間,這取決于你機器的配置,android studio最為谷歌官方唯一指定的android項目開發(fā)ide,具有超高度的功能集合性,同時后面我們會看到android studio采用和eclipse不同的編譯方式,即Gradle編譯,以及采用云資源模式(服務器全在海外,部分功能需要翻墻才能使用,醉了),所以,不要對其卡慢抱有不滿情緒.
02
選擇對應的android sdk版本,android像ios一樣,也有很多分類版本了,從低到高,還有像android wear(手表), android TV(電視),android auto(車載)等各種版本,選擇你要將這個項目跑到什么設備上邊去,以及系統(tǒng)的版本,這里我們選擇android手機項目,版本可以選擇4.0,目前4.0基本就是最低版本,當然微信,qq,支付寶之類的都是一直支持到2.3版本的
03
這里是android項目的布局文件,目前因為我們這個項目只有一個主窗口,這個布局文件就是屬于主窗口的,這里記錄的這個窗口中有哪些控件,以及這些控件的位置和排列模式,像TextView就是一個文本控件,而RelativeLayout則是布局控件,用于控制控件的布局。
04
這就是穿著中的gradle編譯的編譯配置文件了,里面包含了編譯中的各種配置選項,對于從eclipse中轉過來的人來說,要搞懂這里的各種配置可是要費不少腦子的哈!
05
這是android項目的清單文件,這里包含了這個應用程序的圖標設置,以及activity等,activity是android四大組件之一,可以直觀理解為我們看到的一個個的窗體,凡是需要顯示出來的activity,都需要在這里注冊寫明
06
這里是窗口的java主類,android的主要編程語言是java語言,當然也有支持c++編程的ndk,以及現(xiàn)在很火的前端腳本編寫android項目的方法,這個類表示主窗口,OnCreat()方法會在這個界面被啟動的時候執(zhí)行。
07
點擊這里即可運行這個由系統(tǒng)為我們編寫好android項目了,沒錯,這已經(jīng)是一個完成的android項目,只是比較簡單而已,但主要部件都不少。
08
我們啟動的應用就是跑在這里的模擬器當中的,我們可以創(chuàng)建自己的模擬器,自由的對模擬器的配置進行自定義,包括模擬器的系統(tǒng)版本
09
完美,我們的第一個應用程序已經(jīng)跑起來了,雖然只是顯示了一個Hello World文本,不過怎們樣都算完成了一個android應用程序,后續(xù)只要對其進行打包簽名,混淆加密后即可發(fā)布到應用市場供別人下載使用.
網(wǎng)頁名稱:android開發(fā)的項目,android開發(fā)項目實戰(zhàn)
網(wǎng)頁網(wǎng)址:http://www.chinadenli.net/article38/dssoppp.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供微信公眾號、品牌網(wǎng)站制作、網(wǎng)站制作、微信小程序、網(wǎng)站維護、外貿(mào)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)