1. 程式人生 > >Android Studio專案打包(三)打包說明:release和debug版本的區別、v1和v2的簽名使用等等

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