將apk文件拷貝至sdcard上。
在關(guān)嶺等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都做網(wǎng)站、成都網(wǎng)站制作 網(wǎng)站設(shè)計(jì)制作按需定制,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),全網(wǎng)整合營(yíng)銷推廣,成都外貿(mào)網(wǎng)站制作,關(guān)嶺網(wǎng)站建設(shè)費(fèi)用合理。
命令順序如下:
進(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盤(pán)會(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。
用壓縮軟件打開(kāi)apk文件,解壓出根目錄中的classes.dex文件
使用cmd ,dex2jar.bat classes.dex命令將classes.dex轉(zhuǎn)換為jar
再用jd-gui打開(kāi)該jar就可以查看源碼了,如果apk安全性好的話,有些代碼是看不到的
當(dāng)前的Android?代碼托管在兩個(gè)方:? 和??之前在 android.git.kernel.org?上也有托管,不過(guò)現(xiàn)在重定向到了??好在都支持git訪問(wèn)。
google?提供的?repo?工具實(shí)際上是一個(gè)內(nèi)部操作git工具來(lái)簡(jiǎn)化操作Android源碼的Python腳本。經(jīng)過(guò)嘗試,直接使用git?工具在ubuntu?下可以實(shí)現(xiàn)clone?Android?源碼。下面介紹一下方法:
1.?獲取當(dāng)前的在github?上托管的Android?git?repositories:
github頁(yè)面為:??。不過(guò)這個(gè)頁(yè)面不支持通過(guò)?wget?""?或者?curl?""?的方式訪問(wèn),?錯(cuò)誤信息如下:
這樣一來(lái),獲取這個(gè)頁(yè)面內(nèi)容并解析出其中的git?repositories就需要手工完成了。好在方法也很簡(jiǎn)單:?瀏覽器中打開(kāi)這個(gè)頁(yè)面,然后"查看源文件"并保存為文本文件,比如保存為"android_git.html"。最后,通過(guò)下面的一行腳本來(lái)取出?Android?git?repositories.
grep?-o?"span?class=\"repo\".*/span"?./android_git.html?|?cut?-d?""?-f2?|?cut?-d?""?-f1??android_git.txt
2.?基于第1步獲取的Android?git?repositories?來(lái)生成clone?git的腳本:
執(zhí)行如下的一行awk腳本
awk?'BEGIN{i=1;?print?"#!/usr/bin/env?bash"?}{?print?"\n\necho?\"begin?clone?android?git?["i"]:?"?$1?"\"";?print?"git?clone?
"?$1?".git";?print?"echo?\"finish?clone?android?git?["i"]:?"?$1?"\""?;?i=i+1;?}'?./android_git.txt??
git_clone_android.sh
現(xiàn)在用于clone?android?git的腳本生成好了,一共有?103?個(gè)?git?repository.
3.?執(zhí)行g(shù)it_clone_android.sh這個(gè)腳本即可。
整體Android?源碼的代碼量是相當(dāng)龐大,完成所有的clone?任務(wù)后,大概占用了?7G?磁盤(pán)空間,歷時(shí)20多個(gè)小時(shí),這是在網(wǎng)速比較快的情況下達(dá)到的效果:
其間也有許多問(wèn)題,比如多次出現(xiàn)如下的錯(cuò)誤:
這個(gè)時(shí)候需能做的只能是"try?again"了。
需要說(shuō)明的是"不要試圖同時(shí)并發(fā)執(zhí)行多個(gè)git?clone?命令",這樣會(huì)導(dǎo)致大量出現(xiàn)上面貼圖中的錯(cuò)誤,另外,整個(gè)clone過(guò)程中耗時(shí)最多的git?repository?如下:
kernel_common.git?kernel_msm.git?platform_frameworks_base.git?platform_prebuilt.git?其中?platform_prebuilt.git?是google?提供的預(yù)編譯好的二進(jìn)制文件,包含:?各種庫(kù)文件,jar?包,可執(zhí)行程序等等,如果只是閱讀Android?源代碼,這個(gè)git?repository?可以不用clone.
當(dāng)我們?cè)趀clipse中開(kāi)發(fā)android程序的時(shí)候,往往需要看源代碼(可能是出于好奇,可能是讀源碼習(xí)慣),那么如何查看Android源代碼呢?
比如下面這種情況
假設(shè)我們想?yún)⒖碅ctivity類的源代碼,按著Ctrl鍵,左擊它,現(xiàn)實(shí)的結(jié)果卻看不到代碼的,提示的信息便是“找不到Activity.class文件”。
此時(shí)點(diǎn)擊下面的按鈕,“Change Attached Source…”,選擇android源代碼所在位置,便彈出圖三的對(duì)話框。
第一種是選擇工作目錄,即已經(jīng)存在的android應(yīng)用程序源代碼。
第二種分兩種方式
(1)選擇External File…按鈕,添加Jar格式文件或者zip格式文件路徑;
(2)選擇External Floder…按鈕,添加文件夾所在路徑。
下面問(wèn)題就來(lái)了,源代碼在哪里?不能憑空產(chǎn)生阿。
可以通過(guò)Android SDK Manager進(jìn)行源代碼下載;(推薦該種方法),如圖四
勾選Source for Android SDK,進(jìn)行下載即可。
此外也可通過(guò)其他途徑下載,網(wǎng)上有很多共享的資源。
這里選擇第二種方式的(2)方法,選擇源碼所在目錄(即圖四下載源代碼目錄所在路徑),如圖五
點(diǎn)擊“OK”按鈕,此時(shí),Activity文件便能夠查看源代碼了,如圖六。
這樣就大功告成了!!!
在Eclipse中查看Android源代碼
1.需要下載一個(gè)對(duì)應(yīng)的android sdk,下完了后找到souce目錄,將其中所有的內(nèi)容拷貝到eclipse所用的sdk下的source目錄下,如果沒(méi)有這個(gè)目錄則新建一個(gè)。
2.在eclipse中打開(kāi)一個(gè)android的類文件,會(huì)出現(xiàn)如下圖所示提示:
點(diǎn)擊其中的“Change Attached Source"按鈕,在彈出的對(duì)話框中選擇“External Floder",選擇前面復(fù)制文件所在的source文件夾。
3.重啟eclipse,一切ok了,可以直接查看android的源代碼,如下圖所示。
在看listview源碼時(shí)發(fā)現(xiàn)有些方法報(bào)紅,但是編譯能通過(guò),clean rebuild都沒(méi)用
這是因?yàn)檫@些方法或者類是被 android SDK隱藏的,出于安全或者某些原因,這些API不能暴露給應(yīng)用層的開(kāi)發(fā)者,所以編譯完成的android.jar包里會(huì)把這些API隱藏掉,而我們的Android項(xiàng)目是依賴android.jar的,查看源碼的時(shí)候,IDE會(huì)自動(dòng)去android.jar找對(duì)應(yīng)的API,自然會(huì)找不到。當(dāng)然,這些API在ROM中是實(shí)際存在的,有些開(kāi)發(fā)者發(fā)現(xiàn)了一些可以修改系統(tǒng)行為的隱藏API,在應(yīng)用層通過(guò)反射的方式強(qiáng)行調(diào)用這些API執(zhí)行系統(tǒng)功能,這種手段也是一種HACK。
這是官方出于安全方面的原因,沒(méi)有將全部的API都暴露給開(kāi)發(fā)者,所以報(bào)紅其實(shí)是正常的 。 并不會(huì)影響項(xiàng)目的運(yùn)行,假如想看源碼的話,可以去android開(kāi)發(fā)者網(wǎng)站看。
網(wǎng)頁(yè)名稱:android查看源碼,android源碼查看工具
網(wǎng)站路徑:http://vcdvsql.cn/article28/dsdshjp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、做網(wǎng)站、、響應(yīng)式網(wǎng)站、小程序開(kāi)發(fā)、微信小程序
聲明:本網(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)