首页 > 代码库 > Android调试大法 自定义IDE默认签名文件
Android调试大法 自定义IDE默认签名文件
版权声明:转载必须注明本文转自严振杰的博客:http://blog.yanzhenjie.com
Android调试大法之自定义IDE默认签名文件,你是否为调试第三方SDK时debug签名和release签名发生冲突而烦恼?你是否在debug时第三方功能测试通过,而release时无法使用?
如果你没有遇到我说的问题,那么我举几个例子。
- 微信支付、微信登录、微信分享,debug时调试通过,release时调不起微信?
- 如果你没做过,你可以看这篇文章微信登录、微信分享教程。
- 百度地图、高德地图,要不停的切换debug签名、release签名的hash值很麻烦?
- …
上面的这些问题归根结底原因是我们开发的时候直接运行,使用的是默认的debug.keystore
这个签名文件,而我们打包后正式环境用的是我们自定义的xxx.keystore
、xxx.jks
等签名文件,两个文件的hash值不同。
而一般第三方的SDK都是通过识别我们应用的包名和签名的hash来判断是否在他们平台注册过,是否是官方正版应用等,如果验证不通过,自然不能调起第三方的的app了。
今天的文章内容不多,只需要3分钟就可以看完,同时保证可以解决上述因为签名引起的问题。
解决问题的原理
原理就是把我们正式的签名文件的keystore
密码、alias
、alias
密码都修改成与Android
默认签名debug.keystore
的相同,并且在Eclipse
、AndroidStudio
中指定我们默认debug
签名文件路径,此时当我们直接运行项目时ide将直接用我们指定的这个签名文件,此时我们debug
时的签名和正式发布的签名一致了,所以在调试的时候什么微信、第三方支付都不存在签名错误等云云。
Android默认签名文件debug.keystore
的keystore密码、alias、alias密码分别是:
- keystore密码:
android
- alias:
androiddebugkey
- alias密码:
android
所以接下来修改正式签名的这个三个属性。
修改keystore密码 alias alias密码
特别注意:修改签名文件密码、alias、alias密码相当于破坏了这个文件,所以我们修改的时候一定要copy一个签名文件出来,然后修改这个copy出来的文件的上述三个属性。
Java的环境配置
修改keystore
的密码要用到Java
的命令,所以你必须在system中配置了java环境如果配置过的人可以略过这一步,因为我现在使用的Windows
系统,为了照顾小白同学,也提供一个Windows
系统的Java
化境配置方法。
第一步:添加JAVA_HOME
- 在桌面上右击
计算机
图标,点击属性。 - 在点击属性后弹出的
dialog
中点击下方的【环境变量】按钮。 - 在弹出的【环境变量】->【用户变量】下点击新建(你也可以选择系统变量,区别是配置之后对这个系统的所有用户都起作用)。
- 点击新建后弹出的
dialog
中变量名
填JAVA_HOME
,变量值
填你的jdk
所在的目录。 - 填好值后点确定即完成。
步骤图解:
有些同学可能搞混jdk目录要填父目录还是子目录,下面是我的上图中填的jdk
目录打开后的截图:
第二步,添加CLASS_PATH
- 还是在刚才的用户变量下点击新建,然后复制我下面的内容到
变量名
和变量值
,然后保存:
变量名:CLASS_PATH
变量值:.;%JAVA_HOME%/lib/tools.jar;%JAVA_HOME%/lib/dt.jar;
不要质疑上方任何一个标点,完整复制即可,我就是这么的细心。
第三步,添加PATH
- 在用户变量的列表中查看是否有变量名为
PATH
的变量,如果没有就点击新建,如果有就选中后点击编辑。
如果是新建的话,那么你的变量名和变量值是这样的:
变量名:PATH
变量值:%JAVA_HOME%/bin;
如果是编辑的话,那么你的变量值要在别的后面加一个;
再追加%JAVA_HOME%/bin;
:
第四步,检查环境
此时打开system命令行,输入java -version
,将会输入下面的信息,说明你的配置是成功的:
当然如果你还不放心,你还可以在命令行输入java
、javac
等命令,也会有先关的提示信息输出。
确认没有问题了,我们就可以进行下一步修改keystore
的属性了。
修改keystore密码 alias alias密码
假设我们的签名文件叫nohttp.jks
或者nohttp.keystore
,反正就是你创建的那个签名文件。
第一步,打开命令行,进入你的keystore文件所在的文件夹,比如我的
nohttp.jks
在桌面:
第二步,修改
keystore
密码,在命令行输入:
keytool -storepasswd -keystore nohttp.jks
其中nohttp.jks
是签名文件的全名,回车后会提示输入证书的当前密码,然后要求输入新密码、重复输入新密码。当前密码当然只有你知道了,新密和重复密码按照开头讲的,必须输入android
。第三步,修改
keystore
的alias
,在命令行输入:
keytool -changealias -keystore nohttp.jks -alias <alianame> -destalias androiddebugkey
其中nohttp.jks
是签名文件的全名,<alianame>
是证书中当前的alias
的名字,-destalias
后面跟的是要修改成的alias
的名字,按照开头说的,这里必须改为androiddebugkey
;比如我的alias
的名字是nohttp
,那么我的完整的命令就是:
keytool -changealias -keystore nohttp.jks -alias nohttp -destalias androiddebugkey
回车后会提示输入keystore
的密码(上面已经修改为android
)和当前alias
的密码(这个只有你知道)。第四步,修改
alias
的密码,在命令行输入:
keytool -keypasswd -keystore nohttp.jks -alias androiddebugkey
其中nohttp.jks
是签名文件的全名,回车后会提示输入keystore密码(上面已经修改为android
),alias
密码(这个只有你知道),然后提示输入新alias
密码,按照开头讲的,必须输入android
。
到这里修改alias
属性的操作全部完成,接下来在Eclipse
和AndroidStuio
中配置默认的debug keystore
为我们修改属性后的这个keystore
。
给开发工具配置默认的keystore
我们常用的Android IDE
就是ADT
和AndroidStudio
了,下面提供两个IDE
配置默认debug keystore
的发那个方法。
AndroidStudio
如果你用的是AndroidStudio
,首先我们把之前的修改之前的keystore
和修改过的debug keystore
都拷贝一份到项目根目录。
然后需要在项目的app module
下的gralde
文件做配置:
android {
...
defaultConfig {
applicationId ...
...
}
signingConfigs {
// debug时的默认签名配置,这里的密码等信息是刚我们修改后的。
debug {
storeFile file("../sign_store_debug.jks") // 刚修改过的默认debug keystore路径。
storePassword ‘android‘ // 默认debug keystore的密码。
keyAlias ‘androiddebugkey‘ // 默认debug keystore的alias。
keyPassword ‘android‘ // 默认debug keystore的alias的密码。
}
// 和上面相同,不过是正式文件的路径和密码,我用*代替了。
release {
storeFile file("../sign_store_release.jks")
storePassword ***
keyAlias ***
keyPassword ***
}
}
buildTypes {
...
}
}
下面是我配置的截图:
Eclipse + ADT
如果你用的ADT
,那么在Eclipse
的菜单栏点击Window
-Preferences
,然后左侧选中Android
-Build
,在右侧出来的界面中Customer debug keystore
项Browser
后选择刚才我们修改后的keystore
,然后确定即可。
到此为止,修改IDE默认签名文件就都完成了,还在等什么,快去试试配置你的应用试试吧。还有还有,最后插一句,欢迎加入我博客左侧的交流群来开车/害羞。
版权声明:转载必须注明本文转自严振杰的博客:http://blog.yanzhenjie.com
Android调试大法 自定义IDE默认签名文件