Android:開(kāi)源框架的使用

現(xiàn)在做開(kāi)發(fā)的已經(jīng)很少有人會(huì)直接從底層開(kāi)發(fā)了,除非有些東西目前還沒(méi)有開(kāi)發(fā)人員發(fā)布出來(lái)或者做的比較好的吟吝。目前的趨勢(shì)是我這個(gè)軟件需要什么功能,我就從網(wǎng)上找一些開(kāi)源的框架剑逃、第三方庫(kù)引入項(xiàng)目中進(jìn)行輔助開(kāi)發(fā),從而避免了一些麻煩的步驟蛹磺。既然已經(jīng)有人把這個(gè)功能實(shí)現(xiàn)了,那我何必要從新去寫一遍萤捆,這樣學(xué)習(xí)成本和時(shí)間成本還是很高的裙品,作為開(kāi)發(fā)人員俗或,我們應(yīng)該考慮的是怎么才能做到低成本高回報(bào)——我認(rèn)為使用開(kāi)源框架等做二次開(kāi)發(fā)是最佳的答案。下面我來(lái)介紹一下開(kāi)源框架的使用辛慰。

在GitHub 、開(kāi)源中國(guó)等代碼托管平臺(tái)經(jīng)常有開(kāi)發(fā)人員分享自己的開(kāi)源項(xiàng)目帅腌、Demo等麻汰,但是他們寫的東西我們?cè)趺磳?dǎo)入到我們的項(xiàng)目中并加以使用呢?如果你能直接得到一個(gè)包的話那是最好的情況五鲫,將其導(dǎo)入到(左邊文件管理視圖切換為Project)app/libs/下,這只是將庫(kù)導(dǎo)入到本地項(xiàng)目中而已已球,但是我們還得告訴這個(gè)程序“你要去使用它”,因此這里我們要添加項(xiàng)目依賴智亮,在build.gradle中添加如下:


上面的代碼塊是存儲(chǔ)倉(cāng)庫(kù)点待,指定你導(dǎo)入的庫(kù)的最深層目錄,下面的依賴只需要添加箭頭指的那句代碼就行癞埠,name表示所要引用庫(kù)的名稱,ext表示其擴(kuò)展名苗踪,其他的代碼都是由系統(tǒng)生成的無(wú)需改動(dòng)。現(xiàn)在就可以直接使用庫(kù)中的東西啦通铲。

Tip:Android2.x版本是上面那張圖毕莱,但是Android3.x版本被官方修改掉了颅夺,上圖的compile要替換為implementation,不然就無(wú)法成功添加項(xiàng)目依賴吧黄。

下面介紹如何將開(kāi)源代碼打包并導(dǎo)入項(xiàng)目:

首先我們需要新建一個(gè)項(xiàng)目(說(shuō)是項(xiàng)目Project,其實(shí)就相當(dāng)于一個(gè)工作空間Workspace)拗慨,然后點(diǎn)擊File—New—New Module...(現(xiàn)在是創(chuàng)建一個(gè)模塊,也就是一個(gè)項(xiàng)目)赵抢,然后選擇Android Library(用于建庫(kù))。現(xiàn)在你的任務(wù)是把拿到的代碼昌讲,資源(圖片等)放到庫(kù)中的相應(yīng)位置,然后打開(kāi)庫(kù)中的build.gradle文件(這其實(shí)是一個(gè)在編譯期加載的文件)短绸,在該文件中配置如下:


把這段代碼加上去车吹,然后在Android Studio命令行(Terminal)中輸入指令:gradlew makeJar然后回車(如果在這之前你是第一次使用這種方式打包的話,系統(tǒng)會(huì)下載相應(yīng)的組件窄驹,時(shí)間會(huì)比較長(zhǎng),但以后就可以直接打包了)乐埠,打包成功后你所打包的庫(kù)在這個(gè)位置:


aar這個(gè)包就是了,和jar相比的話我覺(jué)得aar的使用更方便吧丈咐,我自己是這么覺(jué)得,如果你使用jar包的話棵逊,最多只能將類,項(xiàng)目配置文件打包辆影;如果你使用aar包的話徒像,不僅可以打包類锯蛀、項(xiàng)目配置文件,就連一些例如圖片之類的資源都可以打成一個(gè)包次慢,在某種意義上比jar更方便,至少后期的資源你不需要自己再去導(dǎo)一遍了经备。上面的aar文件有兩個(gè),一個(gè)是debug的侵蒙,一個(gè)是release的。-debug文件主要是用于調(diào)試用的纷闺,可以設(shè)置一些斷點(diǎn)什么的算凿,這個(gè)包是沒(méi)有任何優(yōu)化的氓轰,只是單純提供給開(kāi)發(fā)人員做調(diào)試用的;-release主要是在發(fā)布項(xiàng)目的時(shí)候用的浸卦,它比前者更輕量級(jí),因?yàn)樗拇a量更小,速度更優(yōu)靴庆,并且作為發(fā)布版本是不允許用戶進(jìn)行調(diào)試的,故發(fā)布的話選擇第二種炉抒。在這里你選擇哪個(gè)都行,然后將其導(dǎo)入到你所需要的項(xiàng)目中焰薄,接下來(lái)的步驟跟文章開(kāi)頭一樣,這里不再贅述塞茅。

