日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android—APK、JVM-Dalvik-ART

發布時間:2023/12/18 Android 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android—APK、JVM-Dalvik-ART 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

APK

APK的本質是一個zip壓縮包,如果將后綴名改成.zip,就可以解壓,APK 文件與 Zip 文件最大的一個不同是 APK 包含簽名信息,用于保證安裝包安全不被修改

  • res文件夾:用于存放Android資源文件的目錄,里面有drawable圖片資源,布局文件等,這里面的文件都是被編譯過的(圖片除外)
  • assets目錄:用于存放需要打包到APK中的靜態文件,文件沒有進行編譯
  • META-INF目錄:即Metadata infomation元數據(又稱中介數據、中繼數據,用于描述數據的數據)信息目錄,里面有MANIFEST.MF:摘要文件,列出了apk的所有文件,以及這些文件內容所對應的base64-encoded SHA1 哈希值,用于驗證apk文件的完整性,判斷apk是否被篡改;
  • CERT.SF:摘要簽名文件,它列出了MANIFEST.MF這個文件中每條信息的hash值,用于驗證摘要文件是否被篡改;CERT.RSA:該文件保存了解密用的公鑰,以及加密算法等信息等
  • AndroidManifest.xml:Android的應用配置文件,描述了應用的總體信息,需要使用的用戶權限以及組件等等,已被編譯
  • resources.arsc:資源配置文件,用于記錄資源文件與資源id之間的映射關系,res/values中的信息大部分被編譯在此處
  • lib目錄:Android依賴的Native庫的目錄,其中會根據不同的cpu架構分為多個子目錄
  • classes.dex:能用于dalvik執行的字節碼,由多個.class的Java字節碼文件組合而成

APK生成過程

AS用Java代碼編寫的.java文件經過JavaC編譯成.class文件再通過dex工具成.dex文件。

虛擬機

1.JVM

JVM加載機制

2.Dalvik

Dalvik作為面向Linux、為嵌入式操作系統設計的虛擬機,支持已轉換為.dex?格式的Java應用程序的運行。

每個進程對應著一個Dalvik虛擬機實例。

Dalvik早期并沒有JIT編譯器,直到Android2.2才加入了對JIT(just in time)的技術支持。

JIT:當App運行時,每當遇到一個新類,JIT編譯器就會對這個類進行編譯,經過編譯后的代碼,會被優化成相當精簡的原生型指令碼(即native code),這樣在下次執行到相同邏輯的時候,速度就會更快。所以導致應用第一次啟動速度較慢。

在 Dalvik下,應用每次運行的時候,字節碼仍需要通過即時編譯器轉換為機器碼,這會拖慢應用的運行效率

Dalvik與JVM主要區別是

  • Dalvik 是基于寄存器的架構,而 JVM是棧機。
  • Dalvik虛擬機加載的是.dex文件,JVM加載的是.class文件。

3.ART (Android Runtime)

Android4.4新增加的ART,5.0基本完善。

在ART 環境中,應用在安裝的時候,ART使用設備自帶的dex2oat工具來編譯應用,classes.dex文件會被工具dex2oat翻譯成本地機器指令,使其成為真正的本地應用。這個過程叫做預編譯(AOT,ahead of time)。這樣的話,應用的啟動(首次)和執行都會變得更加快速。

相比Dalvik,ART啟動時間快,電耗低等

不過安裝時間會相對長,應用占內存會更大。

總結

以上是生活随笔為你收集整理的Android—APK、JVM-Dalvik-ART的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。