Android的App是如何編輯和運(yùn)行的

原文地址

Android Studio詳細(xì)的顯示了如何編譯和運(yùn)行你的App憔狞,但是你是否想知道當(dāng)你按下Run按鈕時(shí)蝴悉,它做了什么?

這里介紹他們是如何編譯的


Java部分

你的代碼是Java寫的瘾敢,但是編譯是否按照J(rèn)ava的方式呢拍冠,一個(gè)網(wǎng)頁應(yīng)用呢?

Android應(yīng)用的編譯和Java應(yīng)用的編譯有很大的不同簇抵。但開始的時(shí)候是一樣的:Java源碼會(huì)經(jīng)過經(jīng)過 javac命令庆杜,被編譯為.class文件:

轉(zhuǎn)變的代碼如下:

 public MainActivity() { 
     super();
     currentPosition = 0;
 }

轉(zhuǎn)換成字節(jié)代碼如下

public com.hfad.bitsandpizzas.MainActivity();
  Code:
   0:   aload_0
   1:   invokespecial   #5; //Method android/app/Activity."<init>":()V
   4:   aload_0
   5:   iconst_0
   6:   putfield    #3; //Field currentPosition:I
   9:   return
轉(zhuǎn)換為Dalvik字節(jié)代碼

.class文件包含標(biāo)準(zhǔn)的 Oracle JVM Java字節(jié)代碼,但是Android設(shè)備沒有使用這種格式的字節(jié)代碼碟摆,而是使用了它自己的獨(dú)特的自己代碼格式Dalvik晃财,就像Oracle JVM字節(jié)代碼一樣,都是機(jī)器代碼的一種說明典蜕。

這個(gè)編譯過程需要將.class文件和所有的.jar庫文件轉(zhuǎn)換為一個(gè)單獨(dú)的包含Dalvik字節(jié)代碼的classes.dex文件断盛,用來完成這項(xiàng)任務(wù)的是dx命令:


dx命令將所有的.class文件和.jar文件縫合成一個(gè)classes.dex文件。
Dalvik將原始的Java代碼轉(zhuǎn)換為如下:

0x0000: iput-object v1, v0, Lcom/hfad/bitsandpizzas/MainActivity; com.hfad.bitsandpizzas.MainActivity$2.this$0 // field@4869
0x0002: invoke-direct {v0}, void java.lang.Object.<init>() // method@13682
0x0005: return-void
將classes.dex和資源打包

classes.dex文件和資源文件愉舔,如:圖片钢猛,布局等,將他們壓縮進(jìn)一個(gè) zip文件轩缤,叫做安裝包命迈,或者.apk文件,完成這項(xiàng)任務(wù)的命令叫做 aapt火的。

.apk文件就是你需要的應(yīng)用文件壶愤,你可以發(fā)布了,但是馏鹤,或許你需要知道另外一步...

你可能需要將.apk文件簽名

如果你要在Google Play商店發(fā)布你的應(yīng)用征椒,你需要給這個(gè)應(yīng)用簽名,簽名意味著你在.apk文件添加了一個(gè)獨(dú)一無二的文件假瞬,基于校驗(yàn).apk文件和私有的密匙陕靠。
.apk文件使用標(biāo)準(zhǔn)的jarsigner工具編譯迂尝,jarsigner是用于編輯.jar文件的,但對(duì).apk文件依然有效剪芥,因?yàn)樗麄兌际?code>.zip格式的文件垄开。
如果你要編譯.apk文件,你還需要一個(gè)叫zipalign的工具税肪,用來確保壓縮的正確性溉躲。

如何部署


如果Adb進(jìn)程沒有運(yùn)行,它會(huì)自動(dòng)啟動(dòng)

將app部署到Android設(shè)備的工具是adb(Android Debug Bridge)益兄,adb在你的開發(fā)環(huán)境和Android設(shè)備上各有一套锻梳,如果你的機(jī)器上沒有運(yùn)行adb進(jìn)程,adb命令會(huì)啟動(dòng)這個(gè)進(jìn)程


adb進(jìn)程將會(huì)打開一個(gè)網(wǎng)絡(luò)socket并在5037端口監(jiān)聽命令净捅。
每個(gè)你輸入的adb命令將會(huì)在這個(gè)端口發(fā)送疑枯。

.apk文件被安裝到設(shè)備上

adb命令用于將.apk文件傳輸?shù)紸ndroid文件系統(tǒng)中,位置在/data/app/com.xxx.xxx下蛔六,其中com.xxx.xxx就是應(yīng)用的包名荆永。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市国章,隨后出現(xiàn)的幾起案子具钥,更是在濱河造成了極大的恐慌,老刑警劉巖液兽,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件骂删,死亡現(xiàn)場離奇詭異,居然都是意外死亡四啰,警方通過查閱死者的電腦和手機(jī)宁玫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拟逮,“玉大人撬统,你說我怎么就攤上這事适滓《仄” “怎么了?”我有些...
    開封第一講書人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵凭迹,是天一觀的道長罚屋。 經(jīng)常有香客問我,道長嗅绸,這世上最難降的妖魔是什么脾猛? 我笑而不...
    開封第一講書人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮鱼鸠,結(jié)果婚禮上猛拴,老公的妹妹穿的比我還像新娘羹铅。我一直安慰自己,他們只是感情好愉昆,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開白布职员。 她就那樣靜靜地躺著,像睡著了一般跛溉。 火紅的嫁衣襯著肌膚如雪焊切。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,573評(píng)論 1 305
  • 那天芳室,我揣著相機(jī)與錄音专肪,去河邊找鬼。 笑死堪侯,一個(gè)胖子當(dāng)著我的面吹牛嚎尤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播伍宦,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼诺苹,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了雹拄?” 一聲冷哼從身側(cè)響起收奔,我...
    開封第一講書人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎滓玖,沒想到半個(gè)月后坪哄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡势篡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年翩肌,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片禁悠。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡念祭,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出碍侦,到底是詐尸還是另有隱情粱坤,我是刑警寧澤,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布瓷产,位于F島的核電站站玄,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏濒旦。R本人自食惡果不足惜株旷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望尔邓。 院中可真熱鬧晾剖,春花似錦锉矢、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至雕什,卻和暖如春缠俺,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背贷岸。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來泰國打工壹士, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人偿警。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓躏救,卻偏偏與公主長得像,于是被迫代替她去往敵國和親螟蒸。 傳聞我的和親對(duì)象是個(gè)殘疾皇子盒使,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容