解决的问题:接入微信时,从官网下载的demo,运行后提示签名无效。
解决的方案:
1)自己申请一个账号,使用自己的包名和签名,然后再写个人测试程序
2)直接使用微信的demo,测试实际效果
方案1,需要申请账号,走复杂的流程;以及写个人测试程序得花费一定的时间,还会走一些坑;百度搜出来的基本上都是这种
方案2,方便快速,但会遇到一些坑。本篇,主要走的是此方案。接下来直接进入主题
预备知识:
1,微信开发平台官网地址:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419319167&token=&lang=zh_CN
在该地址你可以获取到demo的压缩包,以及获取签名的工具;
1)demo压缩包,解压,然后导入android studio;如下图
如果编译不了,查看gradle版本和路径是否正确;如下图
2)签名工具,输入的包名,要求该包名对应的APP已在手机安装,才能获取
有兴趣的人可以反编译这个apk,然后自己写一套;这里我直接贴出自己反编译后参考写的:
https://github.com/yline/as_x_modlestudy/raw/179ba7e3e9bec9524be681fdd1b57b74fc34fc1f/System/AppOther/Utils/src/main/java/com/utils/utils/WechatSignUtil.java
2,gradle配置正确之后,Android Studio编译成功,运行。然后会遇到另外一个坑:点击分享提示签名错误
这里给一个小知识:应用的签名由工程配置的keystore决定,与包名无关。有兴趣的可以试试,如果新建工程,但没有配置keystore,新建多个工程后,应用的签名是一样的。
Android Studio中配置签名的方式,如下图
由以上知识点,可以推导出,微信官方demo提示签名错误的原因是,keystore没有配置;所以,我们配置一下就行了;如下列代码:keystore对应的文件,就是微信demo解压之后的debug.keystore
android {
signingConfigs {
config {
storeFile file('../debug.keystore')
keyAlias 'androiddebugkey'
keyPassword "android"
storePassword "android"
}
}
compileSdkVersion 28
defaultConfig {
applicationId "net.sourceforge.simcpux"
minSdkVersion 16
targetSdkVersion 28
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
signingConfig signingConfigs.config
}
debug {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
signingConfig signingConfigs.config
}
}
}
里面关键信息:keyAlias可以查看debug.keystore文件获取、keyPassword和storePassword使用的google官方默认的密码【我也是蒙的,没想到就对了】
3,又是一个坑,你配置完keystore之后,一定记得把工程"build"下的文件删了,然后再重装。否则应用的签名不会采用你新配置的,而是复用之前默认或配置的签名,如下图:
4,最后你可以使用微信的获取签名工具或自己写的获取签名工具,验证一下,我验证微信提供的签名keystore为:
ce187ed67e05c2d8879bf66bbfdfc8b9
当然,证明你成功的标志就是:运行微信demo后,点击分享可以拉起微信,并且分享成功。