国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Android篇】APK打包流程淺析

這篇具有很好參考價(jià)值的文章主要介紹了【Android篇】APK打包流程淺析。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

在面試中,大公司會(huì)問(wèn)你.....(吃飯了嗎?)咳咳~

  1. APK打包流程全過(guò)程?

  1. APK簽名在實(shí)際業(yè)務(wù)中能處理什么?

  1. APK加固原理是如何實(shí)現(xiàn)的,怎么保證安全?

  1. APK簽名V1,V2,V3的區(qū)別于原理,有什么漏洞?

這里只講解APK打包流程全過(guò)程。

現(xiàn)在2023年了,一般都是用Android studio來(lái)設(shè)計(jì)android,而最直接的安卓APK打包方式則是使用Android Studio集成直接生成apk,所以本文就介紹以AS集成生成APK的方式來(lái)講解。


首先先介紹以下編譯的不同,在AS里面有很多的這種編譯的選項(xiàng),但是這些選項(xiàng)有什么區(qū)別呢?

Sync Project with gradle files:對(duì)gradle文件之后,或刷新gradle配置時(shí)使用。

Make project:只是對(duì)項(xiàng)目中新產(chǎn)生或修改過(guò)的文件進(jìn)行一次編譯,已經(jīng)編譯過(guò)了的就不會(huì)編譯了,耗時(shí)相對(duì)較短。

Clean Project :刪除build目錄下的所有文件,并對(duì)項(xiàng)目的大部分文件進(jìn)行重新編譯,時(shí)間相對(duì)于Rebuild Project短點(diǎn)。

Rebuild Project :包含了Clean的操作,并對(duì)整個(gè)項(xiàng)目進(jìn)行了重新編譯(包括NDK和資源文件),因此耗時(shí)相對(duì)較長(zhǎng)。

Invalidate Cache/Restart AndroidStudio:自動(dòng)生成的項(xiàng)目緩存異常時(shí),點(diǎn)擊可清理項(xiàng)目緩存并重啟AndroidStudio,重啟后即可正常生成項(xiàng)目文件。

Build APK:前面4個(gè)選項(xiàng)都是編譯,沒(méi)有生成apk文件,如果想生成apk,需要點(diǎn)擊Build APK。
Generate Signed APK:生成有簽名的apk。

————————————————
版權(quán)聲明:本文為CSDN博主「carter_yu」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接: https://blog.csdn.net/carter_yu/article/details/105641951

我們常規(guī)的打包就是點(diǎn)擊下方這個(gè)圖,點(diǎn)擊它。

【Android篇】APK打包流程淺析

此時(shí)此刻在我們Project面板的app\bulid\outputs\apk\debug中會(huì)生成一個(gè)對(duì)應(yīng)的apk的包,這個(gè)過(guò)程APK打包的這個(gè)能力不是AS軟件提供的,而是AS的SDK提供的(就是當(dāng)初你安裝AS的時(shí)候安裝的SDK)。

而SDK里面有一個(gè)build-tools文件夾。

【Android篇】APK打包流程淺析

點(diǎn)開(kāi)發(fā)現(xiàn)有好幾個(gè)版本。

【Android篇】APK打包流程淺析

隨便點(diǎn)擊一個(gè)33版本的。

【Android篇】APK打包流程淺析

build-tools里面有很多我們打包會(huì)用到的工具,里面的工具可以完成具體的功能,例如aapt,aidl等等。

AS的Gradle就是調(diào)度我們這些工具的,以前是用Eclipse來(lái)調(diào)度這些工具的?,F(xiàn)在都用AS啦,要學(xué)會(huì)跟著新時(shí)代的腳步,不過(guò)以前的技術(shù)還是要了解一下。

【Android篇】APK打包流程淺析

我們從上往下看,寫(xiě)代碼期間會(huì)自動(dòng)調(diào)用aapt和aidl工具。

aapt:每當(dāng)我們寫(xiě)一個(gè)XML文件,aapt.exe就會(huì)被AS自動(dòng)調(diào)度,生成一個(gè)R.java文件。而被打包后會(huì)生成一個(gè).arsc文件,也就是我們的res目錄被打包了,但是assets和lib文件夾下的這些資源aapt就不會(huì)進(jìn)行處理,默認(rèn)過(guò)濾。

aidl:進(jìn)程間的通信。aidl.exe就會(huì)被AS自動(dòng)調(diào)度,生成一個(gè)java Interface文件。

Application Source code:而最上方中間的是我們寫(xiě)的源文件代碼。

【Android篇】APK打包流程淺析

java compiler:Gradle通過(guò)調(diào)用javac命令,把三個(gè).java文件全部轉(zhuǎn)化為.class文件。

此時(shí)此刻在我們Project面板的app\bulid\intermediates\javac\debug\classes\com底下會(huì)生成一系列的.class文件。

