為你的APK進(jìn)行數(shù)字簽名

摘要: 我們需要為 APK進(jìn)行數(shù)字簽名,這樣才能發(fā)布到 Google Play商店。解決方法很簡單,使用 Java的keytool命令創(chuàng)建證書并在 Gradle構(gòu)建文件的 signingConfigs塊中使用就可以辦到。下面讓我們看看詳細(xì)討論。本文選自《巧用Gradle構(gòu)建Android應(yīng)用》。

成都創(chuàng)新互聯(lián)是一家專注于網(wǎng)站制作、成都網(wǎng)站制作與策劃設(shè)計,什邡網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:什邡等地區(qū)。什邡做網(wǎng)站價格咨詢:13518219792

所有 Android包(APK)文件在部署之前都需要被數(shù)字簽名,Android使用一個已有的密鑰簽發(fā)調(diào)試用的 APK。你可以使用 Java提供的 keytool命令來查看。
默認(rèn)情況下,調(diào)試用的密鑰存儲庫在你的用戶目錄下的 .Android子目錄下面。默認(rèn)的名字叫作 debug.keystore,并且其密碼是 Android。下面示例顯示了怎么列舉默認(rèn)的證書。

示例. 列舉調(diào)試密鑰庫(Mac OS x)

> cd ~/.android> keytool -list -keystore debug.keystore Enter keystore password: ("android") 

Keystore type: JKS Keystore provider: SUN Your keystore contains 1 entry androiddebugkey,Feb 9, 2013, PrivateKeyEntry, 
Certificate fingerprint (SHA1): 
B7:39:B5:80:BE:A0:0D:6C:84:4F:A1:1F:4B:A1:00:14:12:25:DA:14

密鑰庫的類型是 JKS,其代表(很自然的)Java KeyStore,用于公鑰和私鑰。Java提供另一種類型叫作 JCEKS(Java Cryptography Extensions KeyStore),其可以被用于共享密鑰,但是沒有被 Android應(yīng)用程序使用。
  這個密鑰庫中有一個自簽名的證書,別名為 Androiddebugkey,當(dāng) APK被部署到連接的設(shè)備或者模擬器上時,其被用于簽名調(diào)試用的 APK。
  為了重設(shè)調(diào)試用的密鑰庫,簡單地刪除 debug.keystore文件,下次部署 app時會重新創(chuàng)建。
你不能部署一個發(fā)布版本的 app除非你對其簽名了,意味著生成一個發(fā)布用的密鑰。這也需要使用 keytool工具。一次很簡單的運(yùn)行如下所示。

示例. 生成發(fā)布密鑰

keytool -genkey -v -keystore myapp.keystore -alias my_alias
 -keyalg RSA -keysize 2048 -validity 10000 (all on one line) 
