怎样新建jniLibs, RTLD_LAZY) failed: dlopen failed: "/data/app/com.itep.mt.dispatch-is too small to be an

报错:E/art: dlopen("/data/app/com.itep.mt.dispatch-1/lib/arm/libCommunication.so", RTLD_LAZY) failed: dlopen failed: "/data/app/com.itep.mt.dispatch-1/lib/arm/libCommunication.so" is too small to be an ELF executable: only found 0 bytes

由于你的so库文件配置不行,仔细的查看你的目录是不是正确。

 

强调:jniLibs带有3条横线的文件夹,只有在Android 目录能看到,so库文件在projece和Android 目录查看是不同。新建jniLibs的时候实在project目录中main目录下新建目录,在将so文件放进去,在切换到Android目录就能看到3条横岗的文件夹了。:

 

armeabi/armeabi-v7a:这个架构是arm类型的,主要用于Android4.0之后的,cpu值32位的

x86/x86_64:这个架构是x86类型的,有32位和64位,占用的设备比例比较小

arm64-v8:这个架构是arm类型,主要用于Android5.0之后,cpu是64位的

这里可以看到,其中arm类型的是往下兼容策略,比如arm64-v8a肯定兼容armeabi/armeabi-v7a,也就是说armeabi/armeabi-v7a架构的so文件可以用在arm64-v8a的设备中的,而armeabi-v7a也是兼容armeabi的,但是因为cpu型号不同,所以arm体系和x86体系之间是不能相互兼容的。

 

加载:一种是直接System.loadLibrary方法加载工程中的libs目录下的默认so文件,这里的加载文件名是xxx,而整个so的文件名为:libxxx.so。还有一种是加载指定目录下的so文件,使用System.load方法,这里需要加载的文件名是全路径,比如:xxx/xxx/libxxx.so。

 

 

  1. 第一种方式,使用代码实现,先将Android studio 的工作目录的模式由Android 切换成project
    • Android Studio中如何生成jniLibs文件

    • 然后按照如下路径找gradle : app--src--main--build.gradle(记住,这里的gradle是你那个module 里的gradle,不是你整个项目的gradle),双击打开

      Android Studio中如何生成jniLibs文件

    • 在bulidTypes {} 结束后添加此段代码,

      sourceSets {
          main { jniLibs.srcDirs = ['libs'] }
      }

      记住该段代码是包含在android{} 里头的

       

       

    • 点击右上角sync now 然后同步一下即可

       

    • 同步之后,将模式切换成Android后的效果如下

       

    • 第二方式,是在通过右击新建,重复步骤1,找到如下路径app--src--main,右击main 文件夹 ,选择New ,新建Directory

      Android Studio中如何生成jniLibs文件

    • 然后文件夹命名jniLibs,往里头添加so 文件后就在目录中就能像res文件夹 显示了

      Android Studio中如何生成jniLibs文件

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZhangJiQun&MXP

等到80岁回首依旧年轻

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值