Android打包APK流程及原理
Android的包檔案APK分為兩個部分:程式碼和資源,所以打包方面也分為資源打包和程式碼打包兩個方面,這篇文章就來分析資源和程式碼的編譯打包原理。
APK整體的的打包流程如下圖所示:
具體說來:
通過AAPT工具進行資原始檔(包括AndroidManifest.xml、佈局檔案、各種xml資源等)的打包,生成R.java檔案。
通過AIDL工具處理AIDL檔案,生成相應的Java檔案。
通過Javac工具編譯專案原始碼,生成Class檔案。
通過DX工具將所有的Class檔案轉換成DEX檔案,該過程主要完成Java位元組碼轉換成Dalvik位元組碼,壓縮常量池以及清除冗餘資訊等工作。
通過ApkBuilder工具將資原始檔、DEX檔案打包生成APK檔案。
利用KeyStore對生成的APK檔案進行簽名。
如果是正式版的APK,還會利用ZipAlign工具進行對齊處理,對齊的過程就是將APK檔案中所有的資原始檔舉例檔案的起始距離都偏移4位元組的整數倍,這樣通過記憶體對映訪問APK檔案
的速度會更快。
APK的安裝流程如下所示:
複製APK到/data/app目錄下,解壓並掃描安裝包。
資源管理器解析APK裡的資原始檔。
解析AndroidManifest檔案,並在/data/data/目錄下建立對應的應用資料目錄。
然後對dex檔案進行優化,並儲存在dalvik-cache目錄下。
將AndroidManifest檔案解析出的四大元件資訊註冊到PackageManagerService中。
安裝完成後,傳送廣播。
相關推薦
Android打包APK流程及原理
Android的包檔案APK分為兩個部分:程式碼和資源,所以打包方面也分為資源打包和程式碼打包兩個方面,這篇文章就來分析資源和程式碼的編譯打包原理。APK整體的的打包流程如下圖所示:具體說來:通過AAPT工具進行資原始檔(包括AndroidManifest.xml、佈局檔案、
Android UI繪製流程及原理
一、繪製流程原始碼路徑 1、Activity載入ViewRootImpl ActivityThread.handleResumeActivity() --> WindowManagerImpl.addView(decorView, layoutParams) --> WindowManager
支付寶app支付java後臺流程及原理分析
system 分析 req eterm 格式 prop 通過 false 由於 java版支付寶app支付流程及原理分析 本實例是基於springmvc框架編寫 一、流程步驟 1.執行流程 當手機端app(就是你公司開發的a
(轉) 用戶訪問網站基本流程及原理(史上最全,沒有之一)
發送 操作 導致 靜態路由 讀寫分離 壓力 共享存儲 空行 維護 用戶訪問網站基本流程及原理(史上最全,沒有之一) 原文:http://blog.csdn.net/yonggeit/article/details/72857630 目錄(?)[-] 用
uWSGI+django+nginx部署流程及原理
在進行部署的時候不知道走了多少坑。走通過後才發現原來也就是那麼回事,說難也不難,說簡單也確實有很多坑。 部署環境 系統:Centos7 Python: python3.6.5 Django:Django2.1 web伺服器:Nginx 應用程式伺服器:uWSGI 一、
android 開發環境搭建及原理,還有坑。
花了一天時間,幾個東西終於通了。 android開發: 1.eclipse——————就是一個介面,一個殼,讓你來操作的,就像人的外表,不過他可以包很多東西進去(下面的東西他都包) 2.jdk————————這個是java程式設計的必須模組,用java開發,跑jav
Java框架Mybatis的工作流程及原理
Mybatis簡介: MyBatis 是一款優秀的持久層框架,它支援定製化 SQL、儲存過程以及高階對映。MyBatis 避免了幾乎所有的 JDBC 程式碼和手動設定引數以及獲取結果集。MyBatis 可以使用簡單的 XML 或註解來配置
Unity Android打包apk安裝錯誤INSTALL_FAILED_CONFLICTING_PROVIDER
原因: Assets\Plugins\Android\GCloud\AndroidManifest.xml 裡這一段 android:authorities="com.123456789.abcdefg.ApolloFileprovider" 被安裝手機中另一個包名不同但是aut
51微控制器的工作流程及原理解析、stm32的bootload解析
(1)51執行原理: http://www.elecfans.com/emb/danpianji/20181030805716.ht
android 休眠喚醒流程及定位喚醒問題總結
平臺資訊: 核心:linux 2.6.35 android:2.3.1 CPU:三星S5PV210 就從earlysuspend.c中說起,在early suspend中執行完所有驅動的early suspend後會呼叫wake_unlock,在wake_unlock函式
SHIRO工作流程及原理及在Spring中整合
1.最近接觸了Shiro這一安全的框架: 這可以幫我們完成:認證、授權、加密、會話管理、與Web整合、快取等。 Shiro可以基本功能分為如下: Authentication:身份認證/登入,驗證使用者是不是擁有相應的身份; Authorizatio
詳解openstack命令啟動實現流程及原理(nova --debug image-list)
第二個引數就是entry_points.txt檔案group名稱 nova就是傳遞進來的引數,實際指向novaclient.shell模組的main函式 跟進程式碼: 上述程式碼從命令列接收引數,或者從環境變數中獲取引數值,進行驗證等操作。 nova --debug im
Android framework工作方式及原理
應用程式框架層:framework主要是一些核心的檔案,從字尾名為jar可以看出是是系統平臺框架。Android底層技術為什麼要研究 Android Framework?這是一個軟體工程以及專案管理面的問題。Android Framework 是 Application Fr
shiro使用流程及原理
1、核心介紹 1)Application Code使用者編寫程式碼 2)Subject就是shiro管理的使用者 3)SecurityManager安全管理器,就是shiro許可權控制核心物件,在程式設計時,只需要操作Subject
cordova打包apk流程
使用cordova打包的好處:Cordova是一個用基於HTML、CSS和JavaScript的,用於建立跨平臺移動應用程式的快速開發平臺。它使開發者能夠利用iPhone、Android、等智慧手機的核心功能——包括地理定位、加速器、聯絡人、聲音和振動等,此外Cordova擁
【Egret】Wing3釋出移動APP功能,打包APK流程以及會遇到的問題
流程:1.安裝好wing 3,然後 外掛——Egret專案工具——釋出移動APP——Build android native project 2.配置釋出環境: Android
Xamarin.Android 打包Apk
由於大部分內容來自Xamarin的官網,因此這篇文章定義為翻譯,原文地址: http://developer.xamarin.com/guides/android/deployment,_testing,_and_metrics/publishing_an_applicat
react native windows下打包apk流程
自己的 apk min 代碼 技術 環境 store 顯示 str 1、生成一個簽名密碼 keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysi
Cocos Creator Android打包 apk
這一篇講的是用 Cocos Creator 編譯器打包 Android APP 的時候遇到的一些問題,雖然說打包的過程不是很複雜,但是在其中還是會遇到各式各樣的坑。 我們將專案用CCC(Cocos Creator)編譯器打包的時候,肯定是要先配置一下本機的開發環境,我這裡主要是打包成 Android APP
Android Studio——Apk簽名及配置
一、簡介: AndroidManifest.xml檔案中的 package可以認為是一個應用的唯一標識id ,在建立專案時輸入的應用包名就是AndroidManifest.xml檔案中的 package的值,因此應該取到和應用相關名字。這時候就涉及到了別人開發應用程式的包名問題,自己的能保證包名各不相同,