收藏
回答

canvas 2D 真机调试报错,代码上线后Android闪退

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug canvas 2D 微信安卓客户端 7.0.12 2.10.4

https://developers.weixin.qq.com/community/develop/doc/00046495990890a2d81a634245bc00?jumpto=comment&commentid=000826d4754bd042d91aec27b5b4

https://developers.weixin.qq.com/community/develop/doc/00044ee36e04601f236971e5c50000?_at=1572550444125

看到类似的帖子,这2个报错,我都有,在预览模式正常

我知道现在仍然不支持真机调试!!!!!!!!!!!!!

但是上线后,发现 IOS 是正常的,Android 大量用户反馈 生成海报的时候闪退?!!!

不能用真机调试,如何排查问题呢???

系统版本 Android 7.0.12 小米10

核心代码段

query.select('#posterCanvas')
      .fields({ nodetruesizetrue })
      .exec(async (res) => {
        const canvas = res[0].node;
        //保存canvas实例
        self.canvasObj = canvas;
        const ctx = canvas.getContext('2d');
        // canvas.width = res[0].width;
        // canvas.height = res[0].height;
        const dpr = wx.getSystemInfoSync().pixelRatio;
        canvas.width = res[0].width * dpr;
        canvas.height = res[0].height * dpr;
        ctx.scale(dpr, dpr);
        ctx.clearRect(00320410); //清空画板
        ctx.fillStyle = '#fff';
        ctx.fillRect(00320410);

               let txtLeftPos = 65;
        ctx.textBaseline = "top";
        ctx.textAlign = 'left';
        // //成绩
        ctx.font = "normal bold 44px"//设置字体大小,默认10
        ctx.fillStyle = '#000'//文字颜色:默认黑色
        ctx.fillText(shareContent, txtLeftPos, 335)//绘制文本
function canvasWxHeader(headImageLocal{
          const headerImg = canvas.createImage();
          console.log(headImageLocal)
          headerImg.src = headImageLocal;
          headerImg.onload = () => {
            ctx.save();
            ctx.beginPath()//开始创建一个路径
            ctx.arc(382881802 * Math.PI, false)//画一个圆形裁剪区域
            ctx.clip()//裁剪
            ctx.drawImage(headerImg, 202703636);
            ctx.closePath();
            ctx.restore();
            //关闭loading
            wx.hideLoading();
            self.setData({
              hasShowPoster:true
            })
          }
        }
let defaultHeadUri = '../images/ad.png';
canvasWxHeader(defaultHeadUri);

});
最后一次编辑于  2020-04-02
回答关注问题邀请回答
收藏

2 个回答

  • 游戏人生
    游戏人生
    2020-04-03

    我自己找到原因了,太诡异了

    在新版的canvas2D api中,如果你的一些写法不完整,就会出现Android 机器闪退的BUG,比如

    //缺省写法  会导致部分Android机器 闪退
    ctx.font = "bold 16px";
    ctx.fillStyle = "#000"
    
    
    //在canvas 2D的写法中,所以写法必须规范且完整
    ctx.font = "normal bold 12px sans-serif";  
    ctx.fillStyle = '#707070'


    2020-04-03
    有用
    回复 2
    • 攻城狮@射鸡屎
      攻城狮@射鸡屎
      2020-05-15
      那很可怕。。。。。
      2020-05-15
      回复
    • 游戏人生
      游戏人生
      2020-05-17回复攻城狮@射鸡屎
      这个现在已经修复了。。。官方还是很努力的。。。只是场景多,来不及全修,特别是华为手机~··
      2020-05-17
      回复
  • 是小白啊
    是小白啊
    2020-04-02

    canvas不支持真机调试

    2020-04-02
    有用
    回复 1
    • 游戏人生
      游戏人生
      2020-04-02
      我知道,现在是项目上线Android机器 闪退的问题
      2020-04-02
      回复
登录 后发表内容
问题标签