至此,開(kāi)源代碼的打包及庫(kù)的導(dǎo)入都介紹完畢了凡桥,今天花了一天的時(shí)間在研究這個(gè)蟀伸。我是通過(guò)一個(gè)TextView波浪下沉的Demo來(lái)試驗(yàn)的缅刽,一開(kāi)始不熟悉老是出現(xiàn)一些問(wèn)題衰猛,比如打包編譯不通過(guò),還沒(méi)有將第三方庫(kù)導(dǎo)入本地項(xiàng)目就添加項(xiàng)目依賴刹孔,這些問(wèn)題都會(huì)導(dǎo)致運(yùn)行期錯(cuò)誤。如果你的項(xiàng)目和所建的庫(kù)在同一個(gè)Project(也就是工作空間)下髓霞,切記不能在代碼打包的同時(shí)給你需要應(yīng)用的項(xiàng)目添加項(xiàng)目依賴,因?yàn)?.你的庫(kù)還沒(méi)建好(即包都還沒(méi)打呢)2.你還沒(méi)有將庫(kù)導(dǎo)入到本地項(xiàng)目中方库,你的運(yùn)行期肯定要出錯(cuò)的。所以如果不太熟悉的話還是不建議在同一個(gè)Project中操作纵潦,我是單獨(dú)創(chuàng)建一個(gè)Project出來(lái)專門用來(lái)建庫(kù)(或者說(shuō)打包代碼),然后再新建一個(gè)我所要做開(kāi)發(fā)的項(xiàng)目邀层,再把庫(kù)導(dǎo)入到本地項(xiàng)目中返敬。

對(duì)了寥院,這個(gè)波浪下沉的Demo里面其實(shí)自定義了一個(gè)TextView 的子類,但是現(xiàn)在由于android版本的問(wèn)題已經(jīng)不能再在TextView下創(chuàng)建子類了,會(huì)報(bào)錯(cuò)霹肝,它會(huì)讓你用AppCompatTextView說(shuō)什么兼容性會(huì)更好,總之TextView之下已經(jīng)不能創(chuàng)建子類了预厌,但是在網(wǎng)上找的開(kāi)源項(xiàng)目卻一如既往的可以正常跑,這點(diǎn)實(shí)在令我費(fèi)解轧叽。如果使用了AppCompatTextView的話,你的MativityActivity就得繼承自AppCompatActivity炭晒,這樣在使用findViewById才不會(huì)出錯(cuò),或者有其他的解決方案也行网严,我最后是通過(guò)繼承APpCompatActivity解決編譯錯(cuò)誤問(wèn)題的识樱,然后坑爹的地方來(lái)了震束,明明所有的代碼完全一樣除了TextView類換成AppCompatTextView,Activity換成AppCompatActivity垢村,運(yùn)行起來(lái)效果居然令人無(wú)法直視,使用前者的類嘉栓,也就是網(wǎng)上提供的框架運(yùn)行起來(lái)毫無(wú)違和感,改成后面的據(jù)說(shuō)是具有更好兼容性的類侵佃,儼然成為了一個(gè)幀動(dòng)畫,看起來(lái)屬實(shí)讓人覺(jué)得惡心馋辈,話說(shuō)為啥要取消對(duì)TextView的繼承呢抚芦,你對(duì)這個(gè)類再加以封裝改進(jìn)一下也好啊首有。

好了,對(duì)Android開(kāi)源框架的使用就寫到這里井联。如哪里有問(wèn)題或講的不對(duì),歡迎指出烙常。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末鹤盒,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子侦锯,更是在濱河造成了極大的恐慌,老刑警劉巖秦驯,帶你破解...
    沈念sama閱讀 216,651評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異译隘,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)固耘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)厅目,“玉大人,你說(shuō)我怎么就攤上這事损敷。” “怎么了拗馒?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,931評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)瘟忱。 經(jīng)常有香客問(wèn)我,道長(zhǎng)访诱,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,218評(píng)論 1 292
  • 正文 為了忘掉前任触菜,我火速辦了婚禮,結(jié)果婚禮上哀峻,老公的妹妹穿的比我還像新娘。我一直安慰自己剩蟀,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布育特。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪犬缨。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,198評(píng)論 1 299
  • 那天怀薛,我揣著相機(jī)與錄音,去河邊找鬼枝恋。 笑死,一個(gè)胖子當(dāng)著我的面吹牛鼓择,可吹牛的內(nèi)容都是我干的三幻。 我是一名探鬼主播呐能,決...
    沈念sama閱讀 40,084評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼摆出!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起偎漫,我...
    開(kāi)封第一講書(shū)人閱讀 38,926評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎象踊,沒(méi)想到半個(gè)月后温亲,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體杯矩,經(jīng)...
    沈念sama閱讀 45,341評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評(píng)論 2 333
  • 正文 我和宋清朗相戀三年魂务,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片泌射。...
    茶點(diǎn)故事閱讀 39,731評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖熔酷,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情纯陨,我是刑警寧澤坛芽,帶...
    沈念sama閱讀 35,430評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站咙轩,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏活喊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評(píng)論 3 326
  • 文/蒙蒙 一钾菊、第九天 我趴在偏房一處隱蔽的房頂上張望帅矗。 院中可真熱鬧煞烫,春花似錦、人聲如沸滞详。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,676評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蒲犬。三九已至岸啡,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間巡蘸,已是汗流浹背奋隶。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,829評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工达布, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人逾冬。 一個(gè)月前我還...
    沈念sama閱讀 47,743評(píng)論 2 368
  • 正文 我出身青樓躺苦,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親匹厘。 傳聞我的和親對(duì)象是個(gè)殘疾皇子嘀趟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評(píng)論 2 354