安卓app開發(fā)框架搭建(安卓APP開發(fā)框架)
今天給各位分享安卓app開發(fā)框架搭建的知識,其中也會對安卓APP開發(fā)框架進行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!
怎么樣能快速搭建一個Android APP的界面和框架
自己從零開始快速搭建Android app架構(gòu)
簡單的看下這三個架構(gòu)模式:
MVC:Model-View-Controller,經(jīng)典模式,很容易理解,主要缺點有兩個:
View對Model的依賴,會導(dǎo)致View也包含了業(yè)務(wù)邏輯;
Controller會變得很厚很復(fù)雜。
MVP:Model-View-Presenter,MVC的一個演變模式,將Controller換成了Presenter,主要為了解決上述第一個缺點,將View和Model解耦,不過第二個缺點依然沒有解決。
MVVM:Model-View-ViewModel,是對MVP的一個優(yōu)化模式,采用了雙向綁定:View的變動,自動反映在ViewModel,反之亦然。
面對眾多的架構(gòu)模式你會選擇哪個?
MVC,MVP還是MVVM?
越高級的模式復(fù)雜性越高,實現(xiàn)起來也越難。然后搭建項目時也是看項目的需求,別人說好你也有要實用才好,高效的實現(xiàn)項目的功能才是最好的架構(gòu)模式。
那么,哪一個才是最好的呢?
個人覺得適合你的才是最好的,不要去盲目的跟風(fēng),大家說mvp好那你就使用咯,沒有實踐就沒有話語權(quán),所以說用哪種架構(gòu)模式本人不發(fā)表任何意見:任何模式的動機都是一樣的,那就是如何避免復(fù)雜混亂的代碼,讓執(zhí)行單元測試變得容易,創(chuàng)造高質(zhì)量應(yīng)用程序,開發(fā)維護更高效。
在實際項目中思考架構(gòu)時,也不會想著要用哪種模式,我只思考現(xiàn)階段,以現(xiàn)有的人力資源和時間資源,如何才能更快更好地完成需求,適當(dāng)考慮下如何為后期擴展或重構(gòu)做準(zhǔn)備。
我項目中的架構(gòu)
這是我上一個項目的包架構(gòu):
當(dāng)然咯,是按功能分的包,項目的功能不一樣然后分包也不一樣,但是基本大同小異。
所以確定架構(gòu)分包的時候那就按你的需求來咯。
從上面可以看出:架構(gòu)分包的時候我們包括邏輯功能和基礎(chǔ)功能(通用功能)。
基礎(chǔ)功能模塊:
日志管理系統(tǒng)(LogManager)
不管哪個項目都需要自己的一套日志管理,一是為了生產(chǎn)調(diào)試時能更加高效的查看過濾日志,二是為了打包發(fā)布的時候用開關(guān)控制日志是否打印。 ?(我的日志用的是凱子哥的:Klog)
異常處理(crashManager)
作用:當(dāng)程序遇見異常情況時我們能夠自定義異常處理,二是程序?qū)Σ煌臋C型有不同的反應(yīng),那么測試時候可能沒有發(fā)現(xiàn)但是我們可以把捕獲的crash上傳到服務(wù)器,便于異常收集和bug修復(fù)。
utils(工具類)
根據(jù)你的項目需求來合理定制你的工具類,將會對你的項目開發(fā)速度有很大的提升(反饋,版本校驗更新你肯定能夠用到)
看下我上個項目的工具類:
permission(權(quán)限管理系統(tǒng))
這功能是絕對項目中需要的,別告訴我你的項目還沒有適配安卓6.0,適配了就肯定會有權(quán)限管理,我這里用的是 安卓6.0權(quán)限處理在項目中的實踐,也還可以吧,反正github上的權(quán)限管理的開源東西比較多,覺得合適就ok。
哈哈,這樣基礎(chǔ)功能都搭建好了,然后就是一些邏輯功能的封裝了。
原生安卓開發(fā)app的框架frida安裝和Python小試牛刀
本教程只用于學(xué)習(xí)探討,不允許任何人使用技術(shù)進行違法操作,閱讀教程即表示同意!
frida是一個hook原生 安卓開發(fā)app 的一個框架,也不止安卓,像ios和win等,都支持,但是好像看到用的不太多。
注意,是原生,就是用Java+安卓開發(fā)的app。
還有些是H5之類的,這些是hook不成的,當(dāng)然,市面上最起碼80%的app都是原生開發(fā),不必?fù)?dān)心。
再說,H5開發(fā)的不是更容易破解?懂的都懂!
hook英文是鉤子的意思,可以理解為一堆水管流水,我在某個水管中間挖一個洞,操作一波再繼續(xù)流。
當(dāng)然,我也可以只看看某個水管有沒有水。
上述這個過程就叫做修改和驗證!
可以使用編寫的簡單Python環(huán)境管理器快速創(chuàng)建一個虛擬環(huán)境,可視化就是好,再也不用記該死的命令了!
相關(guān)鏈接:
這里已經(jīng)創(chuàng)建完畢,虛擬環(huán)境名為 frida_env
當(dāng)然,這是一個差不多的參考價值,不一定準(zhǔn),具體情況具體分析。
在安裝frida時,盡量科學(xué)上網(wǎng),因為frida好像會下載一些東西,不科學(xué)上網(wǎng)非常慢...可能會卡住很長時間!
根據(jù)我的環(huán)境,這是我的依賴包,在虛擬環(huán)境中pip安裝即可!
安裝完成之后,分別執(zhí)行 frida --version 和導(dǎo)入 frida ,如果沒有報錯則表示安裝成功!
frida-server下載鏈接:
綜上所述,我pip的frida版本為14.2.18,手機是arm64,所以要下載這個!
確實存在,ok。
這樣就已經(jīng)運行起來了,他是不會有提示的,是直接wait在這的!
注意啊,這個cmd窗口是不能關(guān)的,一直掛這就行!
激活上述創(chuàng)建好的虛擬環(huán)境,執(zhí)行以下命令。
如果出現(xiàn)以下信息,表示正確!這是手機的一些信息,表示能獲取到。
到這,pc端的frida和手機端的frida-server就建立成功了,主要流程就是
如果frida版本=12,好像是要進行端口轉(zhuǎn)發(fā)的
pc上配置frida沒什么好說的了,創(chuàng)建一個虛擬環(huán)境,安裝frida就好了。
手機上的話,第一次需要把frida-server拷貝到 /data/local/tmp 下和 chmod
然后運行這個frida-server,命令總結(jié)一下大概為:
下次使用直接復(fù)制就可以了!
因為frida使用的是js語言,并且需要安裝一個代碼自動提示插件,所以WebStorm最合適,官網(wǎng)下載點擊下一步下一步即可。
這里不做敘述。
嗯,還需要安裝node,自己折騰吧!
創(chuàng)建一個空項目,選擇合適的目錄。
打開項目,點擊下面的Terminal,輸入 npm i @types/frida-gum 安裝frida代碼自動提示。
這不,關(guān)于frida的代碼就能自動提示了!
題外話
通過Charles+postern進行抓包,發(fā)現(xiàn)登錄用的接口為
可以發(fā)現(xiàn)帶的數(shù)據(jù)是一個 {"Encrypt":"xxx"} ,擦,這是什么玩意啊???
這個apk是沒有加固的,通過反編譯搜索一下 user/login 試試?。?!
找到了兩處 user/login ,其中一個是login函數(shù)!
那么,現(xiàn)在問題來了,到底 user/login 走的是不是login?如何驗證?
此時點擊手機上面的登錄按鈕,然后看pc上控制臺的輸出!
確實輸出了,經(jīng)過驗證,確實是執(zhí)行了這個login。
然后你再進行一遍hook和分析即可。
下節(jié)課就來分析如何自動登錄這個app!
想要玩轉(zhuǎn)hook,大概分為以下幾步
人生沒有白走的路,加油!
如何開發(fā)Android應(yīng)用框架
在Android開發(fā)中能夠知道和使用一些好用的第三方支持,省去自己的很多時間,下面涉及到的多為經(jīng)過歷史興衰與檢驗的,江山代有人才出一代更比一代強,有些已經(jīng)被更新更好用的所取代,但也很多地方仍可圈可點不乏參考,有些依然經(jīng)典,整理出來請君一參.歡迎大家的指正,補充與交流.
1、AndBase框架
項目地址:
1.andbase中包含了大量的開發(fā)常用手段。
如網(wǎng)絡(luò)下載,多線程與線程池的管理,數(shù)據(jù)庫ORM,圖片緩存管理,圖片文件下載上傳,Http請求工具,常用工具類(字符串,日期,文件處理,圖片處理工具類等),能夠使您的應(yīng)用在團隊開發(fā)中減少冗余代碼,很大的提高了代碼的維護性與開發(fā)高效性,能很好的規(guī)避由于開發(fā)疏忽而導(dǎo)致常犯的錯誤。
2.andbase封裝了大量的常用控件。
如list分頁,下拉刷新,圖片輪播,表格,多線程下載器,側(cè)邊欄,圖片上傳,輪子選擇,圖表,Tab滑動,日歷選擇器等。
3.強大的AbActivity,您沒有理由不繼承它。
繼承它你能夠獲得一個簡單強大可設(shè)置的操作欄,以及一系列的簡單調(diào)用,如彈出框,提示框,進度框,副操作欄等。
4.提供效率較高圖片緩存管理策略,使內(nèi)存大幅度節(jié)省,利用率提高,效率提高。
程序中要管理大量的圖片資源,andbase提供簡單的方法,幾步完成下載與顯示,并支持縮放,裁剪,緩存功能。
5.封裝了大量常見工具類。
包括日期,字符,文件,圖片等各種處理函數(shù), 多而全。
6.用andbase大量減少handler的使用,而采用回調(diào)函數(shù),代碼更整潔。
handler會產(chǎn)生大量代碼,并且不好維護,andbase對handler進行了封裝。
7.簡單輕量支持注解自動建表的ORM框架(支持一/多對多的關(guān)聯(lián)操作)。
寫sql,建表,工作量大,andbase提供更傻瓜異步增刪改查工具類。
8.異步請求http框架,網(wǎng)絡(luò)請求標(biāo)準(zhǔn)化,支持文件上傳下載,get,post,進度顯示。
包含了異步與http請求的工具類,實用。
2、XUtil框架
項目地址:
主要有四大模塊:
(1) 數(shù)據(jù)庫模塊:Android中的orm框架,一行代碼就可以進行增刪改查;
支持事務(wù),默認(rèn)關(guān)閉;
可通過注解自定義表名,列名,外鍵,唯一性約束,NOT NULL約束,CHECK約束等(需要混淆的時候請注解表名和列名);
支持綁定外鍵,保存實體時外鍵關(guān)聯(lián)實體自動保存或更新;
自動加載外鍵關(guān)聯(lián)實體,支持延時加載;
支持鏈?zhǔn)奖磉_(dá)查詢,更直觀的查詢語義,參考下面的介紹或sample中的例子。
(2) 注解模塊:android中的ioc框架,完全注解方式就可以進行UI,資源和事件綁定;
新的事件綁定方式,使用混淆工具混淆后仍可正常工作;
目前支持常用的20種事件綁定,參見ViewCommonEventListener類和包com.lidroid.xutils.view.annotation.event。
(3) 網(wǎng)絡(luò)模塊:支持同步,異步方式的請求;
支持大文件上傳,上傳大文件不會oom;
支持GET,POST,PUT,MOVE,COPY,DELETE,HEAD,OPTIONS,TRACE,CONNECT請求;
下載支持301/302重定向,支持設(shè)置是否根據(jù)Content-Disposition重命名下載的文件;
返回文本內(nèi)容的請求(默認(rèn)只啟用了GET請求)支持緩存,可設(shè)置默認(rèn)過期時間和針對當(dāng)前請求的過期時間。
(4) 圖片緩存模塊:加載bitmap的時候無需考慮bitmap加載過程中出現(xiàn)的oom和android容器快速滑動時候出現(xiàn)的圖片錯位等現(xiàn)象;
支持加載網(wǎng)絡(luò)圖片和本地圖片;
內(nèi)存管理使用lru算法,更好的管理bitmap內(nèi)存;
可配置線程加載線程數(shù)量,緩存大小,緩存路徑,加載顯示動畫等...
3、ThinkAndroid框架
項目地址:
主要有以下模塊:
(1) MVC模塊:實現(xiàn)視圖與模型的分離。
(2) ioc模塊:android中的ioc模塊,完全注解方式就可以進行UI綁定、res中的資源的讀取、以及對象的初始化。
(3) 數(shù)據(jù)庫模塊:android中的orm框架,使用了線程池對sqlite進行操作。
(4) http模塊:通過httpclient進行封裝http數(shù)據(jù)請求,支持異步及同步方式加載。
(5) 緩存模塊:通過簡單的配置及設(shè)計可以很好的實現(xiàn)緩存,對緩存可以隨意的配置
(6) 圖片緩存模塊:imageview加載圖片的時候無需考慮圖片加載過程中出現(xiàn)的oom和android容器快速滑動時候出現(xiàn)的圖片錯位等現(xiàn)象。
(7) 配置器模塊:可以對簡易的實現(xiàn)配對配置的操作,目前配置文件可以支持Preference、Properties對配置進行存取。
(8) 日志打印模塊:可以較快的輕易的是實現(xiàn)日志打印,支持日志打印的擴展,目前支持對sdcard寫入本地打印、以及控制臺打印
(9) 下載器模塊:可以簡單的實現(xiàn)多線程下載、后臺下載、斷點續(xù)傳、對下載進行控制、如開始、暫停、刪除等等。
(10) 網(wǎng)絡(luò)狀態(tài)檢測模塊:當(dāng)網(wǎng)絡(luò)狀態(tài)改變時,對其進行檢
4、LoonAndroid
項目地址:
主要有以下模塊:
(1) 自動注入框架(只需要繼承框架內(nèi)的application既可)
(2) 圖片加載框架(多重緩存,自動回收,最大限度保證內(nèi)存的安全性)
(3) 網(wǎng)絡(luò)請求模塊(繼承了基本上現(xiàn)在所有的http請求)
(4) eventbus(集成一個開源的框架)
(5) 驗證框架(集成開源框架)
(6) json解析(支持解析成集合或者對象)
(7) 數(shù)據(jù)庫(不知道是哪位寫的 忘記了)
(8) 多線程斷點下載(自動判斷是否支持多線程,判斷是否是重定向)
(9) 自動更新模塊
(10) 一系列工具類
5、volley
項目地址 :
(1) JSON,圖像等的異步下載;
(2) 網(wǎng)絡(luò)請求的排序(scheduling)
(3) 網(wǎng)絡(luò)請求的優(yōu)先級處理
(4) 緩存
(5) 多級別取消請求
(6) 和Activity和生命周期的聯(lián)動(Activity結(jié)束時同時取消所有網(wǎng)絡(luò)請求)
6、android-async-http
項目地址:
文檔介紹:
(1) 在匿名回調(diào)中處理請求結(jié)果
(2) 在UI線程外進行http請求
(3) 文件斷點上傳
(4) 智能重試
(5) 默認(rèn)gzip壓縮
(6) 支持解析成Json格式
(7) 可將Cookies持久化到SharedPreferences
7、Afinal框架
項目地址:
主要有四大模塊:
(1) 數(shù)據(jù)庫模塊:android中的orm框架,使用了線程池對sqlite進行操作。
(2) 注解模塊:android中的ioc框架,完全注解方式就可以進行UI綁定和事件綁定。無需findViewById和setClickListener等。
(3) 網(wǎng)絡(luò)模塊:通過httpclient進行封裝http數(shù)據(jù)請求,支持ajax方式加載,支持下載、上傳文件功能。
(4) 圖片緩存模塊:通過FinalBitmap,imageview加載bitmap的時候無需考慮bitmap加載過程中出現(xiàn)的oom和android容器快速滑動時候出現(xiàn)的圖片錯位等現(xiàn)象。
FinalBitmap可以配置線程加載線程數(shù)量,緩存大小,緩存路徑,加載顯示動畫等。FinalBitmap的內(nèi)存管理使用lru算法,
沒有使用弱引用(android2.3以后google已經(jīng)不建議使用弱引用,android2.3后強行回收軟引用和弱引用,詳情查看android官方文檔),
更好的管理bitmap內(nèi)存。FinalBitmap可以自定義下載器,用來擴展其他協(xié)議顯示網(wǎng)絡(luò)圖片,比如ftp等。同時可以自定義bitmap顯示器,
在imageview顯示圖片的時候播放動畫等(默認(rèn)是漸變動畫顯示)。
總結(jié)框架結(jié)構(gòu),
ImageLoader框架(第8大框架)
UniversalImageLoader是用于加載圖片的一個開源項目,在其項目介紹中是這么寫的,
支持多線程圖片加載
提供豐富的細(xì)節(jié)配置,比如線程池大小,HTPP請求項,內(nèi)存和磁盤緩存,圖片顯示時的參數(shù)配置等等;
提供雙緩存
支持加載過程的監(jiān)聽;
提供圖片的個性化顯示配置接口;
Widget支持(這個,個人覺得沒必要寫進來,不過尊重原文)
其他類似的項目也有很多,但這個作為github上著名的開源項目被廣泛使用。第三方的包雖然好用省力,可以有效避免重復(fù)造輪子,但是卻隱藏了一些開發(fā)上的細(xì)節(jié),如果不關(guān)注其內(nèi)部實現(xiàn),那么將不利于開發(fā)人員掌握核心技術(shù),當(dāng)然也談不上更好的使用它,計劃分析項目的集成使用和低層實現(xiàn)。
開源框架android-async-http(第9大框架)
官網(wǎng):
Android-async-http開源框架可以是我們輕松的獲取網(wǎng)絡(luò)數(shù)據(jù)或者向服務(wù)器發(fā)送數(shù)據(jù),使用起來也簡單,詳細(xì)請看官網(wǎng):
到官網(wǎng)下載zip包,解壓,里面有完整的代碼和各種版本的jar包和demo,源碼在library里面,jar包在releases里面。項目更新速度很快,老版本的回調(diào)是一個普通類,最新版是一個接口。
KJFrameForAndroid框架(第10大框架)
參考:
KJFrameForAndroid是一款基于Android的ORM和 IOC應(yīng)用開發(fā)框架,封裝了很多Android開發(fā)中常用的功能,包括Android中對Bitmap的操作類庫。KJFrameForAndroid的設(shè)計非常精簡,利用KJFrameForAndroid,我們可以用最少的代碼完成很多豐富的Android功能應(yīng)用,為Android開發(fā)者節(jié)省許多不必要的開發(fā)時間。
KJFrameForAndroid總共分為五大模塊:UILibrary,UtilsLibrary,HttpLibrary,BitmapLibrary,DBLibrary。
Android-async-http開源框架可以是我們輕松的獲取網(wǎng)絡(luò)數(shù)據(jù)或者向服務(wù)器發(fā)送數(shù)據(jù),使用起來也簡單,詳細(xì)請看官網(wǎng):
到官網(wǎng)下載zip包,解壓,里面有完整的代碼和各種版本的jar包和demo,源碼在library里面,jar包在releases里面。項目更新速度很快,老版本的回調(diào)是一個普通類,最新版是一個接口。
怎樣搭建一個android開發(fā)框架
搭建Android開發(fā)環(huán)境
準(zhǔn)備工作:下載Eclipse、JDK、Android SDK、ADT插件
下載地址:Eclipse:
JDK:
Android SDK:
ADT:
1、安裝和配置JAVA開發(fā)環(huán)境:
①把準(zhǔn)備好的Eclipse和JDK安裝到本機上(最好安裝在全英文路徑下),并給JDK配置環(huán)境變量,其中JDK的變量值為JDK安裝路徑的根目錄,如我的為:D:\Program Files\Java\jdk1.7.0_02;
②打開命令提示符(cmd),輸入java -version命令,顯示如下圖則說明JAVA環(huán)境變量已經(jīng)配置好了。
2、安裝ADT插件:
①打開已安裝好的Eclipse,選擇菜單欄上的“Help”-在彈出的下拉框中單擊選擇“Install new software...”;
②在新打開的對話框中我們完全可以直接在"Work with"中輸入:在線安裝ADT插件,但由于Google的服務(wù)器搭建在國外,所以通過這種方式安裝起來會比較慢,而且可能會出現(xiàn)人品差死活裝不上的情況,所以不推薦在線安裝。
③我推薦直接通過下載好的ADT插件壓縮包進行安裝(此種方式可以在離線環(huán)境下進行)。具體步驟是:在新打開的對話框中點擊“Add”按鈕-在打開的對話框中點擊“Archive”按鈕選擇之前已經(jīng)下載好保存在本地硬盤的ADT插件壓縮包,至于上面的“Name”可以隨便取,這只是一個代號而已,沒什么實際作用。
④在上一步中點擊“Ok”按鈕后我們會發(fā)現(xiàn)中間的空白處出現(xiàn)了兩行復(fù)選框,單擊"Select All"按鈕選中所有的復(fù)選框,這步過后一路“Next”,需要“Accept”的就選中“Accept”,直到點擊“Finish”結(jié)束,這樣ADT插件就安裝好了。整個過程需要的時間視機器性能而定。安裝好ADT插件后,Eclipse的工具欄會出現(xiàn)一排Android的圖標(biāo),如下圖:
3、安裝SDK:
①把下載好的Android SDK安裝到本機上(最好安裝在全英文路徑下),并為Android SDK配置環(huán)境變量。Android SDK的環(huán)境變量值為SDK安裝目錄下的platform-tools文件夾和tools文件夾子目錄路徑,如我的分別為:E:\My Studying\Android\android-sdk\platform-tools、E:\My Studying\Android\android-sdk\tools,在變量值中,兩個路徑用逗號隔開。
②打開命令提示符(cmd),分別輸入android -h和adb命令,顯示如下圖則說明Android SDK環(huán)境變量已經(jīng)配置好了。
③打開Android SDK的安裝目錄,雙擊 "SDK Manager"-在打開的窗口中先選擇你需要安裝的SDK版本,其中“Status”表示該SDK包是否安裝,如我選的是“Android2.2(API 8)”(我的之前已經(jīng)安裝過了,所以“Status”為“Installed”)-再點擊“Install packages...”按鈕,在彈出來的窗口中最好選“Accept All”這樣才能安裝你剛才選的所有的包-最后點“Install”按鈕就開始安裝了,整個過程會很慢,這需要你的耐心。
另外我們還可以通過在Eclipse上的工具欄中點擊下圖指示的圖標(biāo)打開“SDK Manager”然后進行安裝,這樣和上面的SDK安裝方式一樣,就不累述了。
④最后再選擇Eclipes主菜單上的"Windows"-選擇"preferrnces";
⑤在彈出來的對話框中選中左邊欄的“Android”-通過右側(cè)的“Browse...”按鈕選擇SDK的安裝路徑根目錄-點擊最下方的“Ok”按鈕,這樣SDK就在Eclipse上加載成功了。
4、創(chuàng)建Android模擬器(AVD):
①打開Eclipse-在Eclipse的工具欄上單擊下圖指示的圖標(biāo)打開“Android Virsual Device Manager”窗口;
②在“Android Virsual Device Manager”窗口單擊“New”按鈕-在彈出來的窗口中"Name"可以隨便??;“Target”指模擬器的系統(tǒng)版本;“SD Card”的"size"是指手機存儲卡的大小,只要你不在模擬器上裝太多的應(yīng)用,一般給個二三十MB就夠了;“Skin”是指屏幕的分辨率大小,其中“Built in”是一般手機常用標(biāo)準(zhǔn)屏幕分辨率大小,而“Resolution”是自定義屏幕分辨率大小,具體做法,可以根據(jù)自身情況選擇。-一切設(shè)置好后點擊“Create AVD”,這時一個模擬器就創(chuàng)建好了。如果有必要,我們可以創(chuàng)建多個模擬器用于測試時使用。
附:Android模擬器型號以及其對應(yīng)的分辨率大?。?/p>
Standard Width Height DAR Pixeis
HVGA 480 * 320 3:2 153,600
QVGA 320 * 240 4:3 76,800
WQVGA400 400 * 240 5:3 96,000
WQVGA432 432 * 240 9:5 103,680
WVGA800 800 * 480 5:3 384,000
WVGA852 854 * 480 409,920
至此為止,在Eclipse上就已經(jīng)成功搭建Android開發(fā)環(huán)境了。
App-快速搭建項目框架-基本架構(gòu)
一、 目前移動端項目的主流App框架基本都是標(biāo)簽式的,通過TabBar + NavigationController框架進行搭建完成。TabBar + NavigationController就是在應(yīng)該TabBar上添加itemBar,每一個itemBar都是一個獨立的模塊,并且每一個itemBar都對應(yīng)一個NavigationController。因為每一個itemBar的導(dǎo)航器都不一樣,所以應(yīng)該是先有TabBar 再有NavigationController。
二、
關(guān)于安卓app開發(fā)框架搭建和安卓APP開發(fā)框架的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。