遇到问题时间线:
1、本来项目中使用的是PictureSelector 2.2.3版本,但是遇到个问题,最新MIUI系统,相册选图片时,选择相机拍照,但是拍完的照片无法预览
2、想着现在这个版本已经很老了,干脆直接升级到最新版本,上github一看(https://github.com/LuckSiege/PictureSelector),最新的已经是3.0.5了。那想什么啊,直接依赖最新版本。
3、然后就编译报错了,说PictureSelector 的compileSdkVersion版本是31,而我项目的版本是30,所以不得行。那就把自己的项目的版本改成31呗,改了还是编不过,把错误日志百度一下。说是因为android studio不支持31,把31改成30就可以了。我尼玛,这不是死锁了吗。
4、为了一个框架而已,更新自己项目不划算。退而求其次,那我就换低版本的嘛。最开始是2.2.3,根据历史包(Releases · LuckSiege/PictureSelector · GitHub),那就换个2.7.3的,不行,编译时报一样的错误,那就换个2.7.0的,还是不行,那就换个2.6.0的。2.6.0的编译一下,还是报错了,但是错误不一样了,资源文件冲突,虽然还是没编过,但是说明不是版本问题了。好的,解决资源冲突(去缓存里面找到2.6.0那个arr包,然后把冲突的资源文件直接删了,然后手动依赖改好的arr包),编译,好家伙,没问题了,测试一下先相处再拍照功能,功能也没得问题了,提交bug,看知乎了。
5、测试把bug打回来了,说拍照确实可以了,但是点击图片预览不行了,App要崩。这东西又啥情况啊,看一下奔溃日志,没有找到ucrop里面的类,因为已经没有2.6.0的文档,结合最新的版本介绍,好像是吧裁剪和压缩功能已经分开了,需要哪个集成那个。我这不缺个ucrop嘛,也不知道2.6.0的时候集成的是那个版本的ucrop哦,那就直接集成一个最新的ucrop吧,试试,集成好了,编译,没报错,上机测试,预览也可以了,完美。
6、因为ucrop是裁剪相关的,那就试试裁剪功能吧,结果又奔溃了,日志显示没有CutInfo类,难道说是最新版的ucrop已经删除了这个类,去github上看看,我去,这个文件夹已经3年没有更新过了,那就是说可能ucrop里面根本就没有这个类,而这个类是PictureSelector的作者自己加的,他通过源码集成了ucrop,自己改了改,又没有加在PictureSelector项目里面,可能需要PictureSelector 的最新版本一样分开集成,需要什么集成什么,这也能明白为什么只要不调裁剪,项目就能够正常运行。可是,又哪儿去找这个特殊版本的ucrop呢?
7、还是只有去历史记录里面(Releases · LuckSiege/PictureSelector · GitHub),找到2.6.0版本,直接下载整个2.6.0版本的源码,然后就找到的自定义版本的ucrop源码,直接将这个model依赖进项目,编译(中间有点点配置小问题,改了就好了),成功,试试裁剪功能,再次提交bug,应该没什么问题了。
如果你遇到和我一样的问题,希望对你有帮助,提供一个思路。
如果你不想思考,那就直接去下载我提供的两个arr包吧(PictureSelector2.6.0版本-Android文档类资源-CSDN下载,PictureSelector2.6.0配套的ucrop-Android文档类资源-CSDN下载),把这两个arr包放进项目里面,看原作者的2.0版本的api使用(PictureSelector 2.0 Api说明 · LuckSiege/PictureSelector Wiki · GitHub)
如果遇到其他什么问题,别再下面评论问,我也不知道