Android開發之簽名極速飛艇製作V1和V2的區別

1.用於極速飛艇製作,需要請搜索【大神源碼論壇】dsluntan.com 客服企娥3393756370 V信17061863513,驗證其完整性的APK的加密簽名現在位於ZIP中央目錄之前。

2.這個簽名是在整個APK文件的二進制內容上計算和驗證的,而不是在v1的歸檔文件中解壓縮文件內容。

3.一個APK可以同時由v1和v2簽名同時簽署,所以它仍然可以向後兼容以前的Android版本。

如果只設置V2會引入什麼問題呢?
只設置V2簽名7.0以下會直接安裝完顯示未安裝,7.0以上則使用了V2的方式驗證

報錯信息爲:INSTALL_PARSE_FAILED_NO_CERTIFICATES

只要將簽名設置爲V2即可解決

同時設置V1和V2則所有機型都沒問題

只設置v1簽名並不會影響什麼,但是在7.0上不會使用更安全的驗證方式

如何驗證apk應用的什麼簽名方式呢?

使用adb shell dumpsys package xxx(這裏的xxx是指你的apk包名)的命令查看apkSigningVersion的值爲多少。

下面是對官網的翻譯

在Android Studio 2.2中理解APK打包

2016年11月10
Wojtek Kaliciński發佈的Android開發者倡議

最近,Android Studio 2.2推出了許多新的和改進的功能。有些變化很容易被忽略,
因爲它們發生在Android分級插件的底層,比如重新編寫的集成APK打包和簽名步驟。
APK簽名方案v2

在Android 7.0版本的新APK簽名方案中引入了新的APK簽名方案,我們決定重寫APKs在Android分級插件中的工作方式。在文檔中,您可以閱讀所有關於v2簽名的底層技術細節,但是這裏有一個快速的tl;作爲一個Android應用程序開發人員,您需要的信息摘要:

用於驗證其完整性的APK的加密簽名現在位於ZIP中央目錄之前。

這個簽名是在整個APK文件的二進制內容上計算和驗證的,而不是在v1的歸檔文件中解壓縮文件內容。

一個APK可以同時由v1和v2簽名同時簽署,所以它仍然可以向後兼容以前的Android版本。

爲什麼要將這種變化引入Android如何驗證APKs呢?首先,爲了增強這種新簽名格式的安全性和可擴展性,其次是性能——新簽名要花更少的時間在設備上驗證(不需要進行昂貴的解壓),從而加快了應用安裝時間。

然而,這個新簽名方案的結果是,在APK創建過程中存在新的約束。因爲在v1中只對未壓縮的文件內容進行了驗證,所以在APK簽名之後可以進行很多修改——文件可以移動,甚至可以重新壓縮。事實上,作爲構建過程的一部分的zipalign工具確實做到了這一點——它被用於在正確的字節邊界上對齊ZIP條目以提高運行時性能。

因爲v2簽名驗證了歸檔中的所有字節,而不是單獨的ZIP條目,所以在簽名之後運行zipalign是不可能的。這就是爲什麼壓縮、對齊和簽名現在發生在構建過程的一個單一的、集成的步驟中。

如果您在構建過程中有任何定製任務,包括篡改或處理APK文件,請確保禁用它們,否則您可能會使v2簽名失效,從而使您的APKs與Android 7.0和以上版本不兼容。

如果您選擇手動進行簽名和對齊(例如從命令行),我們將在Android SDK中提供一個新的工具,名爲apksigner,它提供了v1和v2 APK的簽名和驗證。注意,如果您使用的是v2簽名,您需要在運行apksigner之前運行zipalign。還請記住,JDK中的jarsigner工具與Android v2簽名不兼容,所以如果您想保留v2簽名,您就不能使用它來重新標記您的APKs。

如果你想在使用Android分級插件時禁用添加v1或v2的簽名,你可以將這些行添加到你的signingConfig部分。

v1SigningEnabled false

v2SigningEnabled false

注意:在Android分級插件2.2中,兩個簽名方案都是默認啓用的。

爲更小的APKs發佈版本

我們在重寫packager時利用這個機會,對發佈APKs的大小進行了一些優化,從而獲得更快的下載速度,在Play Store上進行更小的增量更新,在設備上的空間也更少。
以下是我們做出的一些改變:

歸檔文件中的文件現在已經排序,以最小化APK構建之間的差異。
所有的文件時間戳和元數據都被歸零。
第6級和第9級壓縮對所有文件進行並行檢查,並使用最優的文件,也就是說,如果L9對大小沒有什麼好處,那麼可以選擇L6以獲得更好的性能。
本地庫存儲在APK中,未壓縮和頁面對齊。
這將支持android:extractNativeLibs =“false”選項從android 6.0設備上的棉花糖,讓應用程序使用更少的空間以及生成更新玩小商店
Zopfli壓縮不用於更好地支持Play Store更新算法。
不建議與Zopfli重新壓縮你的APKs。
在您的項目中,預先優化單個資源,如PNG文件,仍然是很好的,並且推薦。

這些變化有助於讓你的版本儘可能的小,這樣用戶就可以下載和更新你的應用,即使是在較慢的連接上,或者在功能較差的設備上。
但是,調試構建又如何呢?
安裝速度的調試構建

在開發應用程序時,您需要快速地保持迭代週期——更改代碼、構建和部署在一個連接的設備或模擬器上。
自Android Studio 2.0以來,我們一直致力於儘可能快地完成所有的步驟。
通過即時運行,我們現在只能夠在運行時更新代碼和資源,而新的仿真器可以爲更快的APK傳輸和安裝提供多處理器支持和更快的ADB速度。
構建改進可以進一步縮短這個時間,在Android Studio 2.2中,我們引入了增量打包和並行壓縮來調試構建。
與其他特性一起,例如有選擇地爲目標設備密度和ABI打包資源,這將使您的開發速度更快。

警告:爲即時運行創建的APK文件或通過調用調試構建而不是在Play Store上發佈的!
它們包含了用於即時運行的額外的插裝代碼,除了啓動構建時連接的設備配置外,還缺少用於設備配置的資源。
確保你只發布了APK的發佈版本,你可以使用Android Studio生成已簽署的APK命令或組裝的分級任務來創建APK。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章