付費(fèi)下載
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
【移動應(yīng)用開發(fā)技術(shù)】為你的APK進(jìn)行數(shù)字簽名
摘要:
我們需要為APK進(jìn)行數(shù)字簽名,這樣才能發(fā)布到GooglePlay商店。解決方法很簡單,使用Java的keytool命令創(chuàng)建證書并在Gradle構(gòu)建文件的signingConfigs塊中使用就可以辦到。下面讓我們看看詳細(xì)討論。本文選自《巧用Gradle構(gòu)建Android應(yīng)用》。所有Android包(APK)文件在部署之前都需要被數(shù)字簽名,Android使用一個已有的密鑰簽發(fā)調(diào)試用的APK。你可以使用Java提供的keytool命令來查看。默認(rèn)情況下,調(diào)試用的密鑰存儲庫在你的用戶目錄下的.Android子目錄下面。默認(rèn)的名字叫作debug.keystore,并且其密碼是Android。下面示例顯示了怎么列舉默認(rèn)的證書。示例.列舉調(diào)試密鑰庫(MacOSx)>
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,其代表(很自然的)JavaKeyStore,用于公鑰和私鑰。Java提供另一種類型叫作JCEKS(JavaCryptographyExtensionsKeyStore),其可以被用于共享密鑰,但是沒有被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)行簽名,10000(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)的是,你可以把它們放到perties文件中,或者從命令行指定。從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的更新,因為所有的版本都必須要用同樣的密鑰簽名。
本文選自《巧用Gradle構(gòu)建Android應(yīng)用》,點此鏈接可在博文視點官網(wǎng)查看。想及時獲得更多精彩文章,可在微信中搜索“博文視點”
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 衛(wèi)生值日交接制度
- 關(guān)于吸煙衛(wèi)生制度
- 衛(wèi)生院全科診室工作制度
- 汪橋村環(huán)境衛(wèi)生管理制度
- 衛(wèi)生院財政資金管理制度
- 進(jìn)一步完善衛(wèi)生管理制度
- 午托飲用水衛(wèi)生制度
- 校園衛(wèi)生區(qū)規(guī)章制度
- 衛(wèi)生院債務(wù)業(yè)務(wù)管理制度
- 衛(wèi)生保潔員控感管理制度
- 工程項目管理(第二版)丁士昭主編的課后習(xí)題及答案
- 2025年河南省中招理化生實驗操作考試ABCD考場評分表
- 2024年吉林省高職高專院校單獨招生統(tǒng)一考試數(shù)學(xué)試題
- 四川省成都市邛崍市2024-2025學(xué)年九年級上學(xué)期期末化學(xué)試題(含答案)
- 2025新滬教版英語(五四學(xué)制)七年級下單詞默寫表
- 食品行業(yè)停水、停電、停汽時應(yīng)急預(yù)案
- MEMRS-ECG心電網(wǎng)絡(luò)系統(tǒng)使用說明書
- 美國變壓器市場深度報告
- 建設(shè)工程第三方質(zhì)量安全巡查標(biāo)準(zhǔn)
- 乳化液處理操作規(guī)程
- 飯店轉(zhuǎn)讓協(xié)議合同
評論
0/150
提交評論