问题1
异常:
No implementation found for void com.taobao.weex.bridge.WXBridge.nativeReset…
当我像往常一样从u3d中打包出安卓工程,移植到安卓主工程时,在打包apk运行测试时,发现一直打不开uniapp项目,其他内容和功能都能正常运行,在网上找了一下,都是说项目构架方式的问题(armv7a,x86等等)这些都是18年多的解答了,我想用了这么多次应该不至于是这个问题,不过姑且还是试了一下,打包发现还是不行,网上有关的内容很少
解决方法
我只能尝试clean projects
然后再rebuild projects
,发现就成功了QAQ
有其他问题再更新记录
新年快乐…
问题2
异常:
在自测中,如果短时间内反复多次启动内置的uni小程序
会出现图片样式的加载失败以及遍历出来的item点击事件的失效问题
问题比较棘手,解决方案比较幼稚,但有效
思路
在访问后台接口的时候加了延迟(500毫秒左右),发现图片丢失的情况就没有了
接着是item点击失效的问题
中间尝试过很多解决方法,比如大改一下启动和关闭的逻辑,第一次打开后进程不杀死,在后台继续运行,再次打开的时候就打开那个进程.但是尝试了一小下感觉要改的东西太多了,并且修改了之后uniapp自己打包真机的时候可以保持运行,但是一打包到安卓里运行就不行,方法之间不兼容,想了想很浪费时间,并且去加了官方的交流群,提了问题和视频,还艾特了官方管理,根本得不到回复(先口嗨一下),想了想还是自己想办法解决吧
后面想起来项目中为了省事添加了在uni内置小程序中自行热更新的功能
该功能逻辑在是放在启动的app.vue上的,可能是这个原因导致的,然后就在uniapp中打包试了一下,果然这个问题就没有了,但是打包到安卓中会发现还是失败了,正当我一头雾水想打人的时候,我还是抱着尝试的心态去文件管理器中查看了一下应用包名下的uni,想看看有没有对应的crash日志,就在这个时候,我发现了每次打开小程序,都会生成一个wdt的缓存包,我就纳闷了,热更新的逻辑我早就关了,后面发现是我每次都习惯不删掉应用,直接在android studio中run,直接覆盖,可能是上个没去掉热更新功能的缓存导致的吧,清掉缓存删掉app重新打包运行后就没有这这个问题了
解决方法
加载接口数据时设置适时的settimeout
去掉热更新逻辑
最后每次打包测试时都删掉真机中原来的app应用,重新打包生成
问题3
异常
页面显示不完全
页面使用了scrollview组件,在调试时可以正常显示最下面的内容和数据
打包发布到服务器,在安卓内嵌这个页面时,发现最下面的内容不见了一部分
思路
先是判断为安卓的问题,因此在安卓的webview里设置了一遍参数,发现一直无法解决问题
后面认为可能是安卓的xml里根节点用了netscollview组件,netscrollview和webview两个组件之间发生了冲突,调试了一遍参数后发现依旧无法解决问题
最后判断为是uniapp的问题
在uniapp里因为数据是动态获取的,因此scrollview的长度也必须要动态变化,因此判断为原先获取页面长度的方法不兼容使用,因此使用了另一个函数获取页面高度
如下
解决方法
let that = this;
uni.getSystemInfo({
success(res) {
// tabbar-container
let info = uni.createSelectorQuery().select(".title")
info.boundingClientRect(data => {
that.scrollHeight = res.windowHeight - data.height-100+'px'
console.log(that.scrollHeight)
}).exec()
}
})
修改了这个动态的高度后打包发布至服务器,在安卓中打开页面就显示正常了
不纠结原理…