【Android篇】APK打包流程淺析

類(lèi)加載機(jī)制
JVM加載類(lèi)文件的話,單個(gè)文件加載會(huì)觸發(fā)N次IO流
幾百個(gè)類(lèi)會(huì)觸發(fā)更多次IO流。
所以安卓對(duì)類(lèi)加載進(jìn)行了一定的優(yōu)化,將.class轉(zhuǎn)為.dex文件,體積更小,本質(zhì)上還是字節(jié)碼。

而.class文件屬于jar包。

而我們安卓虛擬機(jī)又不同于jvm,還有一些安卓私有的東西,所以要轉(zhuǎn)化為.dex文件。

Gradle調(diào)用到dx.bat工具,把.class文件轉(zhuǎn)化為.dex文件。

第三方j(luò)ar包也是編譯后的.class文件,也要被轉(zhuǎn)化為.dex文件。

此時(shí)此刻在我們Project面板的app\bulid\intermediates\dex\debug下會(huì)生成.dex文件。

【Android篇】APK打包流程淺析
【Android篇】APK打包流程淺析

Other Resources:比如assets,lib和res一些圖片和XML文件等等,這些資源就不會(huì)經(jīng)過(guò)相關(guān)工具處理,直接放入apk包中。

Compiled Resources:生成一個(gè)resoueces.arsc文件。

apk builder:調(diào)用libbcc.dll動(dòng)態(tài)鏈接庫(kù),打包成APK。

比如:把.dex文件

res文件

清單文件

META-INF源信息文件

resources.arsc文件

新建文件夾,按順序往里面放,然后右鍵壓縮,后綴名zip改成apk。

本質(zhì)上就是這樣,用zip壓縮方案進(jìn)行io操作。

【Android篇】APK打包流程淺析

簽名:Gradle調(diào)用apksigner.bat工具,就從沒(méi)簽名的apk變成有簽名的apk,apk里面就會(huì)多出一個(gè)META-INF源信息文件,沒(méi)簽名就沒(méi)有。

【Android篇】APK打包流程淺析

優(yōu)化4K對(duì)齊:Gradle調(diào)用zipalign.exe工具(磁盤(pán)操作)關(guān)于操作系統(tǒng),對(duì)內(nèi)存再次進(jìn)行優(yōu)化,具體這個(gè)我也不太會(huì)。

【Android篇】APK打包流程淺析

打包是由SDK提供,AS打包就是調(diào)用這些工具全自動(dòng)化完成。所以你也可以自己打包,但是會(huì)出現(xiàn)安全問(wèn)題,所以還是老老實(shí)實(shí)用AS打包吧(大佬可以忽略這句話)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-434153.html

