九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Android項(xiàng)目中如何正確的引入第三方j(luò)ar包(工程)

Android項(xiàng)目中如何正確的引入第三方jar(工程)


最近在學(xué)習(xí)一個(gè)Android技術(shù)點(diǎn)時(shí),需要在工程項(xiàng)目中引入第三方jar包,遇到的問題是在編譯的時(shí)候能通過,但是在實(shí)際運(yùn)行的時(shí)候會出錯(cuò)。后來經(jīng)過調(diào)研發(fā)現(xiàn),原來是在引入第三方jar包的時(shí)候出錯(cuò)了,現(xiàn)在總結(jié)已經(jīng)成功的兩種方式。


一 使用Build Path中的Order and Export選項(xiàng)卡

1.將實(shí)例Android項(xiàng)目(project源碼)importEclipse中,這時(shí)由于第三方jar包路徑和原作者的存放路徑不一致,項(xiàng)目會提示紅叉叉,不能進(jìn)行編譯;


2.下載第三包jar3rd.jar保存到本地,然后通過Build PathConfigure Build PathLibrariesAdd external JARS,3rd.jar添加到項(xiàng)目的Build Path中去,這時(shí)該Android項(xiàng)目上的紅叉叉就會消失,項(xiàng)目能通過編譯;


```


```點(diǎn)擊“OK”


3.接著,我們到模擬器上Run下這個(gè)項(xiàng)目,模擬器啟動(dòng)是在是太慢了,這個(gè)時(shí)候,我們可以喝點(diǎn)水,上個(gè)廁所,站起來走走。程序員,要對自己的身體好一點(diǎn)。我這次就不去廁所了,寫這篇文章呢。模擬器還崩潰了一次,悲劇,只得again......

結(jié)果:


logcat中查錯(cuò)唄:


4.重新配置Build Path

繼續(xù)Build PathConfigure Build PathOrder and Export,將里面的3rd.jar勾選,點(diǎn)擊OK



run一次:

還是報(bào)錯(cuò)?!蝦米情況?。。?/span>

別急Projectclean一下當(dāng)前項(xiàng)目,再run一次就得到正確結(jié)果了。

Success


思考:如果第三方jar包只有一個(gè)這樣做還好說,如果在項(xiàng)目中引入的jar包很多,這是可參考第二種方法。


二 創(chuàng)建自己的 Source Folder


1.Build PathNew Source Folder→給第三方jar的文件夾起個(gè)名字,例如3rd.jar→將所有的第三方jar包全部復(fù)制黏貼到這個(gè)包下面:

2.復(fù)制黏貼所有第三方j(luò)ar包:

3.這個(gè)時(shí)候,僅僅是將這個(gè)新建的Folder添加到Build Path中去,復(fù)制過來的3rd.jar還是沒有添加進(jìn)去的,這時(shí),選中3rd jar文件下面的所有第三方jar包,右鍵→Add to Build Path


