十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
開發(fā)調(diào)試環(huán)境: Ubuntu 14.10,openJdk 1.7,Android Studio 1.0.2,android-5.0.1_r1源碼
為麻栗坡等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及麻栗坡網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都做網(wǎng)站、網(wǎng)站建設(shè)、麻栗坡網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
由于AS是基于IntelliJ IDEA開發(fā)的,所以本文也適用于IntelliJ IDEA
一、修改Android Studio(以下簡(jiǎn)稱AS)的內(nèi)存配置
因?yàn)樵趯?dǎo)入源碼時(shí)需要消耗大量?jī)?nèi)存,所以先修改IDEA_HOME/bin/studio64.vmoptions(x86的機(jī)器修改studio.vmoptions)中-Xms和-Xmx的值。文檔中使用的是748m, 可自行修改。
二、配置AS的JDK、SDK
在IDE中添加一個(gè)沒有classpath的JDK, 這樣可以確保使用源碼里的庫(kù)文件
并將其作為要使用的SDK的Java SDK。如下圖
三、生成導(dǎo)入AS所需配置文件(*.ipr)
①編譯源碼(為了確保生成了.java文件,如R.java;如果編譯過(guò),則無(wú)需再次編譯)
②檢查out/host/linux-x86/framework/目錄下是否有idegen.jar
如果idegen.jar不存在,執(zhí)行:
mmm development/tools/idegen/
在5.0.1的源碼中會(huì)生成res.java的文件夾,導(dǎo)致idegen.jar運(yùn)行時(shí)拋FileNotFoundException,這是idegen的代碼不夠嚴(yán)謹(jǐn)造成的。
我的分享里有修改這個(gè)bug的patch,或者直接使用我分享的idegen.jar。
③執(zhí)行
development/tools/idegen/idegen.sh
等待出現(xiàn)類似下面的結(jié)果:
Read excludes: 5ms
Traversed tree: 44078ms
這時(shí)會(huì)在源碼的根目錄下生成android.ipr和android.iml兩個(gè)IntelliJ IDEA(AS是基于IntelliJ IDEA社區(qū)版開發(fā)的)的配置文件
Tips:
AS在導(dǎo)入代碼時(shí)比較慢,建議先修改android.iml,將自己用不到的代碼exclude出去.可以仿照過(guò)濾.repo文件夾的語(yǔ)法,如:
excludeFolder url="" /
excludeFolder url="" /
excludeFolder url="" /
這樣在導(dǎo)入時(shí)就會(huì)跳過(guò)abi和art文件夾.過(guò)濾的越多,AS的處理速度就會(huì)越快.
④在AS中打開源碼根目錄下新生成的android.ipr
如果在導(dǎo)入時(shí)AS出現(xiàn)
則建議按照其給定的解決方法來(lái)解決(網(wǎng)址:),具體內(nèi)容如下圖:
四、解決源碼中跳轉(zhuǎn)錯(cuò)誤問(wèn)題
①為當(dāng)前工程設(shè)置正確的SDK和JDK
②設(shè)置'Modules'的依賴
先將所有依賴刪掉,只留下上圖'1'所指向的兩個(gè)(注意:這里刪除全部只是為了方便。如果確實(shí)用到了.jar,在將它們的路徑添加進(jìn)來(lái)就可以了.
如:5.0.1的ContactsCommon用到了geocoder-2.9.jar和libphonenumber-6.2.jar)
點(diǎn)擊上圖中'2'指向的'+'并選擇上圖'3'指向的'Jars or directories'選項(xiàng),依次將frameworks和external文件夾添加進(jìn)來(lái).如:
其它版本的代碼在添加frameworks時(shí)可能會(huì)顯示成:
沒有關(guān)系,只是顯示問(wèn)題,點(diǎn)擊OK還是會(huì)把frameworks路徑添加進(jìn)去的.
如果還有代碼跳轉(zhuǎn)錯(cuò)誤,請(qǐng)仿照上面的步驟將相應(yīng)代碼的路徑或jar文件添加到其Dependencies標(biāo)簽頁(yè)中即可.
五、DEBUG源碼
我們可以通過(guò)給剛導(dǎo)入的工程在'Modules'中添加'Android Framework'來(lái)讓AS將它作為一個(gè)Android工程,從而方便我們調(diào)試代碼.
可以按照上圖中'1'和'2'來(lái)添加Android Framework支持.
在代碼中加斷點(diǎn),然后選擇'Run'-'Attach debugger to Android process'或者直接點(diǎn)擊下圖所示的圖標(biāo)
在彈出的選擇進(jìn)程(Choose Process)對(duì)話框中,勾選顯示所有進(jìn)程,選擇要DEBUG的代碼所在的進(jìn)程,點(diǎn)擊OK即可.
六、其它
代碼中很多地方提示Call requires API Level x.... 出現(xiàn)這個(gè)問(wèn)題是因?yàn)锳S將我們的工程當(dāng)做安卓應(yīng)用程序工程了,且源碼中沒有指定minSdkVersion.
我們只需在源碼根目錄加一個(gè)聲明minSdkVersion的AndroidManifest.xml文件即可(分享了一個(gè)AndroidManifest.xml)。
也可以考慮使用build.gradle來(lái)解決該問(wèn)題。
可以。Java遠(yuǎn)程調(diào)試可以實(shí)現(xiàn)在不同的環(huán)境中調(diào)試Java應(yīng)用程序,在遠(yuǎn)程機(jī)器上調(diào)試代碼,而不用擔(dān)心本地變量、對(duì)象或日志數(shù)據(jù)的狀態(tài),可以改變?cè)创a并在遠(yuǎn)程機(jī)器上調(diào)試,從而可以設(shè)置斷點(diǎn)、觀察變量值和查看棧跟蹤,以及改變?cè)创a并立即看到效果。
1.debug。斷點(diǎn)調(diào)試。
2.輸出消息。system.out.println();來(lái)調(diào)試。
3.動(dòng)態(tài)代理(Dynamic Proxy)。動(dòng)態(tài)代理是一個(gè)特定的Java特性,它允許開發(fā)者引入proxy類,加進(jìn)某一給定類之前,并通過(guò)某一給定接口截獲所有調(diào)用。你可以在很短時(shí)間內(nèi)用一個(gè)普通代理設(shè)置一個(gè)虛擬事件處理器,來(lái)查看事件發(fā)生順序。當(dāng)需要理解事件處理器時(shí)這是最簡(jiǎn)單和快捷的方法。
4.運(yùn)行時(shí)剖析器(Run-time Profiler)。剖析器是通過(guò)特定的JVM hooks在系統(tǒng)中跟蹤所有調(diào)用的強(qiáng)大工具。但是用它來(lái)跟蹤執(zhí)行過(guò)程是大才小用。
5.Aspects。面向方面編程。它是截獲你的代碼執(zhí)行既快速又容易的方法。你可以圍繞方法、構(gòu)造器、屬性訪問(wèn)等等有選擇地設(shè)置hook,而不需要修改原始代碼。在這些hook中,你可以打印調(diào)試消息。
1.2常用的。3.4.5網(wǎng)上找的。
現(xiàn)在eclipse對(duì)jsp的支持已經(jīng)很強(qiáng)了,跟寫純java代碼差不多,代碼提示,代碼校準(zhǔn),斷點(diǎn)調(diào)試等都可以使用。你可以下載一個(gè)eclipse3.5的j2ee版本,據(jù)說(shuō)elcipse3.*的版本中,3.5是最后一個(gè)版本了,接下去的eclipse直接是e4了,跟現(xiàn)在的elcipse風(fēng)格差別會(huì)比較大(我昨天下載了e4的測(cè)試版試了一下,暫時(shí)還沒摸著方向),所以3.5絕對(duì)是一個(gè)精品,趕緊收藏吧。
不過(guò)一樓說(shuō)對(duì)的,jsp頁(yè)面中還是不要寫太多的java腳本代碼,不太好維護(hù)。