在開發中,我們很有可能會引入百度地圖等的API,很多這些第三方API要求開發者在第三方開放平臺中進行註冊,註冊一般會需要應用的Package Name以及開發工具的SHA1值等等,從而方便第三方平臺進行驗證。常規做法便是獲取Android Studio的SHA1值,然後到開發平臺進行第三方API密鑰的申請,從而使用第三方API。然而這種做法在獨立開發是沒有問題的,一旦該項目是團隊開發,由於每個開發者的Android Studio的SHA1值不同,導致申請的key在其他開發者電腦中並不能使用。利用Android Studio,我們可以方便地設置調試打包的簽名設置,從而解決這個問題。
爲應用生成簽名密鑰
當項目進行打包時,我們一般會進行應用簽名,所以我們可以提前生成應用的打包簽名密鑰。Android Studio可以方便地生成應用的簽名密鑰。
- Build->Generate signed APK->選擇要打包的項目(默認爲app),next->create new Key Store
- 接着便會進入生成新的密鑰界面,如下圖所示
- 填入存儲地址,密碼,別名,別名密碼,證書相關信息,點擊ok即可
獲取簽名的SHA1值
打開Android Studio的終端Terminal,輸入命令
keytool -list -v -keystore ~/your path -storepass your password
第三方平臺註冊應用
該步驟根據不同的第三方平臺進行操作,獲取應用的appId,secretKey等信息。
build.gradle文件配置
正常情況下,Android Studio有默認的調試證書,我們調試應用時,使用的是默認的調試證書,顯然該證書的SHA1值或者MD5值和我們的簽名證書不同,因此,第三方驗證根本無法通過,導致第三方接口不起作用。所以我們需要利用Android Studio強大的gradle編譯功能,設置應用調試編譯或者打包編譯時,使用的是我們自己的簽名證書。
爲了方便團隊開發,我們需要把生成的簽名證書放入到工程文件中,上傳到SVN或者git服務器。爲了方便,我們直接放在應用的根目錄下,即app目錄下,這樣便和build.gradle文件在相同的目錄。
在build.gradle的android模塊中添加以下信息
signingConfigs {
debug {
storeFile file("your key.jks")
storePassword 'your password'
keyAlias 'your key alias'
keyPassword 'your password'
}
release {
storeFile file("your key.jks")
storePassword 'your password'
keyAlias 'your key alias'
keyPassword 'your password'
}
}
調試和發佈版本我們一般使用相同的簽名證書。並且修改buildType塊如下
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug{
signingConfig signingConfigs.debug
}
}
這樣設置後,應用調試編譯就會使用我們自己的簽名證書。
通過Android Studio的簽名設置功能,我們可以方便地在團隊開發中使用第三方框架,而不必每人自己切換第三方框架的appId以及secretKey等。