Android Studio專案打包(三)打包說明:release和debug版本的區別、v1和v2的簽名使用等等
android中匯出簽名的,apk的release和debug版本的區別
(1)debug簽名的應用程式不能在Android Market上架銷售,它會強制你使用自己的簽名;Debug模式下簽名用的證書(預設是Eclipse/ADT和Ant編譯)自從它建立之日起,1年後就會失效。
(2)debug.keystore在不同的機器上所生成的可能都不一樣,就意味著如果你換了機器進行apk版本升級,那麼將會出現上面那種程式不能覆蓋安裝的問題,相當於軟體不具備升級功能!
Debug通常稱為除錯版本,通過一系列編譯選項的配合,編譯的結果通常包含除錯資訊,而且不做任何優化,以為開發 人員提供強大的應用程式除錯能力。
Release通常稱為釋出版本,是為使用者使用的,一般客戶不允許在釋出版本上進行除錯。所以不儲存除錯信 息,同時,它往往進行了各種優化,以期達到程式碼最小和速度最優。為使用者的使用提供便利。
(3) debug程式通常比release程式要慢,尤其是處理視訊方便release要比debug快很多。在release模式對程式進行除錯的時候經常會遇到變數雖然初始化了,但是在檢視其值的時候卻發現是一個隨機的數並不是初始化的值,有時候在對變數進行監視的時候了,會出現找不到變數的情況。
(4) debug跟release在初始化變數時所做的操作是不同的,debug是將每個位元組位都賦成0xcc, 而release的賦值近似於隨機。在宣告變數後馬上對其初始化一個預設的值是最簡單有效的辦法,否則專案大了你找都沒地方找。程式碼存在錯誤在debug方式下可能會忽略而不被察覺到。debug方式下陣列越界也大多不會出錯,在release中就暴露出來了,這個找起來就比較難了。
(5) 只有DEBUG版的程式才能設定斷點、單步執行、使用 TRACE/ASSERT等除錯輸出語句。REALEASE不包含任何除錯資訊,所以體積小、執行速度快。
v1和v2的簽名使用
問題描述(v1和v2)
Android 7.0中引入了APK Signature Scheme v2,v1呢是jar Signature來自JDK
V1:應該是通過ZIP條目進行驗證,這樣APK 簽署後可進行許多修改 - 可以移動甚至重新壓縮檔案。
V2:驗證壓縮檔案的所有位元組,而不是單個 ZIP 條目,因此,在簽名後無法再更改(包括 zipalign)。正因如此,現在在編譯過程中,我們將壓縮、調整和簽署合併成一步完成。好處顯而易見,更安全而且新的簽名可縮短在裝置上進行驗證的時間(不需要費時地解壓縮然後驗證),從而加快應用安裝速度。
方案一
只勾選v1簽名並不會影響什麼,但是在7.0上不會使用更安全的驗證方式
只勾選V2簽名7.0以下會直接安裝完顯示未安裝,
7.0以上則使用了V2的方式驗證,同時勾選V1和V2則所有機型都沒問題
方案二
在app的build.gradle的android標籤下加入如下
signingConfigs { debug { v1SigningEnabled true v2SigningEnabled true } release { v1SigningEnabled true v2SigningEnabled true } }
參考連結:
https://www.cnblogs.com/hhks/p/4792334.html
https://zhidao.baidu.com/question/620939843767120332.html
https://blog.csdn.net/qq_36726461/article/details/71520268
https://blog.csdn.net/lvshuchangyin/article/details/62227286
http://www.cnblogs.com/ok-lanyan/archive/2013/04/02/2995462.html