问题:

1,获取的shar1不同
2,直接运行到手机上没有服务,比如定位失败,导航失败;打包后是有服务的,有时候,直接运行上去又服务,打包后没有服务了,APP要上线了,出这样的问题,毫无头绪,好着急,好尴尬啊,好慌乱啊。。。。。

定位失败,导航失败,获取经纬度失败,都是这个shar1惹的祸。。。

Android studio,eclipse开发中,会经常使用到第三方的比如定位等,百度定位,导航,高德定位导航等等的服务功能,使用这个第三方的服务

首先,需要在高德或者百度的开发者官方注册账号,

然后,需要生成一个key


但是在生成这个key的过程中,需要提供一个SHAR1值,如果是eclipse开发还需要提供一个包名,如果是as开发还需要提供applicationId(在app目录下面的build.gradle里面),

最后,生成了key,在APP的配置文件中加以配置,这个key就相当于一把钥匙,钥匙需要第三方服务知道这是一个合法的key,然后第三方才会给APP提供服务,这个key第三方获取到以后怎么判断合法不合法????,就是通过这个shar1进行判断的。所以,shar1是可以得到第三方服务的关键,必须保证这个shar1的正确性

今天的重点就是讨论这个SHAR1的问题,

先说说shar1的获取方式:

方式1:直接获取

eclipse的话:
直接点击window–>preferences–>android–>build

方式2:使用 keytool(jdk自带工具)获取 SHA1

打开电脑命令行,依次输入命令:
1,cmd
2,cd .android
3,keytool -list -v -keystore 打包秘钥文件路径\秘钥
比如:keytool -list -v -keystore C:\Users\company\key\ditudemo_key.jks
4,输入秘钥库口令(就是打包时候的密码)
回车就搞定了

如果是Android studio

方式3,

打开as的terminal
依次输入命令
1,keytool -list -v -keystore 打包秘钥文件路径\秘钥
比如:keytool -list -v -keystore C:\Users\company\key\ditudemo_key.jks
2,输入秘钥库口令(就是打包时候的密码)

方式4,(高德官方提供的)

public static String sHA1(Context context) {try {PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES);byte[] cert = info.signatures[0].toByteArray();MessageDigest md = MessageDigest.getInstance("SHA1");byte[] publicKey = md.digest(cert);StringBuffer hexString = new StringBuffer();for (int i = 0; i < publicKey.length; i++) {String appendString = Integer.toHexString(0xFF & publicKey[i]).toUpperCase(Locale.US);if (appendString.length() == 1)hexString.append("0");hexString.append(appendString);hexString.append(":");}String result = hexString.toString();return result.substring(0, result.length()-1);} catch (NameNotFoundException e) {e.printStackTrace();} catch (NoSuchAlgorithmException e) {e.printStackTrace();}return null;
}

但是问题的重点不是这怎么获取这个shar1,而是shar1,不同的获取方式得到的结果不同,明明是通过正确的方式获取的shar1,正确的shar1,怎么就获取不到服务呢?这是为什么呢?

其实,①第一种获取方式和最后一种获取方式,可以看成是同一种,得到的结果也是相同的,②第二种第三种也是得到的相同的结果,然而,①②两大类的获取到的结果是不同的,这是为什么呢?

要回答这个问题,就得知道这个shar1到底是什么,它是怎么产生的,它的产生和什么有关系?????????

其实是因为,①大类获取shar1的方式是default的方式,是没有打包的,是和签名文件也就是秘钥文件没有产生关联的,就算是有关联也是debug版本的key,debug版本的秘钥,这个debug版本的秘钥是系统自动生成的;
②大类的shar1获取过程是明确通过秘钥文件生成的,因为你看到了啊,明确给出了秘钥的路劲和秘钥文件这个秘钥是开发者自己创建的,是release版本的key,release版本的秘钥

总结来说:打包程序,(必须要使用开发者自己创建的key文件,是release版本的key)获取的shar1是根据release版本的key生成的;————–;不打包程序,(是直接点击开发工具运行到手机上的,使用的是默认系统给出的系统默认的debug版本的key)是根据debug版本的key生成的,【两个shar1肯定是不同的,】debug版本的shar1,直接运行到APP上就可以获取服务,但是打包后就获取不到服务了,release版本的shar1打包后可以获取到服务,但是直接运行到手机上是不能获取到服务的

你瞧,default debug keystore: debug.keystore异常的亮眼啊。。。。不是事情太诡异,而是我们没有太仔细,是我们没有太细心,任何时候,都要仔细,细心,耐心的分析问题产生的原因,慌乱解决不了问题,只会让事情更糟糕,让心情更暴躁,让同事更觉得你是个low逼,寻根究底,一探究竟,原来问题是如此的简单。。。。。。

