美文网首页
第一次遇到JNI ERROR (app bug): local

第一次遇到JNI ERROR (app bug): local

作者: 苍蝇的梦 | 来源:发表于2017-09-14 13:54 被阅读240次

    2017-9-14 遇到的一点小问题

    .

    项目里有用到拍照或相册选取照片后上传到服务端,这个网上一搜很多,就是上传前需要压缩,网上找了些都不是很满意,刚好看到crazycodeboy/TakePhoto,觉得还不错,就一直使用。
    这次新项目,又用上了。因为单继承而BaseActivity又有些是需要用的。所以继续是用的组装方式来整合。
    用的 compile 'com.jph.takephoto:takephoto_library:4.0.3',结果刚一进Activity就在takePhoto = (TakePhoto) TakePhotoInvocationHandler.of(this).bind(new TakePhotoImpl(this, this));时报错,出现JNI ERROR (app bug): local reference table overflow (max=512)。找了很久,没找到原因,只好试一下继承的方式,通过extends TakePhotoActivity,没想到竟然可以了。只好比对一下相关代码。发现在重写invoke()方法时,我竟然没改,返回的return null;改回TakePhotoActivity里的代码,可以了。。。

    @Override
    public TPermissionType invoke(InvokeParam invokeParam) {
      TPermissionType type=PermissionManager.checkPermission(TContextWrap.of(this),invokeParam.getMethod());
      if(TPermissionType.WAIT.equals(type)){
        this.invokeParam=invokeParam;
      }
      return type;
    }
    

    之前项目用的版本是4.0.0,获取路径只有一个getPath();但现在用的4.0.3版本,去掉了这个方法,改成getCompressPath();//返回压缩后路径getOriginalPath();//返回原始路径
    试了一下,getCompressPath();返回的值是空,因为忘了设置压缩了。在getTakePhoto()时加上

    CompressConfig config = new CompressConfig.Builder().setMaxSize(409600).create();//压缩最大尺寸
    takePhoto.onEnableCompress(config, false);//设置压缩参数及不显示进度
    

    设置后能正常获取压缩后和原始图片路径了。

    相关文章

      网友评论

          本文标题:第一次遇到JNI ERROR (app bug): local

          本文链接:https://www.haomeiwen.com/subject/ndarsxtx.html