有關(guān)Android的keyStore

作用

keyStore有什么作用?

  • 程序升級(jí)
    新舊版本的數(shù)字證書(shū)相同時(shí) Android系統(tǒng)才會(huì)認(rèn)為這是同一程序的不同版本 如果數(shù)字證書(shū)不同 會(huì) 產(chǎn)生沖突 要求更改包名
  • 程序的模塊化和開(kāi)發(fā)
    擁有同一簽名的程序可以運(yùn)行在同一進(jìn)程中 可以分模塊開(kāi)發(fā) 用戶在需要的時(shí)候下載對(duì)應(yīng)的模塊
  • 多個(gè)程序間共享數(shù)據(jù)和代碼
    Android 提供了基于數(shù)字證書(shū)的權(quán)限賦予機(jī)制 如果某個(gè)權(quán)限(permission)的protectionLevelsignature 則這個(gè)權(quán)限就只能授予那些跟該權(quán)限所在的包擁有同一個(gè)數(shù)字證書(shū)的程序

默認(rèn)的keyStore

首先 我們得知道Android studio 有他默認(rèn)的keyStore 存在的位置: $HOME/.android/debug.keystore 默認(rèn)的相關(guān)密碼如下:

//配置keystore簽名
    signingConfigs {
        release {
            storeFile file("debug.keystore") // as默認(rèn)的keystore
            storePassword "android" // keystore 默認(rèn)的打開(kāi)密碼
            keyAlias "androiddebugkey" // 默認(rèn)的別名
            keyPassword "android" // 默認(rèn)的別名密碼
        }
    }
    buildTypes {
        debug {
            signingConfig signingConfigs.release
        }
        release {
            signingConfig signingConfigs.release
        }
    }

生成自己的keyStore

這里有兩種方式:

Generate Signed APK

Generate0.png
Generate1.png
Generate2.png

圖Generate2中標(biāo)記出來(lái)的部分 v2是Android7.0新支持的特性 如果只勾選v2 那么由此數(shù)字簽名打出來(lái)的包在Android7.0以下將沒(méi)辦法使用

v1 v2 有什么不同?

  • v1 通過(guò)ZIP條目進(jìn)行驗(yàn)證 這樣APK簽署后可以進(jìn)行許多修改 可以移動(dòng)或者重新壓縮文件
  • v2 驗(yàn)證壓縮文件的所有字節(jié) 而不是單個(gè)的ZIP條目 因此 簽名后無(wú)法再修改(包括 zipalign) 所以在編譯過(guò)程中 將壓縮調(diào)整還有部署一步完成 這樣的好處:更安全 新的簽名可以縮短在設(shè)備上的驗(yàn)證時(shí)間(不需要費(fèi)時(shí)的解壓縮驗(yàn)證) 從而加快了安裝速度

v1 v2怎么選擇?
全選就對(duì)了

  • 只選v1 Android7.0以上不會(huì)做更安全的驗(yàn)證
  • 只選v2 Android7.0以下無(wú)法安裝

也可以利用gradle進(jìn)行配置:

signingConfigs {  
    debug {  
        v1SigningEnabled true  
        v2SigningEnabled true  
    }  
    release {  
        v1SigningEnabled true  
        v2SigningEnabled true  
    }  
}  

一鍵生成

bat批處理一鍵生成:

keytool -genkey -dname "CN=Name, OU=Unit, O=Organization, L=City, ST=Province, C=Country" -alias Android -keyalg RSA -validity 2000 -keystore Android.keystore -storepass 123456789 -keypass 123456789

注釋:

CN=Name 您的姓名

OU=Unit 您的單位

O=Organization 您的組織

L=City 您的城市

ST=Province 您的省份

C=中國(guó) 您的國(guó)家,默認(rèn)為中國(guó)

-alias Android 證書(shū)別名

-keyalg RSA 秘鑰加密算法

-validity 2000 有效期(天數(shù))

-keystore Android.keystore 秘鑰文件全稱[生成],要求絕對(duì)存儲(chǔ)路徑,如:D:\Android\Android.keystore

-storepass 123456789 密鑰庫(kù)存儲(chǔ)密碼

-keypass 123456789 秘鑰專用密碼

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,113評(píng)論 25 709
  • 關(guān)于作者: 李濤,騰訊Android工程師,14年加入騰訊SNG增值產(chǎn)品部,期間主要負(fù)責(zé)手Q動(dòng)漫、企鵝電競(jìng)等項(xiàng)目的...
    稻草人_3e17閱讀 3,906評(píng)論 0 10
  • 上大學(xué)那會(huì),手機(jī)屏幕剛脫離了原先那種小小的,發(fā)個(gè)短信只有兩三行的狀況,于是在大學(xué)那段混吃等死的歲月里,對(duì)于我這種超...
    明媚小女子閱讀 594評(píng)論 0 0
  • 我討厭離別 所以不說(shuō)再見(jiàn) 一個(gè)人走 就此杳無(wú)音信 就當(dāng)我沒(méi)有來(lái)過(guò) 沒(méi)有見(jiàn)過(guò) 沒(méi)有愛(ài)過(guò)與恨過(guò) 就這樣吧 我還是好難過(guò)...
    李白的月光閱讀 203評(píng)論 2 1
  • 2015.05.21 前兩天偶然翻看一條博文推送,講的是遠(yuǎn)離那些消耗你的人,我讀了大概講的是那些經(jīng)常充滿負(fù)面情緒的...
    楠ancy閱讀 339評(píng)論 1 2

友情鏈接更多精彩內(nèi)容