1. 程式人生 > >Android打包APK流程及原理

Android打包APK流程及原理

Android的包檔案APK分為兩個部分:程式碼和資源,所以打包方面也分為資源打包和程式碼打包兩個方面,這篇文章就來分析資源和程式碼的編譯打包原理。

APK整體的的打包流程如下圖所示:


具體說來:

  1. 通過AAPT工具進行資原始檔(包括AndroidManifest.xml、佈局檔案、各種xml資源等)的打包,生成R.java檔案。

  2. 通過AIDL工具處理AIDL檔案,生成相應的Java檔案。

  3. 通過Javac工具編譯專案原始碼,生成Class檔案。

  4. 通過DX工具將所有的Class檔案轉換成DEX檔案,該過程主要完成Java位元組碼轉換成Dalvik位元組碼,壓縮常量池以及清除冗餘資訊等工作。

  5. 通過ApkBuilder工具將資原始檔、DEX檔案打包生成APK檔案。

  6. 利用KeyStore對生成的APK檔案進行簽名。

  7. 如果是正式版的APK,還會利用ZipAlign工具進行對齊處理,對齊的過程就是將APK檔案中所有的資原始檔舉例檔案的起始距離都偏移4位元組的整數倍,這樣通過記憶體對映訪問APK檔案
    的速度會更快。

APK的安裝流程如下所示:


複製APK到/data/app目錄下,解壓並掃描安裝包。

  1. 資源管理器解析APK裡的資原始檔。

  2. 解析AndroidManifest檔案,並在/data/data/目錄下建立對應的應用資料目錄。

  3. 然後對dex檔案進行優化,並儲存在dalvik-cache目錄下。

  4. 將AndroidManifest檔案解析出的四大元件資訊註冊到PackageManagerService中。

  5. 安裝完成後,傳送廣播。

相關推薦

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的值,因此應該取到和應用相關名字。這時候就涉及到了別人開發應用程式的包名問題,自己的能保證包名各不相同,