到了這里,關(guān)于【Android篇】APK打包流程淺析的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Android】使用Android Studio打包APK文件

    【Android】使用Android Studio打包APK文件

    打包APK之前,首先需要新建項(xiàng)目,有基礎(chǔ)的可以跳過(guò)。 無(wú)基礎(chǔ)的可以參考:使用Android Studio運(yùn)行Hello World項(xiàng)目 1.找到Build - Generate Signed Bundle or APK - 勾選APK 2.首次需要?jiǎng)?chuàng)建證書(shū),后續(xù)可以使用已創(chuàng)建好的證書(shū) 3.填寫(xiě)證書(shū)信息 選擇密鑰庫(kù)存放路徑,并填寫(xiě)密碼 填寫(xiě)密鑰名稱(chēng)、密

    2024年02月19日
    瀏覽(23)
  • Android中的APK打包與安全

    Android中的APK打包與安全

    apk文件結(jié)構(gòu) classes.dex:Dex,即Android Dalvik執(zhí)行文件 AndroidManifest.xml:工程中AndroidManifest.xml編譯后得到的二進(jìn)制xml文件 META-INF:主要保存各個(gè)資源文件的SHA1 hash值,用于校驗(yàn)資源文件是否被篡改,防止二次打包時(shí)資源文件被替換,該目錄下主要包括下面三個(gè)文件: MANIFEST.MF:保

    2024年02月11日
    瀏覽(23)
  • Android apk文件打包自定義命名

    前言 在Android Studio中打包生成的APK和aar文件基本上都是module名稱(chēng)+構(gòu)建類(lèi)型,常見(jiàn)的都是 app-debug.apk 和 app-release.apk 這種樣式的。 顯然沒(méi)有版本號(hào)等序號(hào)標(biāo)識(shí)的話,管理起來(lái)會(huì)比較混亂,基于此種情況,我們可以通過(guò)修改 build.gradle 文件中的配置來(lái)修改生成包的文件名以做區(qū)分

    2024年02月13日
    瀏覽(29)
  • 【Android】反編譯APK及重新打包

    1.下載 APK 反編譯工具 首先,需要下載一個(gè) APK 反編譯工具,例如 Apktool??梢栽诠倬W(wǎng)(https://apktool.org/docs/install)上下載最新版本的 Apktool,也可以使用包管理器來(lái)安裝。 2.反編譯 APK 文件 將要修改包名的 APK 文件放到一個(gè)新建的文件夾中,然后打開(kāi)終端(命令行窗口),進(jìn)入

    2024年04月11日
    瀏覽(18)
  • cocos creator 3.x打包構(gòu)建原生安卓APK流程(打包release版本,修改APP圖標(biāo))

    cocos creator 3.x打包構(gòu)建原生安卓APK流程(打包release版本,修改APP圖標(biāo))

    本文介紹cocos creator 3.x如何打包構(gòu)建原生安卓APK,一開(kāi)始是按照官網(wǎng)構(gòu)建示例操作的,發(fā)現(xiàn)存在各種SDK版本問(wèn)題,因?yàn)閷?duì)原生Android沒(méi)什么研究只能瞎琢磨,最后勉強(qiáng)算是打包出來(lái)了…寫(xiě)個(gè)文章記錄下流程,免得后續(xù)又忘記…如果有不對(duì)的地方,歡迎在評(píng)論區(qū)指正,有疑問(wèn)也可

    2024年02月10日
    瀏覽(34)
  • Android APK 簽名打包原理分析(二)【Android簽名原理】

    說(shuō)到簽名,從這個(gè)詞來(lái)理解,正常個(gè)人需要簽名的時(shí)候,一般是用來(lái)證明這是某個(gè)人的特屬認(rèn)證。 大家是否有印象?還記得我們之前在學(xué)習(xí)、總結(jié)網(wǎng)絡(luò)相關(guān)知識(shí)的時(shí)候,說(shuō)到過(guò),客戶(hù)端和服務(wù)端雖然通信數(shù)據(jù)上,可以采用對(duì)稱(chēng)加密和非對(duì)稱(chēng)加密組合去進(jìn)行數(shù)據(jù)的加密,但是這

    2024年01月18日
    瀏覽(33)
  • Android反編譯修改apk并重新打包

    Android反編譯修改apk并重新打包

    ? ? ? ? Apktool 是反編譯Apk的第三方工具,它可以反編譯資源,并在修改之后重新生成Apk ???????? 注意:apktool 依賴(lài) Java1.8。請(qǐng)使用 java -version 查看,是否為1.8或更高版本。 1.?使用apktool.jar反編譯解包 將需要編譯的apk和apktool.jar放到同一個(gè)文件夾下 在cmd終端,cd到此目錄下

    2023年04月13日
    瀏覽(30)
  • Android打包腳本和上傳apk托管平臺(tái)

    Android打包腳本和上傳apk托管平臺(tái)

    前言 作為Android開(kāi)發(fā)經(jīng)常需要打包提交測(cè)試,多數(shù)情況我們都是通過(guò)Android studio手動(dòng)點(diǎn)點(diǎn)進(jìn)行,后來(lái)項(xiàng)目由于環(huán)境較多(開(kāi)發(fā),測(cè)試,預(yù)發(fā)布,發(fā)布等),手動(dòng)打包就容易出錯(cuò),所以后邊就引起通過(guò)腳本打包提升效率和準(zhǔn)確的需求。 內(nèi)容部分 編寫(xiě)腳本前,需要在app目錄下的

    2024年02月09日
    瀏覽(13)
  • Android apk 反編譯后打包(含簽名)

    Android apk 反編譯后打包(含簽名)

    想分析某些app源碼時(shí),遇到煩人彈框,現(xiàn)在想反編譯看看具體實(shí)現(xiàn)。 用到的工具: GDA4.06 apk反編譯工具 apktool apk 打包工具 jdk 環(huán)境 一、反編譯分析 將apk反編譯打開(kāi) 找到入口代碼 彈框代碼如圖 二、解包、打包 使用apktool解包 ps: apktool工具的用法自行百度 -o模式是指定解包后文

    2024年02月09日
    瀏覽(28)
  • vue3中 打包成apk(android)

    vue3中 打包成apk(android)

    本文僅演示的是打包成android 版本的apk ? ? ? ? 通過(guò)打包命令將vue3項(xiàng)目打包成一個(gè)dist文件夾 注意:一般的打包命令為npm run build,特殊設(shè)置的修改一下打包命令? ? ? ?有時(shí)打包后的文件運(yùn)行出現(xiàn)白屏問(wèn)題,可能是絕對(duì)路徑導(dǎo)致的,在vite.config.js文件中配置base:\\\'./\\\' ?圖一? 解決

    2024年02月16日
    瀏覽(18)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包