Android studio中关于如何签名apk和查询项目的SHA1

来源:互联网 发布:2017网络热点事件 编辑:程序博客网 时间:2024/06/17 15:36

今天自己做了一个关于地图的小Demo。虽然是仅仅实现了在界面中显示出地图的功能,但是在设计这个小Demo的过程中,还是遇到了一些基本的问题:如何得到项目的SHA1值。查找了许多资料,又不断的实验,才得出了正确的做法,因此有必要写下来,以防再用。

我的项目中使用了高德地图的Android SDK。在高德地图开发者平台申请Key值时需要填写“发布版安全码SHA1”。

那么问题来了,什么是SHA1?怎么得到SHA1呢?

第一个问题:
开发版SHA1:
是指在开发调试时,从Android Studio或者Eclipse中直接运行的APP在打包时使用了开发工具默认的开发版(debug)签名文件,开发版签名文件对应有唯一的SHA1。
前提:签名文件keystore的别名默认为androiddebugkey,keystore默认路径为%USERPROFILE%\.android\debug.keystore(Windows操作系统下。若为Mac和Linux,此路径应该为~/.android/debug.keystore)和keystore的密码默认为android。

发布版SHA1:是指在提交测试或发布时,APP签名打包过程中选择的指定签名文件,一般此签名文件为开发者或者开发团队持有,与具体的开发工具无关,发布版签名文件同样也对应有唯一的SHA1。
前提:需要知道签名文件keystore中key的别名(非必需,可不填),keystore路径和keystore的密码。

第二个问题:

在AndroidStudio中的Terminal中使用keytool命令获取。

可以看到在第一个问题中涉及到了“签名文件Keystore”。也就是说,想要得到安全码SHA1,首先需要有签名文件。
也许,你现在还没有签名文件,那么就要创建一个签名文件。在Android studio中创建签名文件,通过菜单栏中的“Build  ——>  Generate Signed APK...”,如图所示:



点击后,生成如图所示对话框:



如果有keystore文件,点击图中的“Chooseexisting...”;如果你没有keystore文件,则点击图中的“Create new...”,生成如图对话框:

点击“OK”,返回到Generate Signed APK对话框,如图所示:

如果是之前选择的是Choose existing,则只需要添些Key store password和 Key password。点击Next,进入下一步:

点击Finish,完成,等一会,在界面中弹出如下图的对话框,点击Close完成对项目文件的签名。


接下来就是要获取安全码了,上面也提到了,获取安全码要通过Terminal中的keytool命令获取。Terminal的位置如图所示:



我查阅资料,获取安全码需要执行以下keytool命令:
keytool -v -list -keystore keystore
我输入后,报错,后又查到输入另一条相似命令:
keytool -exportcert -list -v -keystore D:\keystore.jks
回车之后还是报错,且报一样的错误,“Androidstudio获取sha1时提示'keytool' 不是内部或外部命令,也不是可运行的程序,”   如图中蓝色框所示:



我百度了一下,没有找到确切答案,但是还是提供了思路,这条keytool命令可能需要在jdk文件夹下才能正常执行。于是进行了尝试,很幸运,成功了。在这里的语句也是用cd 进入文件夹。输入正确命令后,回车。如图所示:


到此为止,就可以将sha1安全码复制去申请地图唯一的key值了。

参考文章地址:android studio获取SHA1和 MD5详解

0 0
原创粉丝点击