Android Studio打包專案:APK

叫我流氓發表於2020-09-28

本節只針對如何從零開始實現簡單的打包簽名

建立新的簽名檔案

概要

debug.keystore:使用Android Studio直接編譯執行時預設使用的簽名證書,存放路徑C:\Users<你的使用者名稱>.android
app-debug.apk:使用Android Studio直接編譯時生成的apk檔案
V1(Jar Signature):
V2(Full APK Signature):
APK檔案的校驗指令:jarsigner -verbose -certs -verify 簽名過的apk檔案

AS版本資訊

博主當下使用的AS版本資訊

簽名檔案的生成

Android APP都需要我們用一個證書對應用進行數字簽名,不然的話是無法安裝到Android手機上的,平時我們除錯執行時到手機上時,是AS會自動用預設的金鑰和證書來進行簽名;但是我們實際釋出編譯時,則不會自動簽名,這個時候我們就需要進行手動簽名,那麼我們的簽名檔案怎麼來?下面圖文結合會手把手教你
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

在這裡插入圖片描述
在這裡插入圖片描述
到此,前面檔案已經生成在我們指定的目錄下了
備註:一個簽名檔案,是可以被多個APP專案進行簽名打包使用的

簽名打包

  • 除錯執行時的打包
    我們上面有提到使用AS直接編譯進行除錯執行時,使用的是預設的簽名檔案進行簽名,這時候會在build/outputs/apk/debug/目錄下生成一個app-debug.apk,這個就是使用谷歌預設的簽名檔案進行簽名打包的
  • 釋出編譯時的打包
    當我們已經開發完成之後,要實際放到應用市場上去進行釋出時,就需要使用正式簽名檔案編譯Release包,其中可以使用AS的操作介面進行打包,也可以使用Gradle命令進行打包,以下是AS視覺化操作進行打包步驟
    在這裡插入圖片描述
    根據需要,可以簽名打包出Debug版本和Release版本
    在這裡插入圖片描述
    編譯出來的目錄地址:
    在這裡插入圖片描述
    最後,我們初次把包打出來之後,當然要驗證是否有簽名成功
    jarsigner -verbose -certs -verify 簽名過的apk檔案
    AS除錯執行時包驗證結果如下
C:\Users\Aso>jarsigner -verbose -certs -verify C:\Users\Aso\Desktop\apk\app-debug.apk

  s = 已驗證簽名
  m = 在清單中列出條目
  k = 在金鑰庫中至少找到了一個證書
  i = 在身份作用域內至少找到了一個證書

沒有清單。

jar 未簽名。

C:\Users\Aso>

釋出編譯時包驗證結果(裁剪過的)如下 (詳細內容傳送門)

C:\Users\Aso>jarsigner -verbose -certs -verify C:\Users\Aso\Desktop\apptools\app-debug.apk

sm       316 Thu Jan 01 01:01:02 CST 1981 res/interpolator/btn_checkbox_checked_mtrl_animation_interpolator_0.xml

      >>> 簽名者
      X.509, CN=dengfusu
      [證書的有效期為20-9-27 上午11:06至45-9-21 上午11:06]
      [無效的證書鏈: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target]
      
		......
		
      >>> 簽名者
      X.509, CN=dengfusu
      [證書的有效期為20-9-27 上午11:06至45-9-21 上午11:06]
      [無效的證書鏈: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target]


  s = 已驗證簽名
  m = 在清單中列出條目
  k = 在金鑰庫中至少找到了一個證書
  i = 在身份作用域內至少找到了一個證書

- 由 "CN=dengfusu" 簽名
    摘要演算法: SHA-256
    簽名演算法: SHA256withRSA, 2048 位金鑰

jar 已驗證。

警告:
此 jar 包含其證書鏈無效的條目。原因: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
此 jar 包含其簽名者證書為自簽名證書的條目。
此 jar 包含的簽名沒有時間戳。如果沒有時間戳, 則在其中任一簽名者證書到期 (最早為 2045-09-21) 之後, 使用者可能無法驗證此 jar。

簽名者證書將於 2045-09-21 到期。

C:\Users\Aso>

相關文章