Enter keystore password: (probably shouldn't use use "password") 
Re-enter new password: (but if you did, type it again) 
What is your first and last name?
 [Unknown]: Ken Kousen 
What is the name of your organizational unit? 
 [Unknown]: 
What is the name of your organization? 
 [Unknown]: Kousen IT, Inc. 
What is the name of your City or Locality?

What is the name of your State or Province?


What is the two-letter country code for this unit? 

Is CN=Ken Kousen, OU=Unknown, O="Kousen IT, Inc.", L=Marlborough, 
 ST=CT, C=US correct? 

Generating 2,048 bit RSA key pair and self-signed certificate (SHA256withRSA)  with a validity of 10,000 days for: CN=Ken Kousen, OU=Unknown, 
  O="Kousen IT, Inc.", L=Marlborough, ST=CT, C=US 
Enter key password for <my_alias>
       (RETURN if same as keystore password): 
[Storing myapp.keystore]


What is the two-letter country code for this unit?  

Is CN=Ken Kousen, OU=Unknown, O="Kousen IT, Inc.", L=Marlborough, 
 ST=CT, C=US correct? 


Generating 2,048 bit RSA key pair and self-signed certificate (SHA256withRSA) 
with a validity of 10,000 days for: CN=Ken Kousen, OU=Unknown, 
O="Kousen IT, Inc.", L=Marlborough, ST=CT, C=US 
Enter key password for <my_alias> 
       (RETURN if same as keystore password): 
[Storing myapp.keystore]

RSA算法被用于生成公私鑰對,大小為 2KB,使用 SHA256進(jìn)行簽名,10 000(27年多)天有效期。
  你現(xiàn)在可以使用 jarsigner和 zipalign工具來為你的 APK簽名了,但是讓 Gradle來做會更容易。
  添加 signingConfigs塊作為 Android閉包的一個子塊,如下所示。

示例. 在模塊構(gòu)建文件中的signingCons塊

android { 
    // ... other sections ... 
    signingConfigs { 
       release { 
           keyAlias 'my_alias' 
           keyPassword 'password' 
           storeFile file('/Users/kousen/keystores/myapp.keystore')
           storePassword 'password' 
        } 
    } 
}

你可能不想將密碼硬編碼在構(gòu)建文件中。幸運(yùn)的是,你可以把它們放到 gradle.properties文件中,或者從命令行指定。
  從 DSL文檔中,signingConfigs塊委托給一個 SigningConfig的類,其包含四個常用的屬性:

  • keyAlias:當(dāng)簽發(fā)一個特定的密鑰時在 keytool中被使用。

  • keyPassword:在簽發(fā)過程中使用的一個特定密鑰的密碼。

  • storeFile:包含密鑰和證書的磁盤文件,由 keytool生成。

  • storePassword:密鑰庫文件自身使用的密碼。 還有一個 storeType屬性(默認(rèn)為 JKS, 如示例 2-29所示),但是這個屬性很少使用。 為了使用新的配置,添加一個 signingConfig屬性到 release構(gòu)建類型。

示例. 在發(fā)布構(gòu)建中使用簽名配置

android { 
     //其他段buildTypes { 
   release { 
           //其他設(shè)置
           signingConfig signingConfigs.release 
       } 
     } 
}

當(dāng)你在 Gradle中調(diào)用 assembleRelease任務(wù)的時候,構(gòu)建為在 app/build/outpu/apk目錄下生成一個發(fā)布版本的 APK。

示例. 運(yùn)行assembleRelease任務(wù)

> ./gradlew assembleRelease 
:app:preBuild UP-TO-DATE 
:app:preReleaseBuild UP-TO-DATE 
//...太多任務(wù):app:zipalignRelease UP-TO-DATE 
:app:assembleRelease UP-TO-DATE 

BUILD SUCCESSFUL 

kousen at krakatoa in ~/Documents/AndroIDstudio/MyAndroidApp 
> ls -l app/build/outputs/apk 
total 12088
-rw-r--r--1 kousen staff 1275604 Aug 24 15:05 app-debug.apk
-rw-r--r--1 kousen staff 1275481 Aug 26 21:04 app-release.apk

注意——這很重要— —不要丟失密鑰庫。如果丟了,你將不能發(fā)布任何關(guān)于你的 app的更新,因?yàn)樗械陌姹径急仨氁猛瑯拥拿荑€簽名。 
  本文選自《巧用Gradle構(gòu)建Android應(yīng)用》,點(diǎn)此鏈接可在博文視點(diǎn)官網(wǎng)查看。
                      為你的APK進(jìn)行數(shù)字簽名
  想及時獲得更多精彩文章,可在微信中搜索“博文視點(diǎn)”或者掃描下方二維碼并關(guān)注。
                       為你的APK進(jìn)行數(shù)字簽名

標(biāo)題名稱:為你的APK進(jìn)行數(shù)字簽名
標(biāo)題鏈接:http://www.muchs.cn/article12/jidddc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、域名注冊、網(wǎng)站建設(shè)、搜索引擎優(yōu)化動態(tài)網(wǎng)站、定制開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)