開(kāi)發(fā)調(diào)試環(huán)境: Ubuntu 14.10,openJdk 1.7,Android Studio 1.0.2,android-5.0.1_r1源碼

站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到鶴城網(wǎng)站設(shè)計(jì)與鶴城網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊(cè)、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋鶴城地區(qū)。
由于AS是基于IntelliJ IDEA開(kāi)發(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è)沒(méi)有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ū)版開(kāi)發(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中打開(kāi)源碼根目錄下新生成的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ì)顯示成:
沒(méi)有關(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)用程序工程了,且源碼中沒(méi)有指定minSdkVersion.
我們只需在源碼根目錄加一個(gè)聲明minSdkVersion的AndroidManifest.xml文件即可(分享了一個(gè)AndroidManifest.xml)。
也可以考慮使用build.gradle來(lái)解決該問(wèn)題。
需要把反編譯的apk存放到apktools同級(jí)文件夾目錄下,然后運(yùn)行要查看的安裝包,具體操作如下:
1、首先把反編譯的apk存放到apktools同級(jí)文件夾目錄下,如下圖所示。
2、按住shift+鼠標(biāo)右鍵打開(kāi)命令窗口,運(yùn)行代碼 apktool d yd.apk(安裝包的名字)。
3、apk后綴名改成zip,解壓雙擊打開(kāi)xml格式文件如下圖所示。
4、打開(kāi)cmd命令窗口,如下圖所示依次輸入命令。
5、將classes.dex打包成jar包 需要用到dex2ja。
6、然后就可以查看需要的源代碼,如下圖所示。
將apk文件拷貝至sdcard上。
命令順序如下:
進(jìn)入Android sdk文件夾/tools目錄下
輸入adb shell
輸入su
輸入cd data
輸入cd app
這時(shí)就可以看到你安裝的所有的apk文件。輸入cp 空格 對(duì)應(yīng)的apk 空格 /sdcard/
這樣就將apk文件拷貝出來(lái)了。
將apk文件后綴直接變成rar格式,可以看到熟悉的目錄結(jié)構(gòu)了,
其中xml文件打開(kāi)后都是二進(jìn)制的,無(wú)法查看。
這時(shí)就用到了一個(gè)android4me的AXMLPrinter2工具。(請(qǐng)自行百度搜索)
輸入以下命令,將xml文件解析出來(lái)
java -jar AXMLPrinter2.jar showtimes_list.xml
此命令是在命令行中查看此showtimes_list.xml
將showtimes_list.xml生成xml文件,則輸入以下命令:
java -jar AXMLPrinter2.jar showtimes_list.xml h.xml
目前進(jìn)行到這一步,只能看到xml文件的內(nèi)容,其工程中的java源文件還是看不到,看目錄結(jié)構(gòu)下有一個(gè)classes.dex文件,我們需要將dex文件變?yōu)閖ar文件。
這里用到了另一個(gè)工具dex2jar。(自行搜索下載)
在Windows下解壓之后的目錄如下圖所示:
在命令行中,進(jìn)入到此目錄下:
在Windows下,輸入以下命令:
dex2jar.bat c:\classes.dex
運(yùn)行完之后,在C盤會(huì)多一個(gè)classes.dex.dex2jar.jar文件,此文件就是我們需要的jar文件。
利用jd-gui,將jar文件反向工程為java代碼。(請(qǐng)自行搜索下載)
它分為Windows、Linux、和max三個(gè)版本,這里我下載的是Windows版本的。
解壓之后,雙擊運(yùn)行exe文件,選擇classes.dex.dex2jar.jar文件,相應(yīng)的jar文件中的Java文件就被反向工程顯示出來(lái)了!
Android是一種基于Linux的自由及開(kāi)放源代碼的操作系統(tǒng),主要使用于移動(dòng)設(shè)備,如智能手機(jī)和平板電腦,由Google公司和開(kāi)放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開(kāi)發(fā)。尚未有統(tǒng)一中文名稱,中國(guó)大陸地區(qū)較多人使用“安卓”或“安致”。Android操作系統(tǒng)最初由Andy Rubin開(kāi)發(fā),主要支持手機(jī)。2005年8月由Google收購(gòu)注資。2007年11月,Google與84家硬件制造商、軟件開(kāi)發(fā)商及電信營(yíng)運(yùn)商組建開(kāi)放手機(jī)聯(lián)盟共同研發(fā)改良Android系統(tǒng)。隨后Google以Apache開(kāi)源許可證的授權(quán)方式,發(fā)布了Android的源代碼。第一部Android智能手機(jī)發(fā)布于2008年10月。Android逐漸擴(kuò)展到平板電腦及其他領(lǐng)域上,如電視、數(shù)碼相機(jī)、游戲機(jī)等。2011年第一季度,Android在全球的市場(chǎng)份額首次超過(guò)塞班系統(tǒng),躍居全球第一。 2013年的第四季度,Android平臺(tái)手機(jī)的全球市場(chǎng)份額已經(jīng)達(dá)到78.1%。?[1]??2013年09月24日谷歌開(kāi)發(fā)的操作系統(tǒng)Android在迎來(lái)了5歲生日,全世界采用這款系統(tǒng)的設(shè)備數(shù)量已經(jīng)達(dá)到10億臺(tái)。
Android一詞最早出現(xiàn)于法國(guó)作家利爾亞當(dāng)(Auguste Villiers de l'Isle-Adam)在1886年發(fā)表的科幻小說(shuō)《未來(lái)夏娃》(L'ève future)中。他將外表像人的機(jī)器起名為Android。
Android的Logo是由Ascender公司設(shè)計(jì)的,誕生于2010年,其設(shè)計(jì)靈感源于男女廁所門上的圖形符號(hào), [1]? 于是布洛克繪制了一個(gè)簡(jiǎn)單的機(jī)器人,它的軀干就像錫罐的形狀,頭上還有兩根天線,Android小機(jī)器人便誕生了。其中的文字使用了Ascender公司專門制作的稱之為“Droid ” 的字體。Android是一個(gè)全身綠色的機(jī)器人,綠色也是Android的標(biāo)志。顏色采用了PMS 376C和RGB中十六進(jìn)制的#A4C639來(lái)繪制,這是Android操作系統(tǒng)的品牌象徵。有時(shí)候,它們還會(huì)使用純文字的Logo。
網(wǎng)頁(yè)名稱:android應(yīng)用代碼,android 代碼
網(wǎng)站URL:http://chinadenli.net/article48/dsgppep.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、App開(kāi)發(fā)、品牌網(wǎng)站設(shè)計(jì)、企業(yè)網(wǎng)站制作、商城網(wǎng)站、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)