SHAR1,获取不同,release版本SHAR1,debug版本SHAR1,导致定位失败,经纬度获取为0相关推荐

  1. HDF5 windows编译 release版本、Debug版本

    由于最近急需的一个项目,需要hdf5库,误打误撞,编译成功.特此记录 1.下载源代码 官网下载地址:https://portal.hdfgroup.org/display/support/HDF5+1 ...

  2. release版本和debug版本

    程序一般分为Debug版本和Release版本,Debug版本用于内部调试,Release版本发行给用户使用 Release和Debug有什么不同 Release版称为发行版,Debug版称为调试版. ...

  3. android 测试人员测试时使用release版本还是debug版本_为什么做软件测试

    软件测试是使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别. 软件测试包括:发现软件程序中的错误.是否符合设计要求,是否符合技术 ...

  4. Release版本和Debug版本的区别以及转换

    转自:https://blog.csdn.net/hust_sheng/article/details/49964217 简介  vs中的工程有debug和release两个版本: Debug通常称为 ...

  5. 关于release版本和Debug 版本的问题 终结

    阅读笔记: 总之就是,平时尽量在release下运行,如果出错再到debug里查找错误. 我由此从头到尾都用debug,调好了之后用release发布,一大堆错误,哪里出错找都找不到----heyzo ...

  6. 获取海岛预报、近海 、旅游城市、美丽海岛、海水浴场预报包括海温、海浪等值 根据海洋观测站点id获取3天海洋预报。雷达单站数据根据经纬度获取任意点的天气数据含分钟预报、小时预报,空气质量、生活指数、天气

    今日新增至126,接口还在不断扩展更新中 qq群:305694703 史上最全天气数据接口包括环境.气象.预警.水文.预报.实况.格点,落区.等值面.雷达.云图.空气质量实况及预报.气候统计.雷电分布 ...

  7. 编译成release版本与debug版本的程序有何执行上的区别?

    原文地址::http://blog.csdn.net/lingxiu0613/article/details/7924755 相关网帖 1.Debug 和 Release 编译方式的本质区别----h ...

  8. Mat未初始化引起拼接算法结果,release版本和debug版本不一致

    目录 1  修改方法 2  参考链接 1  修改方法 从: Mat tjCr(horSearchBandWidth*2+1, verSearchBandWidth*2+1, CV_32F); 到: M ...

  9. android 百度查询当前所在省市區,百度地图定位,并获取当前省市区Id

    //获取地里位置 Start $(function () { $("#demo1").val("正在获取您的位置..."); var geolocation = ...

最新文章

  1. c++气泡框提示_黄骅屋顶隔热气泡膜厂家,机房专用吸音板_德发防火保温建材
  2. 微信小程序浮动按钮_操作按钮悬浮固定在微信小程序底部的实现代码
  3. qoq是什么意思的缩写_“yjgj他的pyq很zqsg”,90后从未觉得自己老,直到看到00后缩写的那一秒……...
  4. stylus之选择器(Selectors)
  5. miniui单元格点击弹框_miniui 给表格行添加监听事件的几种方法以及点击某列列名数据不能排序的问题...
  6. android中自定义的dialog中的EditText无法弹出输入法解决方案
  7. Win10下python不同版本同时安装并解决pip共存问题
  8. pojCashier Employment
  9. tcp报文 如何判断是否为握手_“三次握手,四次挥手”你真的懂吗?
  10. Java Futrue模式简单例子和使用场景
  11. 国家统计局 省市区 数据爬取
  12. 扫雷android设计思路,Flash扫雷游戏设计思路与步骤(4)
  13. python实训报告5000字_实训总结5000字
  14. 【汇智学堂】docker网络管理之一
  15. 专变采集终端、配变采集终端、采集器、集中器
  16. 微信订阅号简单开发指引
  17. 【FPGA教程案例10】基于Verilog的复数乘法器设计与实现
  18. 老兵成新秀,科大讯飞能否“嗨唱“车联网?
  19. 想发国际期刊,这些工具和技巧你都知道吗?
  20. ACDSee Pro v5.2 英文破解版

热门文章

  1. 关于将pem证书转为jellyfin可以使用的pkcs12证书
  2. 数据读取与数据扩增理解
  3. 深度学习和机器博弈如何结合_对抗机器学习的博弈论方法
  4. 参数化2--CSV Data Set Config 参数化配置
  5. php五角星十个点坐标,请教:已知五角星的外接圆半径,如何求五角星十个顶点的坐标?(有图? 爱问知识人...
  6. wms仓库管理系统的核心功能及作用
  7. 成都做java_成都嵌入式开发和成都Java开发哪个工资高,前景好?
  8. 案例:用户信息管理系统
  9. Matlab plot子图的间距和边缘距离如何调整(已解决)
  10. UIUC说对抗样本出门会失效,被OpenAI怼回来了!