使用jni生成so文件后打包失败问题Binary XML file line #215: Binary XML file line #215

使用jni生成so文件后打包失败问题

报错:

在对项目进行混淆打包后,出现以下报错:Unable to start activity ComponentInfo{com.infoearth.yfb.unmannedaerialvehicleappas/com.infoearth.yfb.unmannedaerialvehicleappas.MainActivity}: android.view.InflateException: Binary XML file line #215: Binary XML file line #215: Error inflating class common.BaseFpvView

原因与解决方案:

1.在使用了自定义View中没有实现如下三种构造方法,

   public MyView(Context context, AttributeSet attrs) {
       super(context, attrs);
   }

   public MyView(Context context) {
       super(context);
   }

   public MyView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
       super(context, attrs, defStyleAttr);
   }

2.在自定义中使用了so文件或调用了使用so文件对应的类 build.gradle中的packagingOptions没有加入你的so文件,如下加入你的so文件:

packagingOptions {
       doNotStrip "*/*/libdjivideo.so"
       doNotStrip "*/*/libffmpeg.so"
   }

3.我发现上面方法都不管用,我试着把混淆关闭,再生成apk,在用的过程中却没有这个错误,打开混淆却有报错,如下解决:
(1)找到对应使用so文件的类

public native boolean release();

  static{
      System.loadLibrary("ffmpeg");
      System.loadLibrary("djivideojni");
  }

(2)然后在混淆文件proguard-rules.pro添加如下命令保持类不被混淆

-keep class common.** { *; }
//common是我自己包名,替换成你自己的包名即可

这样就可以了;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值