Android系統中的.apk檔案和dex檔案
對於Android DEX檔案進行優化,需要注意的一點是DEX檔案的結構是緊湊的,但是我們還是要想方設法的進行提高程式的執行速度,我們就仍然需要對DEX檔案進行進一步優化。
調整所有欄位的位元組序(LITTLE_ENDIAN)和對齊結構中的沒一個域 驗證DEX檔案中的所有類 對一些特定的類進行優化,對方法裡的操作碼進行優化 。優化後的檔案大小會有所增加,應該是原Android DEX檔案的1-4倍。 優化發生的時機有兩個:對於預置應用,可以在系統編譯後,生成優化檔案,以ODEX結尾。
這樣在釋出時除APK檔案(不包含DEX)以外,還有一個相應的Android DEX檔案;對於非預置應用,包含在APK檔案裡的DEX檔案會在執行時被優化,優化後的檔案將被儲存在快取中。
每一個Android應用都執行在一個Dalvik虛擬機器例項裡,而每一個虛擬機器例項都是一個獨立的程序空間。虛擬機器的執行緒機制,記憶體分配和管理,Mutex等等都是依賴底層作業系統而實現的。
所有Android應用的執行緒都對應一個Linux執行緒,虛擬機器因而可以更多的依賴作業系統的執行緒排程和管理機制。
不同的應用在不同的程序空間裡執行,加之對不同來源的應用都使用不同的Linux使用者來執行,可以最大程度的保護應用的安全和獨立執行。
Zygote是一個虛擬機器程序,同時也是一個虛擬機器例項的孵化器,每當系統要求執行一個 Android應用程式,Zygote就會FORK出一個子程序來執行該應用程式。這樣做的好處顯而易見:Zygote程序是在系統啟動時產生的,它會完成虛擬機器的初始化,庫的載入,預置類庫的載入和初始化等等操作,而在系統需要一個新的虛擬機器例項時。
Zygote通過複製自身,最快速的提供個系統。另外,對於一些只讀的系統庫,所有虛擬機器例項都和Zygote共享一塊記憶體區域,大大節省了記憶體開銷。Android應用開發和Dalvik虛擬機器Android應用所使用的程式語言是Java語言,和Java SE一樣,編譯時使用Sun JDK將Java源程式程式設計成標準的Java位元組碼檔案(.class檔案)。
而後通過工具軟體DX把所有的位元組碼檔案轉成Android DEX檔案(classes.dex)。最後使用Android打包工具(aapt)將DEX檔案,資原始檔以及AndroidManifest.xml檔案(二進位制格式)組合成一個應用程式包(APK)。應用程式包可以被髮布到手機上執行
相關推薦
Android系統中的.apk檔案和dex檔案
Dex是Dalvik VM executes的全稱,即Android Dalvik執行程式,並非Java ME的位元組碼而是Dalvik位元組碼。Google 在新發布的Android 平臺上使用了自己的Dalvik 虛擬機器來定義,這種虛擬機器執行的並非Java 位元組碼,而是另一種位元組碼:dex 格式
如何驗證Android系統中APK證書鏈的有效性
瀏覽器通過https訪問指定網址時, 需要驗證網站的證書, 瀏覽器中通常內建常用的CA(Certificate Authority)根證書,而網站的證書一般都是由根CA或者子CA簽名的.如果網站沒有這些知名CA簽名, 則需要將網站自己的根證書匯入瀏覽器才能進行h
class檔案和dex檔案
Class檔案 1、什麼是class檔案 能夠被JVM識別,載入並執行的檔案格式。 2、class檔案的生成 3、如何生成一個class檔案(必須配置好java環境變數) 通過IDE自定幫我們build 手動通過jav
Android系統載入Apk檔案的時機和流程分析(1)--Android 4.4.4 r1的原始碼
Android系統在啟動時安裝應用程式的過程,這些應用程式安裝好之後,還需要有一個Home應用程式來負責把它們在桌面上展示出來,在Android系統中,這個預設的Home應用程式就是Launcher了。Android系統的Home應用程式Launcher是由Activit
Android中的ClassLoader與dex檔案加密實現分析
Android中的ClassLoader BaseDexClassLoader Dex類載入器的基類,包含Dex類載入器之間通用功能的實現。 DexClassLoader A class loader that loads classes from .jar
Android獲取.Gradle檔案中的值和Manifests檔案中的值
專案中有登入頁面,但平時除錯的時候每次都輸入使用者名稱密碼來登入太麻煩,寫成固定值釋出的時候又要重新替換和註釋。所以就想從不同版本獲得資訊然後程式碼中控制。 在Android專案檔案中的build.gradle中,在android標籤下的defaultConf
android反編譯apk後,java檔案中出現的一些類似亂碼的問題
概述 java class 反編譯之後,偶爾回碰到一些不正常的程式碼 例如: label0 :_L1 MISSING_BLOCK_LABEL_30 JVM INSTR ret 7 JVM INSTR tableswitch 1 3: default 269、 JVM I
在 Android 系統中直接呼叫 SO檔案(包含System.loadLibrary載入so的路徑解釋)
Android虛擬機器不能直接呼叫底層裝置,如果要對底層裝置進行呼叫,就需要用到so使用 C語言或C++編寫完成,利用NDK進行編譯,直接執行在Linux核心中,按jni呼叫 so時,基本型別可以直接互動。 在 apk裡打包進.so檔案的方法有兩種,一 是在 Androi
Android專案中使用Eclipse匯出jar檔案
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
vs中的sln和suo檔案是什麼
.sln 和 .suo都是是解決方案檔案。 .sln(Visual Studio.Solution):它通過為環境提供對專案、專案項和解決方案項在磁碟上位置的引用,可將它們組織到解決方案中。 包含了較為通用的資訊,包括解決方案所包含專案的列表,解決方案內任何項的位置以及解決方案的生成配置
Android系統中main.mk中關於RCS和SCCS的解釋
# this turns off the RCS / SCCS implicit rules of GNU Make % : RCS/%,v % : RCS/% % : %,v % : s.% % : S
java中io建立檔案和讀取檔案
簡單瞭解IO流:https://www.cnblogs.com/weibanggang/p/10034325.html package com.wbg.iodemo1128; import java.io.*; public class OutputStreamDemo { public
eclipse中的.yml和.properties檔案沒有綠色葉子圖示
0、首先確認正確安裝了STS外掛 要在eclipse使用spring boot建立專案,必須先安裝STS(Spring Tool Suite (STS) for Eclipse),如果網速給力的話可以
python file模組中的文字檔案和二進位制檔案以及字串和byte的理解
大前提:文字檔案和二進位制檔案都是以二進位制的方式存放到硬碟中的 看圖先~ 1. Python file讀寫加不加b w 開啟一個檔案只用於寫入。如果該檔案已存在則開啟檔案,並從開頭開始編輯,即原有內容會被刪除。如果該檔案不存在,建立新檔案。 wb
在Ubuntu/ROS系統中執行多個Python檔案的方法
執行多個Python檔案可以採用,編寫一個launch檔案來實現。launch檔案的新建後,需要儲存在這多個Python檔案所對應的package中,是這個package檔案的主檔案下,新建一個laun
Arch,Manjaro系統中Atom不能刪除檔案.提示gvfs-trash...
在archlinux或者是manjaro中,atom刪除檔案提示 gvfs_trash not install ? 解決方案: #在環境變數中,增加 export ELECTRON_TRASH=gio 重啟Atom Unable to delete files
Linux系統中查詢、刪除重複檔案,釋放磁碟空間。
在Linux系作業系統中查詢並刪除重複檔案的方法的確有很多,不過這裡介紹的是一款非常簡單實用的軟體FSlint。FSlint是一個重複檔案查詢工具,可以使用它來清除不必要的重複檔案,筆者經常使用它來釋放Linux系統中的磁碟空間。 FSlint同時具有GUI和CLI模式。因
嵌入式 Jlink中flash.csv和*.jflash檔案分析
轉自:點選開啟 本文是對《使用Jlink下載程式到Nor Flash》一文的補充和修正(尤其修正init sequence的內容)。 分析這兩個檔案的目的:是為了以後使用新的MCU和Flash時自己製作project檔案。當然可以在圖形介面配置這兩個檔案,但我還是習慣分析
CentOS中環境變數和配置檔案
什麼是環境變數 bash shell用一個叫做 環境變數(environment variable) 的特性來儲存有關shell會話和工作環境的資訊。即允許在記憶體中儲存資料,使得在程式或shell中執行的指令碼能夠訪問它們。 在bash shell中,環境變數分為兩類: 全域性變數 區域性變數 全域性環
EBS中odf檔案和xdf檔案解釋
原地址:https://blog.csdn.net/cymm_liu/article/details/47947991 1、ODF odf(Object Descriptor File),裡邊含有資料庫物件的描述,用於建立資料庫表,檢視,索引等等。 除了打patch可以打odf檔案,我們