安卓 5.1 WebView loadData 乱码

很久以前就有用户反馈网页加载自定义网页内容时唯独标题和底部的 tag出现乱码,当时一是没有稳定再现环境,二是没有这方面的经验,只是按照自己想法针对性做了一些修复,但是还是有用户有类似反馈

在适配安卓10的过程中,发现必须要对自定义网页内容进行 base64 的 encode,否者加载不出来,加之之前在测试安卓 5.1 模拟器的时候发现使用 webview 加载自定义网页内容 100% 会出现标题乱码,但是内容不会乱码。

经过多种尝试,包括把文本正文内容和标题放在一起,不包括英文字符,从 xml 读取等等操作,均发现还是会出现乱码,最后找到一篇以前的解决方法,需要在 loadData 的 mimeType 里面添加编码格式

String newhtml_code = Base64.encodeToString(text.getBytes(), Base64.NO_PADDING);
webView.loadData(newhtml_code, "text/html; charset=UTF-8", "base64");

困扰很久的问题终于解决,有些当时用户反馈可能觉得奇葩的问题,可能会一直困扰用户,作为开发者对于这些不能再现问题一定得留有耐心,且细心,温故而知新,老问题说不定就能够定位和解决

crashlyticsUploadDeobsRelease导致打包卡住

在使用Fabric 进行crash的统计功能,在打包的时候,需要向fabric上传编译信息,由于国内的网络问题,可能会导致打包失败。
如下,屏蔽这个task即可。

Firebase 在每次 build release 包的时候会上传 mapping 文件,目前 mapping 文件已经快达 10M 左右,外加国内访问外网非常慢,在出多个包的时候特别花时间,但是又不能不上传 mapping 文件,因此只针对特定渠道上面,并且这个渠道不是常用的那个渠道

gradle.taskGraph.whenReady {
tasks.each { task ->
if (task.name.contains("crashlyticsUploadDeobsRelease")) {
if (rootProject.ext.currentChannel == channel_google_play_store_code) {
task.enabled = true
} else {
task.enabled = false
}
}
}
}

测试两个渠道 build 包时候符合预期,假如之后希望快速 build 包就把所有渠道的上传 mapping 文件给屏蔽掉