前提:项目是使用cordova + vue搭建的,之前使用cordova-plugin-wechat插件来实现分享内容到微信的需求。之前使用的是cordova-android@9.1.0,没有发生什么问题,但是最近想要升级一下cordova-android的版本,看了下cordova官方文档,目前已经更新到cordova-android@11.0.0版本了,于是果断升级,但是升级之后却发现微信分享无法使用了。
发现问题之后,马上到网络上搜索,搜索了一大圈,终于找到了两个有用的信息。
由于我没有学习过android开发,开始时候不太清楚应该怎么处理,经过摸索,发现其实就是在Android的AndroidManifest.xml文件里添加上这段代码:
<queries>
<package android:name="com.tencent.mm" />
</queries>
找到这里了 /platforms/android/app/src/main/AndroidManifest.xml
这个文件,把上面这段代码放到这个文件的queries标签同级就可以了。
到了这里,我想到一个问题,如果是直接这么改的话是有问题的,因为后面如果其他人拉下来这个项目仓库之后还是无法使用,于是我想到了在config.xml文件里是可以修改AndroidManifest.xml配置的,于是直接在之前的
<platform name="android">
<edit-config file="AndroidManifest.xml" mode="merge" target="/manifest/application"
xmlns:android="http://schemas.android.com/apk/res/android">
<queries>
<package android:name="com.tencent.mm" />
</queries>
</edit-config>
</platform>
这里加上是不是有可以了呢?还不行,打包报错了,接着又继续排查应该怎么修改,我想到在上面edit-config
这里的target写的是/manifest/application
,这里是对应着AndroidManifest.xml
里的application
标签,那么直接这么写:
<edit-config file="AndroidManifest.xml" mode="merge" target="/manifest/queries"
xmlns:android="http://schemas.android.com/apk/res/android">
<package android:name="com.tencent.mm" />
</edit-config>
但是一打包还是报错,我就懵了,我觉得没啥问题了,到后来我觉得是我没有理解edit-config
,再次到网上去搜索edit-config
,终于让我找到这篇NE20E-S2 V800R010C10SPC500 特性描述 - 系统管理 01
没想到居然在这篇华为路由器的文档里找到了这个
一看到merge我就联想到了上面edit-config
里面的mode="merge"
,到这里豁然开朗,尝试把cordova-android卸载掉重新装,果然发现AndroidManifest.xml
里面默认是没有queries
这个标签的,所以就不应该是merge
而是create
,于是修改为
<edit-config file="AndroidManifest.xml" mode="create" target="/manifest/queries"
xmlns:android="http://schemas.android.com/apk/res/android">
<package android:name="com.tencent.mm" />
</edit-config>
果然,到这里打包就没问题了,赶紧打包装到手机上试下,bingo!完全正常!