Android Studio 使用正式簽名進行除錯

LeBron_Six發表於2016-03-17

在Android Studio中,可以使用Gradle進行打包時自動簽名。其實Android Studio預設會給除錯應用加上Debug簽名,但有時候調一些第三方SDK時,需要正式簽名才能調起來,所以接下來分享一下使用Gradle自動簽名的方法。

一、建立簽名檔案

開啟AS,選擇Build->Generate Signed APK,選擇要打包的專案,點選Next,再點選Create new...建立簽名檔案


填寫簽名檔案響應資訊,如下所示,Password、Key-Alias、Key-Password這三個值需要記住,然後點選OK,完成建立。


完成之後,在相應路徑生成一個jks簽名檔案。如果選擇手動再進行打包,就可以選擇該簽名檔案,然後對應填入密碼與別名,進行簽名,也可以。


二、配置Gradle自動打包

拷貝簽名檔案到主工程根目錄,開啟主工程的build.gradle檔案,在android節點下,增加以下內容:

signingConfigs {
        release {
            storeFile file('keystore.jks')
            storePassword '123456'
            keyAlias 'yyh'
            keyPassword '123456'
        }
    }

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

        debug {
            signingConfig signingConfigs.release
        }
    }
    storeFile file:簽名檔案,如果放在其他路徑,需要對應修改

    storePassword:密碼(剛才填的第一個密碼)

    keyAlias:別名

    keyPassword:別名密碼

然後重新build一下工程,展開右邊欄Gradle選項卡,如下所示:


assembleRelease,即為正式簽名。雙擊assembleRelease,則會開始執行命令:

執行完畢可以看到BUILD SUCCESSFUL,說明正式簽名打包成功了。展開工程的build資料夾,可發現有app-release.apk,即為正式版本。


下次直接run起來的時候,就帶正式簽名了。這可比手動簽名省事多啦~~

當然,為了提高安全性,我們還可以把那四個屬性作為變數配置在主工程的gradle.propreties,然後在build.gradle引用變數就可以了。如下:



這樣也能起到同樣的效果。

三、應用程式簽名的意義
(1)保障開發者的合法權益
在我們對應用程式進行打包簽名後,即表示此應用程式是簽名人或機構所開發的,對此應用程式具有所有權。
(2)預防應用程式替換
應用程式簽名可以防止部分人通過使用相同的Package Name來混淆替換已經安裝的程式,從而出現一些惡意篡改。APK如果使用一個key簽名,釋出時另一個key簽名的檔案將無法安裝或覆蓋老的版本,這樣可以防止你已安裝的應用被惡意的第三方覆蓋或替換掉。實際上就是一種標識。
(3)保證應用程式版本的一致性
一般應用程式都會有更新,即版本的升級。如果應用程式的簽名不一致,是無法進行更新替代的。所以應用程式的簽名是保證當前應用程式順利進行更新安裝的前提。

(4)可以通過許可權(permission)的方式在多個程式間共享資料和程式碼

Android提供了基於數字證書的許可權賦予機制,應用程式可以和其他的程式共享概功能或者資料給那那些與自己擁有相同數字證書的程式。如果某個許可權(permission)的protectionLevel是signature,則這個許可權就只能授予那些跟該許可權所在的包擁有同一個數字證書的程式。另一方面,Android系統允許擁有同一個數字簽名的程式執行在一個程式中,Android程式會將他們視為同一個程式。所以開發者可以將自己的程式分模組開發,而使用者只需要在需要的時候下載適當的模組。


相關文章