最近一直忙,主要是在接大厂的MSDK, 因此学习的时间就变少了,更不要说写博客了。但是最近一直在踩坑,觉得还是有必要记录下来,避免再次出错。其实有些巨坑很多都是Android9系统的问题。
1. 首先是签名的问题,因为打包时候没有设置keystore,所以生成的Android签名是有问题的,导致在写demo测试微信和QQ登录的时候一直失败,好在大厂的技术支持给力,找到原因就好解决。但这是我的锅,为了避免再犯这种低级错误,我专门写了个获取签名的工具。
2. 自动配置AndroidManifest问题。为了方便快速接入MSDK,用的是Unity SDK插件版本。因此AndroidManifest配置都是自动配置的,理论上应该是没有什么问题的,并且打包结束的时候大厂还有个检查配置的工作。然后仔细看了AndroidManifest配置文件,发现QQAppId没有成功修改,发现大厂自动配置代码里有个小bug,顺手修复。
3. 屏幕方向问题。这个是比较坑爹的问题,这边所有测试机都通过了,模拟器上也没问题,突然有一台华为机子微信和QQ登录会卡死,其他2部华为机子没问题,拿来调试发现,而且之前写的Java层手机异常也捕获到了:
这个问题竟然会导致Crash,那没办法,有问题就删除,删除AndroidManifest中的WXEntryActivity和AssistActivity的android:screenOrientatinotallow="portrait"属性,OK!没问题,接着测试又反馈说有一定几率打开游戏的时候屏幕旋转了3次或者倒着,再仔细检查发现MGameActivity的朝向是android:screenOrientatinotallow="sensor",因为我们游戏是横屏的,将之修改成android:screenOrientatinotallow="sensorLandscape",OK,又顺利解决了一个问题。
4. Android9系统开始表演了:接下来就是巨坑的地方,高高兴兴打包发给大厂运营,回家休息。没过多久,反馈说华为一打开就闪退。问运营要了手机型号和Android系统版本。本打算好好休息的我,只好远程公司电脑,下载包,安装,测试,没问题呀,换模拟器试试,也没问题。脑里各种可能性都想过了,就怀疑是不是Android9系统的问题。只好第二天到公司就急求一部Android9系统的测试机,因为所有测试机,没有一部是Android9,最坑的是崩溃的机子是华为Mate 10 Pro,是Android9的,这边有一部华为Mate 10是Android8的,升不上去,而且测试是没有问题的,没有问题的,没有问题的,重要的事要说3遍。后来终于搞到一部Android9的测试机,是小米MIX 2S型号,调试,闪退,报错信息:
反馈给大厂技术支持,提供了一个解决方案:在AndroidManifest文件里面加这个配置
<uses-library android:name="org.apache.http.legacy" android:required="false"/>
OK,闪退问题解决了。
5. 以为这样就完了,太天真了。接下来更崩溃的是,手机上没有微信和QQ的app话,会导致点击微信登录不会弹出扫码登录界面,点击QQ登录不会弹出下载QQ界面,没错还是Android9的问题,之前手上没有这种系统,就没有仔细测到,拿到手上就仔细测了下,发现有这个问题,反馈给大厂技术支持,刚开始以为是其他SDK的权限和Jar包的问题,删除测试,还是有这个bug,再写个demo测试,没有问题,然后怀疑之前的修改导致的,把游戏中修改过的配置一个一个添加上demo中,还是没问题。只好一行一行来看log日志,看到这个:
搜了下Cleartext traffic not permitted,找到一个解决方案,大厂技术支持也给了个方案。看了下其实是同一个解决方案:自己找到的有点繁琐,要再写一个xml文件,换成最简单的测试,OK,问题解决。
只需要添加:
android:usesCleartextTraffic="true"
这些都是目前遇到的问题,如果还有其他问题,会在继续更新。