概述:总所周知,我们在打包我们APK到应用市场的时候,出于安全和设置三方接入(微信、ShareSDK、地图)的唯一识别SHA1值,必须生成一个唯一的keyStore,来保证我们开发项目的安全性、唯一性、可控性。
缘由:在我们开发中涉及到使用第三方的这些资源时,申请key的时候需要提供apk然后根据某种算法生成一个唯一MD5,设想下有没有遇到这样的情况 应用没签名前这些三方(分享、支付、地图、IM)都可以调用,但我签名之后为什么调用不起了?这种情况对于初学者是一个百思不得其解的问题,原因在于没有使用签名之前的apk和使用了签名之后的apk生成的SHA1值是不一样的,而三方的接入是根绝唯一性的SHA1值去准确的判断是由那个应用调起的。所以会导致这样的问题
常见做法:有些聪明的哥们会这样弄,那我就debug签名和single签名各来一套,我来回切换。这….这当然可以,但是这样会很麻烦,假如我们开发的项目是多人开发,这样势必会导致一些问题。
万能打造:在和大家分享这样的一种小技巧之前,有必要清楚一点点关于android默认签名 debugkey
Android默认签名文件debug.keystore的keystore密码、alias、alias密码分别是:
keystore密码:android
alias:androiddebugkey
alias密码:android
而debugkey据了解 只有这三个信息
必读原理:聪明的哥们已经猜到了,没错,我就把更改debugkeystore,把我们正式的签名文件的keystore密码、alias、alias密码都修改成与Android默认签名debug.keystore的相同,并且在Eclipse、AndroidStudio中指定我们默认debug签名文件路径,此时当我们直接运行项目时ide将直接用我们指定的这个签名文件,此时我们debug时的签名和正式发布的签名一致了,所以在调试的时候什么微信、第三方支付都不存在签名错误等云云。
步骤:
提醒:修改签名文件密码、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)值。