您的位置:首页 > 移动开发 > Android开发

android 打造万能keyStore

2017-03-05 16:52 337 查看
[b]概述:总所周知,我们在打包我们APK到应用市场的时候,出于安全和设置三方接入(微信、ShareSDK、地图)的唯一识别SHA1值,必须生成一个唯一的keyStore,来保证我们开发项目的安全性、唯一性、可控性。[/b]

[b]缘由:在我们开发中涉及到使用第三方的这些资源时,申请key的时候需要提供apk然后根据某种算法生成一个唯一MD5,设想下有没有遇到这样的情况 应用没签名前这些三方(分享、支付、地图、IM)都可以调用,但我签名之后为什么调用不起了?这种情况对于初学者是一个百思不得其解的问题,原因在于没有使用签名之前的apk和使用了签名之后的apk生成的SHA1值是不一样的,而三方的接入是根绝唯一性的SHA1值去准确的判断是由那个应用调起的。所以会导致这样的问题[/b]

[b]常见做法:有些聪明的哥们会这样弄,那我就debug签名和single签名各来一套,我来回切换。这….这当然可以,但是这样会很麻烦,假如我们开发的项目是多人开发,这样势必会导致一些问题。[/b]

[b]万能打造:在和大家分享这样的一种小技巧之前,有必要清楚一点点关于android默认签名 debugkey[/b]

Android默认签名文件debug.keystore的keystore密码、alias、alias密码分别是:

keystore密码:android

alias:androiddebugkey

alias密码:android

而debugkey据了解 只有这三个信息

[b]必读原理:聪明的哥们已经猜到了,没错,我就把更改debugkeystore,把我们正式的签名文件的keystore密码、alias、alias密码都修改成与Android默认签名debug.keystore的相同,并且在Eclipse、AndroidStudio中指定我们默认debug签名文件路径,此时当我们直接运行项目时ide将直接用我们指定的这个签名文件,此时我们debug时的签名和正式发布的签名一致了,所以在调试的时候什么微信、第三方支付都不存在签名错误等云云。[/b]

[b]步骤:[/b]

提醒:修改签名文件密码、alias、alias密码相当于破坏了这个文件,所以我们修改的时候一定要copy一个签名文件出来,然后修改这个copy出来的文件的上述三个属性。

1.找到你的keystore文件 ,就是你创建的那个keystore签名文件,假如我的叫 keystore.jks。



2.打开命令行,进入你的keystore所在的文件夹 windows—快捷键—> :cmd

进入文件夹快捷键–>: cd e:\Li_work_splace1xx\xxxx

假如我的keystore在桌面某个文件夹





3.修改keystore密码,在命令行输入:

keytool -storepasswd -keystore keystore.jks

其中keystore.jks 是签名文件的全名,回车后会提示输入证书的当前密码,然后要求输入新密码、重复输入新密码。当前密码当然只有你知道了,新密和重复密码按照开头讲的,必须输入android(第一个是初始密码,你自己知道,后面的输入的密码改成android )。



4.修改keystore的alias,在命令行输入:

什么是alias–> 别名 如下:



输入命令:keytool -changealias -keystore keystore.jks -alias dance(换成你的) -destalias androiddebugkey

其中keystore.jks是签名文件的全名,dance是证书中当前的alias的名字,-destalias后面跟的是要修改成的alias的名字,按照开头说的,这里必须改为androiddebugkey;比如我的alias的名字是dance,那么我的完整的命令就是:

keytool -changealias -keystore keystore.jks -alias dance -destalias androiddebugkey

回车后会提示输入keystore的密码(上面已经修改为android)和当前alias的密码(这个只有你知道)。



5 修改alias的密码,在命令行输入:

keytool -keypasswd -keystore keystore.jks -alias androiddebugkey

其中keystore.jks是签名文件的全名,回车后会提示输入keystore密码(上面已经修改为android),alias密码(这个只有你知道),然后提示输入新alias密码,按照开头讲的,必须输入android。



到这里修改alias属性的操作全部完成,接下来在Eclipse和AndroidStuio中配置默认的debug keystore为我们修改属性后的这个keystore

AndroidStudio

如果你用的是AndroidStudio,首先我们把之前的修改之前的keystore和修改过的debug keystore都拷贝一份到项目根目录。

然后需要在项目的app module下的gralde文件做配置:

android {



defaultConfig {
applicationId ...
...
}

signingConfigs {
// debug时的默认签名配置,这里的密码等信息是刚我们修改后的。
debug {
storeFile  file("../dance_keystore_debug_keystore.jks")
// 刚修改过的默认debug keystore路径。
storePassword 'android' // 默认debug keystore的密码。
keyAlias 'androiddebugkey' // 默认debug keystore的alias。
keyPassword 'android' // 默认debug keystore的alias的密码。
}

// 和上面相同,不过是正式文件的路径和密码,我用*代替了。
release {
storeFile  file("../dance_keystore_single_keystore.jks")
// 刚修改过的默认debug keystore路径。
storePassword ***
keyAlias ***
keyPassword ***
}
}

buildTypes {
...
}


}



本博客基于 http://blog.yanzhenjie.com 感谢作者分享的好方法

到此更改打造万能keystore就结束了大家不妨试一试~,下篇准备和大家分享下andoirdstudio 中如何查看当前签名文件的配置信息 (MD5 SHA1)值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息