將apk文件拷貝至sdcard上。
成都創(chuàng)新互聯(lián)公司長(zhǎng)期為數(shù)千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為西陵企業(yè)提供專(zhuān)業(yè)的成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè),西陵網(wǎng)站改版等技術(shù)服務(wù)。擁有10年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。
命令順序如下:
進(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)一中文名稱(chē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ì)靈感源于男女廁所門(mén)上的圖形符號(hào), [1]? 于是布洛克繪制了一個(gè)簡(jiǎn)單的機(jī)器人,它的軀干就像錫罐的形狀,頭上還有兩根天線,Android小機(jī)器人便誕生了。其中的文字使用了Ascender公司專(zhuān)門(mén)制作的稱(chēng)之為“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)我們?cè)趀clipse中開(kāi)發(fā)android程序的時(shí)候,往往需要看源代碼(可能是出于好奇,可能是讀源碼習(xí)慣),那么如何查看Android源代碼呢?
比如下面這種情況
假設(shè)我們想?yún)⒖碅ctivity類(lèi)的源代碼,按著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文件便能夠查看源代碼了,如圖六。
這樣就大功告成了?。?!
編譯android系統(tǒng)源碼準(zhǔn)備工作:
下載android源碼
在windows上用gitbash ,git clone 下載代碼
在linux上這樣下載
創(chuàng)建~/bin目錄,用來(lái)存放repo程序,如下:
$ cd ~
$ mkdir bin
初始化repo
repo是android對(duì)git的一個(gè)封裝,簡(jiǎn)化了一些git的操作。
創(chuàng)建工程目錄:
$ mkdir android
$ cd android
下載repo腳本并使其可執(zhí)行:
$ curl ~/bin/repo
$ chmod a+x ~/bin/repo
repo初始化:
$ repo init -u git://android.git.kernel.org/platform/manifest.git
在此過(guò)程中需要輸入名字和email地址。初始化成功后,會(huì)顯示:
repo initialized in /android
在~/android下會(huì)有一個(gè).repo的隱藏目錄。
5)同步源代碼
$ repo sync
這一步要很久很久。
安裝linux系統(tǒng),推薦ubuntu,圖形界面
安裝編譯需要的支持包
$ sudo apt-get install git-core gnupg sun-java5-jdk flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev
安裝java6.0
$ sudo apt-get install sun-java6-jdk
配置java環(huán)境
sudo gedit ~/.bashrc
末尾加上
JAVA_HOME=/usr/lib/jvm/java-6-sun
JRE_HOME=${JAVA_HOME}/jre
export ANDROID_JAVA_HOME=$JAVA_HOME
export CLASSPATH=.:${JAVA_HOME}/lib:$JRE_HOME/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export JAVA_HOME;
export JRE_HOME;
export CLASSPATH;
HOME_BIN=~/bin/
export PATH=${PATH}:${JAVA_PATH}:${HOME_BIN};
sudo source ~/.bashrc
是環(huán)境變量生效
編譯android源碼,并得到~/android/out目錄
$ cd ~/andoird
$ make
這一過(guò)程很久。
這就編譯結(jié)束了
大概有10G的源代碼,一Byte一個(gè)字符,也就是說(shuō)有超過(guò)100億個(gè)字符,每行按標(biāo)準(zhǔn)80字符來(lái)算的話,超過(guò)1億行。開(kāi)放的WinXP系統(tǒng)有2億行,從數(shù)量級(jí)上來(lái)看的話,應(yīng)該差不多。Android 4.4,是由Google公司制作和研發(fā)的代號(hào)為KitKat的手機(jī)操作系統(tǒng),于北京時(shí)間2013年9月4日凌晨對(duì)外公布了該Android新版本的名稱(chēng),為Android 4.4(代號(hào) KitKat 奇巧)。據(jù)悉,該代號(hào)來(lái)自雀巢的KitKat巧克力。"Kit Kat"原本是雀巢公司的一款巧克力名稱(chēng)。谷歌表示,他們非常感謝雀巢授權(quán)使用該名稱(chēng),但使用的時(shí)候會(huì)將中間的空格去掉。Android 4.4 KitKat針對(duì)RAM占用進(jìn)行了優(yōu)化,甚至可以在一些僅有512MB RAM的老款手機(jī)上流暢運(yùn)行。它也進(jìn)一步優(yōu)化了系統(tǒng)在低配硬件上的運(yùn)行效果, 支持內(nèi)核同頁(yè)合并 KSM,zRAM 交換,似乎是為了更好地在眾多智能穿戴設(shè)備上運(yùn)行。
是指sdk的源碼,還是android操作系統(tǒng)的源碼,不過(guò)都有10G左右,另外sdk的源碼是用git管理的,一次下載后,用git check就可以切換到各個(gè)版本。Android SDK是用于開(kāi)發(fā)Android上JAVA應(yīng)用程序的,另外發(fā)布Android NDK,可以添加一些C語(yǔ)言寫(xiě)的鏈接庫(kù),至于Linux代碼,可以在Android源代碼中找到(SDK程序中只有編譯好的測(cè)試映像)。應(yīng)用程序開(kāi)發(fā)用不到Linux代碼(搞嵌入式開(kāi)發(fā)才會(huì)用到,而SDK不負(fù)責(zé)底層開(kāi)發(fā))。
網(wǎng)站欄目:android系統(tǒng)源代碼,Android系統(tǒng)源代碼情景分析 第3版
轉(zhuǎn)載源于:http://chinadenli.net/article12/dsshigc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化、建站公司、企業(yè)建站、商城網(wǎng)站、手機(jī)網(wǎng)站建設(shè)、網(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)