精华内容
下载资源
问答
  • armeabi-v7a.rar

    2019-05-28 08:29:32
    安卓ffmpeg-arm7a-so库,c代码和so库都有,下载下来放到自己的项目中就能用
  • 针对Android平台编译好的FFmpeg 3.4.5的动态链接库.so文件,包括armeabi-v7a arm64-v8a两个版本,包含头文件,包含x264,支持mediacodec硬解码h264,h265。可直接集成工程中用于视频编辑、转码等。
  • 是我从armeabi拷贝到armeabi_v7a里面的。 但是两份一抹一样的so 库就会导致打包后的apk包过大。 能否只使用一份so 库解决这个问题? 如果没有 armeabi_v7a 的话 运行 System.loadLibrary会报找不到这个so文件。 求...
  • android 复制armeabi-v7a 里面的so arm64-v8a 能用吗
  • 一、引用jar文件 1.将jar文件复制、粘贴app的libs目录中; 2.... 3.... 注:如果不执行2、3步,jar文件将不起作用,并且不能... 二、引用so文件 添加so文件我接触的最多的是搞百度地图阿高德地图的时候还有用别人的
    一、引用jar文件
        1.将jar文件复制、粘贴到app的libs目录中;
        2.右键点击jar文件,并点击弹出菜单中的“Add As Library”,将jar文件作为类库添加到项目中;
        3.选择指定的类库。

        注:如果不执行2、3步,jar文件将不起作用,并且不能使用import语句引用。


     

    二、引用so文件
      
    添加so文件我接触的最多的是搞百度地图阿高德地图的时候还有用别人的sdk的时候经常需要用到so文件,在eclipse里面很简单,在lib目录下直接新建一个文件夹,一般文件夹是armeabi,然后把要用到的so文件复制进去。

    而android studio这样做是不行的,会报so文件找不到错误。因为android studio 的so文件是要在src->main下新建一个文件夹jniLib,然后再把so文件所在的那个文件夹armeabi复制过去。


     
    展开全文
  • armeabi-v7a: 第7代及以上的 ARM 处理器。2011年15月以后的生产的大部分Android设备都使用它. arm64-v8a: 第8代、64位ARM处理器,很少设备,三星 Galaxy S6是其中之一。 armeabi: 第5代、第6代的ARM处理器,早期的...

    armeabi-v7a: 第7代及以上的 ARM 处理器。2011年15月以后的生产的大部分Android设备都使用它.

    arm64-v8a: 第8代、64位ARM处理器,很少设备,三星 Galaxy S6是其中之一。
    armeabi: 第5代、第6代的ARM处理器,早期的手机用的比较多。
    x86: 平板、模拟器用得比较多。
    x86_64: 64位的平板。

    1.区别
       这三者都表示的是CPU类型,早期的Android系统几乎只支持ARMv5的CPU架构,但是现在已经有7种了。ARMv5,ARMv7 (从2010年起),x86 (从2011年起),MIPS (从2012年起),ARMv8,MIPS64和x86_64 (从2014年起),每一种都关联着一个相应的ABI(应用程序二进制接口(ApplicationBinary Interface)定义了二进制文件(尤其是.so文件)如何运行在相应的系统平台上,从使用的指令集,内存对齐到可用的系统函数库)。Android现在的主流CPU是armeabi-v7a。armeabi-v7a是针对有浮点运算或高级扩展功能的ARMv7 CPU。
       
    2.Android设备如何加载.so文件

    当一个应用安装在设备上,只有该设备支持的CPU架构对应的.so文件会被安装。不同CPU架构的Android手机加载时会在libs下找自己对应的目录,从对应的目录下寻找需要的.so文件;如果没有对应的目录,就会去armeabi下去寻找,如果已经有对应的目录,但是如果没有找到对应的.so文件,也不会去armeabi下去寻找了。
       以x86设备为例,x86设备会在项目中的 libs文件夹寻找是否含有x86文件夹,如果含有x86文件夹,则默认为该项目有x86对应的so可运行文件,只有x86文件夹而文件夹下没有so,程序运行也是会出现findlibrary returned null的错误的;如果工程本身不含有x86文件夹,则会寻找armeabi或者armeabi-v7a文件夹,兼容运行。以armeabi-v7a设备为例,该Android设备当然优先寻找libs目录下的armeabi-v7a文件夹,同样,如果只有armeabi-v7a文件夹而没有 so也是会报错的;如果找不到armeabi-v7a文件夹,则寻找armeabi文件夹,兼容运行该文件夹下的so,但是不能兼容运行x86的so。所以项目中如果只含有x86的so,在armeabi和armeabi-v7a也是无法运行的。以上就是不同CPU架构运行时加载so的策略。
       
    3.适配不同的平台

    目前主流的Android设备是armeabi-v7a架构的,然后就是x86和armeabi了。如果同时包含了 armeabi,armeabi-v7a和x86,所有设备都可以运行,程序在运行的时候去加载不同平台对应的so,这是较为完美的一种解决方案,但是同时也会导致包变大。
       armeabi-v7a是可以兼容armeabi的,而v7a的CPU支持硬件浮点运算,目前绝大对数设备已经是armeabi-v7a了,所以为了性能上的更优,就不要为了兼容放到armeabi下了。x86也是可以兼容armeabi平台运行的,另外需要指出的是,打出包的x86的so,总会比armeabi平台的体积更小,对于性能有洁癖的童鞋们,还是建议在打包so的时候支持x86。
       
    4.第三方平台的.so库怎么处理
    第三方的类库只提供了armeabi下的.so文件,我们项目里适配了armeabi-v7a和x86,如果不在对应的文件下放对应的.so文件,就可能导致某些Android设备会出一些问题,我们可以复制armeabi下得.so文件到不同的文件夹下。如果第三方提供了不同平台的.so文件,则复制不同平台的.so文件到项目中对应的文件夹下即可。
       关于.so文件之前有一个坑,svn会把提交的so文件过滤掉,在接第三方SDK的时候通过SVN更新了文档,但是没有注意到少了几个so文件,浪费了大把的时间去找原因。记得去掉svn对so的忽略!!!

    展开全文
  • Android项目中libs库中的armeabi-v7aarmeabi和x86的区别

    1.区别:

             这三者都表示的是CPU类型,早期的Android系统几乎只支持ARMv5的CPU架构,但是现在已经有7种了。ARMv5,ARMv7 (从2010年起),x86 (从2011年起),MIPS (从2012年起),ARMv8,MIPS64和x86_64 (从2014年起),每一种都关联着一个相应的ABI(应用程序二进制接口(ApplicationBinary Interface)定义了二进制文件(尤其是.so文件)如何运行在相应的系统平台上,从使用的指令集,内存对齐到可用的系统函数库)。Android现在的主流CPU是armeabi-v7a。armeabi-v7a是针对有浮点运算或高级扩展功能的ARMv7CPU

     

    2.Android设备如何加载.so文件:

               当一个应用安装在设备上,只有该设备支持的CPU架构对应的.so文件会被安装。不同CPU架构的Android手机加载时会在libs下找自己对应的目录,从对应的目录下寻找需要的.so文件;如果没有对应的目录,就会去armeabi下去寻找,如果已经有对应的目录,但是如果没有找到对应的.so文件,也不会去armeabi下去寻找了。

            以x86设备为例,x86设备会在项目中的 libs文件夹寻找是否含有x86文件夹,如果含有x86文件夹,则默认为该项目有x86对应的so可运行文件,只有x86文件夹而文件夹下没有so,程序运行也是会出现findlibrary returned null的错误的;如果工程本身不含有x86文件夹,则会寻找armeabi或者armeabi-v7a文件夹,兼容运行。以armeabi-v7a设备为例,该Android设备当然优先寻找libs目录下的armeabi-v7a文件夹,同样,如果只有armeabi-v7a文件夹而没有 so也是会报错的;如果找不到armeabi-v7a文件夹,则寻找armeabi文件夹,兼容运行该文件夹下的so,但是不能兼容运行x86的so。所以项目中如果只含有x86的so,在armeabi和armeabi-v7a也是无法运行的。以上就是不同CPU架构运行时加载so的策略。


    3.适配不同的平台

            目前主流的Android设备是armeabi-v7a架构的,然后就是x86和armeabi了。如果同时包含了 armeabi,armeabi-v7a和x86,所有设备都可以运行,程序在运行的时候去加载不同平台对应的so,这是较为完美的一种解决方案,但是同时也会导致包变大。 
    armeabi-v7a是可以兼容armeabi的,而v7a的CPU支持硬件浮点运算,目前绝大对数设备已经是armeabi-v7a了,所以为了性能上的更优,就不要为了兼容放到armeabi下了。x86也是可以兼容armeabi平台运行的,另外需要指出的是,打出包的x86的so,总会比armeabi平台的体积更小,对于性能有洁癖的童鞋们,还是建议在打包so的时候支持x86。


    4.第三方平台的.so库怎么处理

             关于.so文件之前有一个坑,svn会把提交的so文件过滤掉,在接第三方SDK的时候通过SVN更新了文档,但是没有注意到少了几个so文件,浪费了一天的时间去找原因,SVN如何提交so文件(http://blog.csdn.net/wds1181977/article/details/40373373)。第三方的类库只提供了armeabi下的.so文件,我们项目里适配了armeabi-v7a和x86,如果不在对应的文件下放对应的.so文件,就可能导致某些Android设备会出一些问题,我们可以复制armeabi下得.so文件到不同的文件夹下。如果第三方提供了不同平台的.so文件,则复制不同平台的.so文件到项目中对应的文件夹下即可。


    展开全文
  • 生成的不同cpu架构的so文件一定要放对文件夹,切忌乱放,比如arm-v7a的.so文件放到armabi文件夹下,运行时可能会出错。其中涉及到转换。 并且不建议A 程序的 .so 文件只适配 armabi ,B 程序的 .so 文件适配 ...

    安卓开发者平台关于ABI的介绍
    类似介绍

    先介绍几个专业词:

    ARM :
    是嵌入式中的一种架构,全称为Advanced RISC Machine,可以理解为ARM处理器。

    ABI(Application Binary Interface):
    应用程序二进制接口 描述了应用程序和操作系统之间,一个应用和它的库之间,或者应用的组成部分之间的低接口。

    ABI和CPU关系:
    大部分cpu都支持多于一种的ABI。
    当一个应用安装在设备上,只有该设备支持的CPU架构对应的.so文件会被安装。

    ABI目录(横向)和cpu(纵向)armeabiarmeabi-v7aarm64-v8amipsmips64x86x86_64
    ARMv5支持
    ARMv7支持支持
    ARMv8支持支持支持
    MIPS支持
    MIPS64支持支持
    x86支持支持支持
    x86_64支持支持支持

    x86设备上,选择ABI的优先级

    1. libs/x86目录中如果存在.so文件的话,会被安装。
    2. 如果不存在,则会选择armeabi-v7a中的.so文件。
    3. 如果也不存在,则选择armeabi目录中的.so文件。

    arm设备上CPU 是armabi-v8a,ABI的优先级

    1. 如果手机CPU 是armabi-v8a,优先选择armabi-v8a中的.so文件。
    2. 如果不存在,则会选择armeabi-v7a中的.so文件。
    3. 如果也不存在,则选择armeabi目录中的.so文件。

    arm设备上CPU 是armabi-v7a,ABI的优先级

    1. 如果手机CPU 是armabi-v7a,优先选择armabi-v7a中的.so文件。
    2. 如果不存在,则会选择armeabi中的.so文件。

    Android 设备的CPU类型通常分以下几种

    1.armeabiv-v7a: 第7代及以上的 ARM 处理器,目前主流版本,大部分Android设备都使用它。
    2.arm64-v8a: 第8代、64位ARM处理器。
    3.armeabi: 第5代、第6代的ARM处理器,早期的手机用的比较多,缺少对浮点数计算的硬件支持,在需要大量计算时有性能瓶颈。
    4.x86 / x86_64: x86 架构的手机都会包含由 Intel 提供的称为 Houdini 的指令集动态转码工具,
    实现对arm .so 的兼容。
    5.mips/mips64:极少用于手机可忽略。
    

    关于.so文件的选择

    当涉及到.so文件的加载时,不同架构的CPU会加载不同的.so文件。如果是arm架构的cpu会去加载,比如armabi-v7a 的会优先去 armabi-v7a文件夹下寻找对应的.so文件,如果找不到就会去armabi文件夹下面找.so文件,如果没有的话,程序运行到需要该.so文件的地方会引起崩溃。

    既然mips市场占有率低,x86 又兼容了armabi ,所以只需要支持arm 架构即可,而arm中arm64-v8a的cpu架构又向下兼容arm-v7a与armabi,arm-v7a的架构也兼容armabi。
    因此只需要选择armabi一个即可。当前主流的手机cpu架构是 arm-v7a,因此也可以用arm-v7a代替armabi,他们两个区别是arm-v7a的cpu使用armabi的.so文件时计算效率可能低一点。

    结论就是arm-v7a与armabi二选一即可,当前主流app淘宝微信都只适配了一个armabi。

    关于abiFilters的使用

    ndk {
        abiFilters  "armeabi-v7a"  // 指定要ndk需要兼容的架构(这样其他依赖包里mips,x86,armeabi,arm-v8之类的so会被过滤掉)
    }
    

    如果在build.gradle 中对abiFilters进行了配置,那么只有配置过的目录下的so 文件才会被打包到apk安装包中。

    注意事项:

    • 生成的不同cpu架构的so文件一定要放对文件夹,切忌乱放,比如arm-v7a的.so文件放到armabi文件夹下,运行时可能会出错。其中涉及到转换。

    • 并且不建议A 程序的 .so 文件只适配 armabi ,B 程序的 .so 文件适配 armabi-v7a。如果不统一也可能会有各种问题。

    欢迎爱学习的小伙伴加群一起进步:230274309
    展开全文
  • 最近在用flutter打包的时候,遇到了包打不出来的情况,后面查了半天原因,发现是没有配置arm导致的...所以不要把API放到libs里去。 lib的内容是不会被打包到APK中,libs中的内容是会被打包进APK中 二. .so库 NDK编译出
  • Android 对于armeabi-v7armeabi的取舍

    千次阅读 2019-03-26 10:03:13
    场景: 项目只支持armeabi-v7,引入一个第三方aar,该aar只支持armeabi。 问题:这时候面临的两个取舍问题 1,为了兼容性更好同时导入...1、方法一:放armeabi-v7so就可以了,少数老设备才需要armeabi。如果想万...
  • 转载地址:http://blog.csdn.net/ouyang_peng/article/details/51168072Android 设备的CPU类型(通常称为”ABIs”) x86: 平板、模拟器用得比较多。...armeabiv-v7a: 第7代及以上的 ARM 处理器。2011年15月以后
  • apk打包libs自动删除第三方so问题解决(armeabi/armeabi-v7a等多平台so)
  • 在ANE中如果SDK调用了so库,则需要把so放到ANE下Android-ARM/lib/armeabi (调试模式)或者 armeabi-v7a(发行模式)下。 可以贴个ADT代码说明问题:   //m_configType.equals("apk") 是否是发行模式 /...
  • 所以不要把API放到libs里去。 lib的内容是不会被打包到APK中,libs中的内容是会被打包进APK中 二. .so库 NDK编译出来的动态链接库。 一些重要的加密算法或者核心协议一般都用c写然后给java调用。这样可以避免反编译...
  • 为什么你需要重点关注so文件 App中可能出错的地方 其他地方也可能出错 使用android-21平台版本编译的so文件运行在android-15的设备上 混合使用不同C运行时编译的so文件 没有为每个支持的CPU架构提供对应的so文件 将...
  • 在我们android APK的根目录有一个 libs文件夹,此文件夹下包含了armeabiarmeabi-v7a两个文件夹,我们的c代码编译成的本地库(各种.so)就会放在这两个文件夹其中的一个。那armeabi-v7aarmeabi有什么区别,都...
  • 关于so的兼容问题,算是老生常谈了,如果你做Android开发有过几年的经验的话,可能早就熟知这个问题了。本文做一个简要的整理记录,方便查阅。 ABI 说明 兼容手机 ... armeabi ... armeabi-v7a ...
  • 听的我更加蒙比了,之前只是知道要把.so库扔进去,但是为什么扔,就不懂了,何谈我怎会知道那目录?(PS:还是自己差太多了。。。)好尴尬。。。 查询前期准备首先按照四个部分来查询,分别如下: 一...
  • armeabi,armeabi-v7a,arm64- v8a的不同

    千次阅读 2020-11-24 16:41:42
    armeabi-v7a 第7代 ARM v7,使用硬件浮点运算,具有高级扩展功能(支持 armeabiarmeabi-v7a,目 前大部分手机都是这个架构) arm64-v8a 第8代,64位,包含AArch32、AArch64两个执行状态对应32、64bit(支持 ...
  • 最近在用flutter打包的时候,遇到了包打不出来的情况,后面查了半天原因,发现是没有配置arm...所以不要把API放到libs里去。 lib的内容是不会被打包到APK中,libs中的内容是会被打包进APK中 二. .so库 NDK编译出来的
  • Android开发中的armeabiarmeabi-v7a介绍

    千次阅读 2015-11-10 09:07:20
    在ANE中如果SDK调用了so库,则需要把so放到ANE下Android-ARM/lib/armeabi (调试模式)或者 armeabi-v7a(发行模式)下。可以贴个ADT代码说明问题: //m_configType.equals("apk") 是否是发行模式 //...
  • armeabiv-v7a: 第7代及以上的 ARM 处理器。2011年15月以后的生产的大部分Android设备都使用它. arm64-v8a: 第8代、64位ARM处理器,很少设备,三星 Galaxy S6是其中之一。 armeabi: 第5代、第6代的ARM处理器,早期...
  • 简而言之:armeabi 和 armeabi-v7a是针对不同CPU而建立的文件夹,armeabi是指的该so库用于ARM的通用CPU,而v7a的CPU支持硬件浮点运算。因此armeabi通用性强,但速度慢,而v7a能充分发挥cpu的性能,armeabi-v7a ...
  •    armeabi-v7a是可以兼容armeabi的,而v7a的CPU支持硬件浮点运算,目前绝大对数设备已经是armeabi-v7a了,所以为了性能上的更优,就不要为了兼容放到armeabi下了。x86也是可以兼容armeabi平台运行的,另外需要...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,860
精华内容 1,544
关键字:

v7a的so放到armeabi