1. 程式人生 > >Android APP簽名和簽名等資訊檢視

Android APP簽名和簽名等資訊檢視

最近在寫學校的創新專案,是一個基於定位的簽到系統,需要用到百度地圖,百度地圖SDK的使用需要申請身份,獲取key值等,過程中需要提供應用的簽名,下面介紹一下簽名的使用。

1. 為什麼要簽名?

  • 傳送者的身份認證
    由於開發商可能通過使用相同的 Package Name 來混淆替換已經安裝的程式,以此保證簽名不同的包不被替換
  • 保證資訊傳輸的完整性
    簽名對於包中的每個檔案進行處理,以此確保包中內容不被替換
  • 防止交易中的抵賴發生, Market 對軟體的要求
  • -

2. 簽名的說明

  • 所有的應用程式都必須有數字證書, Android 系統不會安裝一個沒有數字證書的應用程式

  • Android 程式包使用的數字證書可以是自簽名的,不需要一個權威的數字證書機構簽名認證

  • 如果要正式釋出一個 Android 應用,必須使用一個合適的私鑰生成的數字證書來給程式簽名,而不能使用 adt 外掛或者 ant 工具生成的除錯證書來發布

  • 數字證書都是有有效期的, Android 只是在應用程式安裝的時候才會檢查證書的有效期。如果程式已經安裝在系統中,即使證書過期也不會影響程式的正常功能

  • 簽名後需使用 zipalign 優化程式

  • Android 將數字證書用來標識應用程式的作者和在應用程式之間建立信任關係,而不是用來決定終端使用者可以安裝哪些應用程式

3. AndroidStudio 對APP的簽名
AndroidStudio 對APP的簽名 的方式至少有兩種(我所知道的),下面重點 講一下這兩種簽名的操作

  • 第一種:最簡單的方式就是讓AndroidStudio自己生成簽名並且實現專案打包
    操作:
    1.點選選單欄的build/Grenerate Signed APK這裡寫圖片描述
    之前沒有使用過,在Key store path會是空白的,需要我們新建一個簽名檔案,有兩種生成方法,一種是使用命令列生成,另外一種是使用androidStudio直接生成。這就是androidstudio的強大之處。簡單說一下androidStudio上生成簽名檔案,單擊Create new Key Store,跳轉到下面頁面:這裡寫圖片描述
    點選確認後會出現下面的頁面
    這裡寫圖片描述
    點選next,進入專案簽名
    這裡寫圖片描述
    點選finish之後,執行專案簽名,執行完之後可以在專案裡找到相對應生成的專案APK檔案

    檢視簽名信息
    開啟Terminal命令列視窗,輸入以下命令列:keytool -list -v -keystore “C:\Users\Mr.C\AttendenceSystem.jks” 會得到以下資訊:這裡寫圖片描述
    註釋:後面引號的路徑是之前生成的簽名檔案的路徑

  • 第二種:前提是你已經有簽名檔案了
    操作如下:
    這裡寫圖片描述
    開啟app 的build.gradle可以看到如下程式碼:

signingConfigs {
        config {
            keyAlias 'xxxx'
            keyPassword 'xxxxxx'
            storeFile file('xxxxxxxxxxxxxxxxxxxxxx')
            storePassword 'xxxxxxxxxxx'
        }
    }

接下來,做如下操作:
這裡寫圖片描述
在回去看 app 的build.gradle檔案,可以看到增加如下程式碼:

buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.config
        }
        debug {
            signingConfig signingConfigs.config
        }
    }

下次再對百度地圖SDK的使用協議籤總結,感覺坑挺多的