```我們看看這里發(fā)生了什么變化:

為了區(qū)別之前的,我在這里clean一下。

結(jié)果:成功,success!

==================================================================================================================

總結(jié):

其實(shí)這個(gè)問題的核心是:有沒有將第三方jar包添加至新apk文件的Build Path中去。

什么是Build Path?其實(shí)在這里(Android Project最后構(gòu)建成apk文件)顧名思義,就是最后apk文件構(gòu)建的資源在該項(xiàng)目中存放的路徑。結(jié)合這里的實(shí)際情況,在正確的Order and Export選項(xiàng)卡里面,默認(rèn)勾選了3個(gè)路徑:src、gen和我們自定義的3rd jar,這就表示,我們的3rd jar包將會直接構(gòu)成最后的apk文件(部分還是全部?)。

我們結(jié)合Order and Export選項(xiàng)卡的注釋來看下:構(gòu)建class文件路徑的順序和導(dǎo)出條目,導(dǎo)出的條目對依賴的項(xiàng)目有效。


我們電腦上的Eclipse IDE開發(fā)環(huán)境是配置了本地的JDK環(huán)境的(環(huán)境變量classpath),我們將已經(jīng)為Eclipse配置好的JDK環(huán)境當(dāng)做第一方,我們?yōu)榈诙?,那?/span>3rd.jar就是第三方了。(不知道正確與否,我是這么理解的)

Eclipse上開發(fā)當(dāng)前項(xiàng)目的時(shí)候,我們默認(rèn)依賴的是本地JDK環(huán)境里面的工程(這里的工程就是一個(gè)個(gè)的jar文件),如果要引入第三方(工程)jar的話,必須要添加額外的jar文件(工程文件),保證能通過編譯,也就是當(dāng)前項(xiàng)目沒有紅叉叉,允許你去run。

當(dāng)當(dāng)前項(xiàng)目構(gòu)建好(Buildapk文件(project)后,我們用模擬器去運(yùn)行。請注意這時(shí)候環(huán)境開始發(fā)生了微妙的變化,現(xiàn)在當(dāng)前的運(yùn)行環(huán)境是Android SDKdalvikvm(而不是為Eclipse配置的本機(jī)JRE環(huán)境,那是一般的Java項(xiàng)目的運(yùn)行環(huán)境,我們現(xiàn)在是Android Project)。對于dalvikvm來說,apk是它的一個(gè)project;同理,在Eclipse開發(fā)過程中,當(dāng)前項(xiàng)目明顯是它的一個(gè)projectAndroid Project),額外引用的3rd.jar包也是它的一個(gè)project。在項(xiàng)目的開發(fā)階段,我們自己的當(dāng)前項(xiàng)目依賴了3rd.jar,在項(xiàng)目構(gòu)建成apk文件(project)的時(shí)候,如果我們不將3rd.jar這個(gè)工程設(shè)為Exported(讓依賴當(dāng)前Android Projectapk project也能依賴3rd.jar)。在apk文件運(yùn)行時(shí),當(dāng)apk運(yùn)行到需要依賴3rd.jar流程的時(shí)候,dalvikvm環(huán)境無法訪問3rd.jar project中的class文件,自然就會報(bào)錯(cuò)。


依賴關(guān)系分析:

在實(shí)際運(yùn)行的時(shí)候:apk project依賴我們開發(fā)的Android Project,而Android Project又依賴3rd.jar project,相當(dāng)于apk project間接依賴3rd.jar project,這種間接關(guān)系應(yīng)該是不能自動(dòng)傳遞的,需要進(jìn)行手動(dòng)設(shè)置,也就是在構(gòu)建apk project的時(shí)候,把3rd.jar project設(shè)為Exported,讓它可以被apk project間接依賴,當(dāng)然apk project是直接依賴Android Project的。

第二種方法完全就是將3rd.jar projectAndroid project一起構(gòu)建(打包)成apk project,然后部署(安裝)在dalvikvm中運(yùn)行,其實(shí)也是相當(dāng)于在dalvikvm運(yùn)行環(huán)境中直接添加了一個(gè)3rd.jar

通過文件的大小分析,我們發(fā)現(xiàn)第一種export的方式比第二種直接構(gòu)建的方式構(gòu)建成的正常apk文件要小一些。具體是:第一種方法正常情況下apk文件大小306KB;第二種方法下正常情況下apk文件大小334KB。apk異常情況時(shí)大小是295KB。3rd.jar的大小是33.7KB。我也不知道具體原因,猜測是進(jìn)行了“結(jié)合編譯”,也就是將Android Project3rd.jar project在編譯的時(shí)候結(jié)合起來,比如去掉相同的地方,從而構(gòu)建成apk project;或者是“有效編譯”,也即是只將3rd.jar中有效有用的部分整合到Android Project中去,然后構(gòu)建成apk project。本人也只是菜鳥一只,只能這樣猜想一下,憑目前的知識水平,還不知道到底是怎么回事,也不知道如何去驗(yàn)證,如有高手能賜教一二的話,不勝感激。當(dāng)然由于本人的水平有限,本文中的語言和詞匯肯定有表述不當(dāng)?shù)牡胤?,大家自己辨別了,這只是我的個(gè)人理解。建議大家無論什么時(shí)候都不要盡心他人言,官方的文檔才是你最堅(jiān)實(shí)后盾。

我們假如官方文檔是100分,完美的;我們的原作者是一個(gè)技術(shù)大牛,能學(xué)到95分;然后在他的書或者文章中,由于翻譯寫作表述等因素限制,可能能將80分的內(nèi)容表述清楚;然后我們讀者在閱讀學(xué)習(xí)的時(shí)候,由于個(gè)人的理解能力和方式差別,能得到60分就很不錯(cuò)了。在這個(gè)過程中,如果僅僅只是只是數(shù)量上的減少還可以接受,但是知識都是一環(huán)扣一環(huán)的,前面的理解不到位或者錯(cuò)誤將會一直誤導(dǎo)后面的學(xué)習(xí)和理解。所以我還是建議大家盡量去看相對權(quán)威、準(zhǔn)確、規(guī)范的官方文檔,別人的二手甚至N手資料只能當(dāng)一個(gè)引導(dǎo)作用,切不可全信。

希望得到大家的指點(diǎn)和指正,歡迎一起交流學(xué)習(xí)。QQ:478586054  

新浪微博:@方家仁兄

謝謝閱讀。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Ant自動(dòng)編譯打包&發(fā)布 android項(xiàng)目
Android 加入第三方包
Android 混淆打包不混淆第三方j(luò)ar包
Android的apk編譯和第三方j(luò)ar包的使用
android工程中引入第三方JAR包后安裝APK時(shí)老是提示找不到庫文件 || Andro...
unity 引入 android第三方sdk
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服