今天看了慕课网的微信朋友圈分享课程,自己动手做时却发现点击按钮总出现闪退,分享结果也返回true了,可就是闪退。看了评论发现好多同学都在问这个问题。大致的原因都在说签名不一致的问题。
多方百度,我最后终于发现了真相!终于将自己的一个demo成功分享了。
今天虽然很累,但趁着灵感还在,赶快记下吧!也希望对各位看官有所帮助。
首先,做微信分享要在微信开发者平台注册账号,申请自己的app_id。
这里按照要求填写即可。
接下来进入重点:
这里的应用签名必须是打包后的签名(md5值的小写,且去掉冒号)。
这里详细解释一下为什么大多数同学都会出现闪退情况。
我们在写完代码运行时,很自然的点击run as android application就自动安装到手机上了。殊不知这时手机上的安装包也是被签名的了,是被eclipse默认的签名文件debug.keystore签名的。见下图:
而我们大多数人在正式打包的时候都会用自己创建的keystore吧,像这样:
(感觉自己的独一无二,有成就感。也可能用默认的有安全风险吧,容易被盗版什么的吧,我猜的。)
那么问题来了,你直接运行到手机里的apk文件是用系统默认的C:\Users\xxx.android\debug.keystore签名的,它会有一个签名值。而你正式打包时,用的是自己创建的keystore,它也会有一个签名值。
那你在微信开发平台上填的签名是哪个呢?
当然应该填正式打包,准备发布的那个对应的签名值啦。
所以,问题就出在这里。只要知道自己打包时生成的签名就行啦!
那么怎么获取呢?
很easy!
方法一:在打包的时候,最后一个对话框eclipse已经给出了你当前应用的签名提示。把MD5值全部化成小写字母,再去掉冒号就是签名了。
见下图:
方法二:用微信开发平台给的签名查看工具,链接:https://res.wx.qq.com/open/zh_CN/htmledition/res/dev/download/sdk/Gen_Signature_Android2.apk
下载后安装到手机,运行它。输入你要查看的应用的包名,点击get Signature,即可生成。
注意:你要查看的是正式打包(导出为apk的那种)后的签名,千万不要把手机当成模拟器连接电脑,直接运行到手机。
因为那样的话,查看的就是eclipse系统默认的用C:\Users\xxx.android\debug.keystore签名后的签名了。这是个重要迷惑点。
大多数人都是为了方便,直接运行到手机。所以才会出现那种问题。
啊。终于写完了,好累!该去吃饭了。希望对大家有所帮助,不要像我那样为这个问题各种百度而烦心不已。