apk 是Android Package的簡寫, 在平時的開發過程中,通過點擊 Run app 按鈕 或者 在命令行中輸入
這樣Android Studio就會啟動構建流程,最終輸出一個我們想要的APK。
直達官網介紹
對於小白來說,上面一張圖已經可以解釋apk的構建過程了,不過對於Andoid開發者而言還需要了解一些更詳細的構建過程。
詳細的對應步驟 和 使用工具如下:
資源文件(res文件夾下的文件)通過 AAPT(Android Asset Packaging Tool)打包生成R.java類(資源索引表)、.arsc資源文件 和res文件。
resources.arsc 是一個App的資源索引表,通過R.java 文件 和 resources.arsc 可以定位到資源的內存地址,resources.arsc文件的作用是通過一樣的ID,根據不同的配置索引到最佳的資源顯示在UI中。
AIDL (Android Interface Definition Language), 是Android介面定義語言,是Android提供的IPC (Inter Process Communication,進程間通信)的一種獨特實現。
如果有aidl文件,這個階段會生成對應的Java介面文件。
R.java文件、工程源碼文件、aidl.java文件, 在這一步通過javac生成.class文件。
源碼.class文件和第三方jar或者library通過dx工具打包成dex文件
Android系統的Dalvik虛擬機的可執行文件為DEX格式,所以這里會將上一步中生成的.class文件 和 引用的第三方jar等過程中的.class 一起通過dx工具打包成dex文件
apkbuilder工具會將所有沒有編譯的資源、.arsc資源、.dex文件打包到一個完成apk文件中
tips:
apksigner工具會對未簽名的apk驗證簽名。得到一個簽名後的apk(signed.apk)
apksigner 是google 退出的V2簽名方式
Jarsigner 是之前一直使用的V1簽名方式
可以通過在命令行中輸入apksigner --help來獲取詳情信息,如果沒有特殊需求,使用下面命令即可完成簽名
release mode 下使用 aipalign進行align,即對簽名後的apk進行對齊處理
所謂對齊,主要過程是將APK包中所有的資源文件距離文件起始偏移為4位元組整數倍,這樣通過內存映射訪問apk文件時的速度會更快。對齊的作用主要是為了減少運行時內存的使用。
zipalign是一個android平台上整理APK文件的工具,它對apk中未壓縮的數據進行4位元組對齊,對齊後就可以使用mmap函數讀取文件,可以像讀取內存一樣對普通文件進行操作。如果沒有4位元組對齊,就必須顯式的讀取,這樣比較緩慢並且會耗費額外的內存。
參考文章:
Android-Studio配置構建
淺談Android打包流程
apk打包流程
END!
㈡ 為什麼新的手機平板剛買到手的時候手機編譯是什麼意思
手機編譯時間是手機系統軟體版本編譯完成的時間。
新手機的系統編譯時間通常會早於手機出廠和購買時間的。
新手機的系統編譯時間通常會早於手機出廠日期,更會早於購買日期,手機編譯時間跟手機出場時間一樣,是用於記錄手機某一階段工作完成的時間信息,方便對手機進行檢查和管理的,一般就是一些手機參數、信息的必要展示。
㈢ 編譯是什麼意思
你一定是指程序的編譯吧,如果是的話
編譯的意思就是把程序語言寫成機器可以運行的機器碼的過程。其中會用到編譯器。
編譯器是一種特殊的程序,它可以把以特定編程語言寫成的程序變為機器可以運行的機器碼。我們把一個程序寫好,這時我們利用的環境是文本編輯器。這時我程序把程序稱為源程序。在此以後程序員可以運行相應的編譯器,通過指定需要編譯的文件的名稱就可以把相應的源文件(通過一個復雜的過程)轉化為機器碼了。
㈣ 軟體編譯,這什麼意思
編譯和解釋是從源程序到可執行程序轉換的兩種方法。編譯,是在源程序完成後,先轉換成中間代碼,然後再轉換成二進制代碼,完成後,每次執行,都直接執行這個二進制代碼。一次轉換完成。 而解釋程序的執行不同,他在執行時,是一次讀入一條源代碼...
㈤ 手機編譯時間是什麼意思 手機編譯時間介紹
1、手機編譯時間是手機系統軟體版本編譯完成的時間,新手機的系統編譯時間通常會早於手機出廠和購買時間的。
2、手機的生產日期可以在手機包裝盒上查詢到。手機的生產日期是固定的,不可以更改。
3、手機的購機時間可以在購機發票查詢到,若發票已丟失則不能查詢。
4、手機的購機使用時間是無法直接查到的,可以參考手機發票上的購機時間,如果您的發票已遺失,可以查看手機包裝盒上的生產日期。
5、手機開機後使用時間可以進入手機設置--更多設置--關於手機--已使用時間項查看手機的開機使用時間,手機重啟後使用時間將會清零。
㈥ 編程完要編譯,編譯到底是什麼意思
編程就是編寫程序,也就是敲代碼
編輯應該也是寫代碼的意思吧
編譯一般都是在寫了一行代碼保存的時候,開發工具會編譯你寫的代碼是否有錯,然後會幫你生成一些其他文件
㈦ 為什麼android源碼還需要編譯
android源碼中有著許多的源代碼,其中有c和c++編寫的也有java編寫,這些代碼需要通過重新編譯後才能在android機器上運行的!當然你修改源碼,改完源碼後還是需要對源碼進行編譯的編譯的!android系統源碼的整體編譯需要很長時間,所以一般否是分開來編譯的!這樣縮短了編譯的等待時間,而且也實現了不同人對不同板塊代碼的修改和編譯的分工了!
㈧ 編譯android源代碼的目的是什麼,編譯後會得到什麼東西
定製嘛,就是按你自己的要求設定方案,因為android是開源的,而且google提供了很完備的開發框架,有java基礎的人可以很快上手。
源碼定製估計是現在的android的市場一個發展方向,因為以前都是山寨機,軟體硬體一個樣,而現在智能機在硬體方面基本是差不多的,而android軟體框架也是一樣,但是開發比較簡單,門檻很低,所以一些公司提供了定製服務,改動下源碼提供個性化服務。個人理解,你可以繼續網路了解下。
至於你想學開發android,先看下java,應用層是用java開發的,而且你以後也可以自己開發些小應用鬧著玩。參考書方面很多,什麼android應用開發揭秘啊,adk開發範例大全啊,精通android啊什麼的,可以在網上找電子檔或者別人的教學視頻,很多的。