首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

64 位适配黑科技:一键检索未适配的 so 文件

APK 中主要 ABI 类型的 so 文件: lib/abi>/lib.so 如果没有找到,则会去查找 APK 文件中辅助 ABI 类型的 so 文件: lib/abi...时加载到内存中。如果没有查找到匹配的 so 文件,不会中断安装过程,但在运行时会崩溃。 关于加载 so 文件的过程,我们在 《说说 so 库从加载到卸载的全过程》这篇文章里已经讨论过了。...ndk. abiFilters 配置可以过滤出需要打包到 APK 中的 so 文件,例如以下配置将会把 armeabi-v7e 和 arm64-v8a 两种 ABI 类型的 so 文件打包到 APK...其实,应用市场是支持单独分发 32 位和 64 位 APK 包的能力的,我们可以使用 splits 配置。例如以下配置会将每种 ABI 类型单独打包。...市面上目前有类似的工具吗,可以分享给我。或者你可以说说那些最让你头疼的整改问题(给我提 Feature!)

89820

安卓so库你应该注意的事

但ARM64在的手机上真的有用吗?我只能说,目前确实没啥用,但今后或许有。...为什么你需要重点关注.so文件 如果项目中使用到了NDK,它将会生成.so文件,因此显然你已经在关注它了。...Android应用支持的ABI取决于APK中位于lib/ABI目录中的.so文件,其中ABI可能是上面说过的七种ABI中的一种。...文件会自动包含到引用AAR压缩包的APK中) 最终APK文件中的lib/ABI目录中 通过PackageManager安装后,在小于Android 5.0的系统中,.so文件位于app的nativeLibraryPath...以减少APK包大小为由是一个错误的借口,因为你也可以选择在应用市场上传指定ABI版本的APK,生成不同ABI版本的APK可以在build.gradle中如下配置: android

1.2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    关于so文件你需要知道的知识「建议收藏」

    指令集,所以如果损失一些应用的性能是可以接受的,同时不希望保留库的两份拷贝,可以移除armeabi-v7a目录和其下的库文件,只保留armeabi目录;比如Apk使用第三方的so只有armeabi这一种...,可以选择删掉x86库目录,x86下配置的armeabi目录的so库一样可以正常加载使用。...比如Apk使用第三方的so只有32位ABI的so,可以考虑去掉Apk中lib目录下的64位ABI子目录,保证Apk安装后正常使用。 5....原方案使用的是共享库,这不一定都支持所有的机型,改用静态库gnustl_static问题解决。 对应的在Android Studio中需要将共享库改用静态库gnustl_static。...- 使用GNU libstdc++ 作为静态库 gnustl_shared - 使用GNU libstdc++ 作为共享库 上述例子只是一个简单的例子,可能在so编译生成时,由于没有考虑共享库的机型匹配等原因导致

    2.9K10

    ERROR: Conflicting configuration : arm64-v8a in ndk abiFilters cannot be present when split...

    在这里记录一下这个错误,防止自己以后再犯 ^ _ ^ 优化ApK大小之ABI Filters 和 APK split 想要打出的 apk 包含多个架构的 so库 需要下面的配置: android {...... // 其它配置 defaultConfig { ... // 默认配置 ndk { //选择要添加的对应cpu类型的.so库。...apk 包,可以使用 ABI 拆分,需要下面的配置: android { ... // 其它配置 splits { abi { reset()//...重置 ABI 列表为只包含一个空字符串(与 include 一起使用可以表示要使用哪一个 ABI,而不是要 exclude 哪些 ABI) enable true // 设为true...总结 如果两种方式分开配置都可以运行; 两种方式一起配置在不报错的情况下(ABI拆分注调include),ABI 拆分不生效;

    2.8K10

    so库你应该知道的基础知识

    指令集,所以如果损失一些应用的性能是可以接受的,同时不希望保留库的两份拷贝,可以移除armeabi-v7a目录和其下的库文件,只保留armeabi目录;比如Apk使用第三方的so只有armeabi这一种...,可以选择删掉x86库目录,x86下配置的armeabi目录的so库一样可以正常加载使用。...比如Apk使用第三方的so只有32位ABI的so,可以考虑去掉Apk中lib目录下的64位ABI子目录,保证Apk安装后正常使用。 5....原方案使用的是共享库,这不一定都支持所有的机型,改用静态库gnustl_static问题解决。  对应的在Android Studio中需要将共享库改用静态库gnustl_static。... -  使用GNU libstdc++ 作为静态库 gnustl_shared -  使用GNU libstdc++ 作为共享库 上述例子只是一个简单的例子,可能在so编译生成时,由于没有考虑共享库的机型匹配等原因导致

    11221

    android Ndk JNI 入门

    相信很多人对于NDK 开发都是懵逼的,比如都知道把加密的逻辑以及密钥放在so文件中,但是你知道怎么生成so文件吗?你知道开发jni吗?你熟悉jni语法吗?...怎么配置android studio 中的NDK环境?此时你一定很懵逼,我也是从这过来的,我不能帮助你开发Ndk,但是我可以让你不懵逼。 有需要的可以去百度,这里讲一下android studio。...因为 C语言 不跨平台,在Windows系统下使用NDK编译在 Linux 下能执行的函数库——SO文件,全称Shared Objects,其实质就是一堆c、c++的头文件和实现文件打包成一个库。...64 以本人ODM经验来说,你应该尽可能的提供专为每个ABI优化过的.so文件,(尽量不要混合着使用)。...ps: Native Libs Monitor 这个应用可以帮助我们理解手机上安装的APK用到了哪些.so文件,以及.so文件来源于哪些函数库或者框架。 二、JNI ?

    1.2K21

    Android NDK开发扫盲及最新CMake的编译使用

    官方文档分别从以下几个方面介绍了 NDK NDK 的基础概念 如何编译 NDK 项目 ABI 是什么以及不同 CPU 指令集支持哪些 ABI 如何使用您自己及其他预建的库 本节将会对文档进行总结和补充。...比如指定使用c++11还是c++14编译,会引用哪些共享库,并描述关系等,还会指定编译的 abi。只有有了这些 NDK 中的编译工具才能准确的编译 c/c++ 代码。...CMake 编译自己及其他预建的库。...同时在这推荐一个中文翻译的简易的CMake手册 2.2 CMake 使用自己及其他预建的库 当你需要引入已有的静态库/动态库(FFMpeg)或者自己编译核心部分并提供出去时就需要考虑如何在 CMake...中使用自己及其他预建的库。

    2.4K30

    再谈Android动态链接库

    其实这是一个常识问题,针对不同的架构我们肯定要提供不同的动态链接库,所以,在实际开发过程中,我们并不是将这7种so库都集成到我们的项目中去,我们会根据实际情况做一个取舍。...如果项目用到了NDK,Android apk文件将会到位于lib/ABI文件下读取相关.so文件。Android包管理器在安装APK文件时,会自动选择对应系统环境下预编译好的.so文件。...ABI和CPU的关系 在使用so库应该注意:很多设备都支持多于一种的ABI,当一个应用安装在设备上,只有该设备支持的CPU架构对应的.so文件会被安装。...但你不应该从你的应用程序中读取它,因为Android包管理器安装APK时,会自动选择APK包中为对应系统ABI预编译好的.so文件。...Android Studio工程放在jniLibs/ABI目录中(当然也可以通过在build.gradle文件中的配置jniLibs.srcDir脚本) Eclipse工程放在libs/ABI目录中 其他说明

    2.5K70

    Android CPU ABI

    ABI 可以非常精确地定义应用的机器代码在运行时如何与系统交互。 您必须为应用要使用的每个 CPU 架构指定 ABI。 典型的 ABI 包含以下信息: 机器代码应使用的 CPU 指令集。...运行时内存存储和加载的字节顺序。 可执行二进制文件(例如程序和共享库)的格式,以及它们支持的内容类型。 用于解析内容与系统之间数据的各种约定。...这些约定包括对齐限制,以及系统如何使用堆栈和在调用函数时注册。 运行时可用于机器代码的函数符号列表 - 通常来自非常具体的库集。..."armeabi-v7a","arm64-v8a","x86_64" } } 如果你的工程包含 NDK 开发,一般为了压缩 APK 体积都会在 build.gradle 做如上设置以声明 APK...支持的 ABI 架构,其它没有被声明的 ABI 所对应的 .so 等库就不会被打包进 APK 中。

    1.8K20

    APK安装流程详解4——安装中关于so库的那些事

    典型的ABI包含以下信息: 1、机器代码应使用的CPU指令集 2、运行时内存存储和加载的字节顺序 3、可执行二进制文件(例如程序和共享库)的格式,以及它们支持的内容类型 4、用于解析内容与系统之间的数据的各种约定...由上述定义可以判断: ABI定义了规则,而具体的实现是由编译器、CPU、操作系统共同来完成的。...我们在Window/Linux平台使用Android NDK交叉编译工具来编译出Android平台的库也是这个道理。 (一)、.so文件与ABI 如果你的项目中使用了NDK,它就生成了.so文件。...即你应该为每个ABI目录提供对应的so文件。 2、NDK兼容性 使用NDK时,一般人会倾向于使用最新的编译凭条,但实际上这样做是有问题的。因为NDK平台是不向后兼容的,而是向前兼容的。...得到引用支持的架构索引之后就可以获取so释放到设备中的目录了。

    4.3K10

    安卓项目中so库选择(ndk abiFilters设置,armeabi,armeabi-v7a,arm64-v8a)

    大家好,又见面了,我是你们的朋友全栈君。 背景 Android 系统本质是一个经过改造的 Linux 系统,so库是Linux系统上使用的共享库(类似windows上的dll)。...其实这个可以不设置,这样编译时,就会将项目里所有依赖资源包里的so库都打到最终的apk里。...如果那些so库是我们自己编译出来的,那可以直接在工程中删除对应so文件,但是如果是第三方提供的,就不好删除了,所以就需要使用abiFilters来过滤了。...、armeabi-v7a、arm64-v8a的兼容性问题 看上上面的描述,以为新增一个so库文件可以随便根据需要适配的目录放,就错了。...如果你有库文件在armeabi里有,但是armeabi-v7a目录下没有,那么运行在V7a的架构时,就会出现找不到so库文件的情况。

    3.8K20

    快速上手ndk开发! MacWin下配置和使用!(2018.4重编版)

    所以需要让Android去支持那些已有的库. java源码反编译一下很容易拿到的, 当然可以加固apk, 会好一点....而编译生成.so之后, c的源码就很难看到了. ---- ndk环境配置 有个比较头痛的事情叫做配环境 下载ndk ? mac下下载ndk ? win下下载ndk 配置ndk路径 ?...打开PowerShell测试一下 终于可以开始使用NDK了, 或者你可以管它叫JNI ---- ndk上手 在包目录下创建HellJNI类, 并写入必要代码 ? mac下 ?...("HelloC");中的名称一致; Win下需要再加一个空的util.c文件进行编译, 否则会报错, 不信可以试试(手动滑稽), mac/linux下无需....一览 你可以在这个项目中使用这个由c实现的加法函数了, 但是我们有更酷的事情要做, 那就是在另外的项目中用这个函数. ---- 其他项目使用.so 这件事其实没有很难, 基本靠两步.

    1K30

    android开发 加载so库的解析和出现的各种错误分析

    五.如何查看当前设备支持那些版本的so库? 我们可以通过Build.SUPPORTED_ABIS得到根据偏好排序的设备支持的ABI列表。...但你不应该从你的应用程序中读取它,因为Android包管理器安装APK时,如果在对应的lib/ABI目录中存在.so文件的话,会自动选择APK包中为对应系统ABI预编译好的.so文件。...Android Studio工程放在jniLibs/ABI目录中(当然也可以通过在build.gradle文件中的设置jniLibs.srcDir属性自己指定) Eclipse工程放在libs/ABI...目录中(这也是ndk-build命令默认生成.so文件的目录) AAR压缩包中位于jni/ABI目录中(.so文件会自动包含到引用AAR压缩包的APK中) 最终APK文件中的lib/ABI目录中...即达到了减少APK大小的目的,又能达到适配ARMv7等架构以便使用其架构的一些新特性的目的。 十一.so库开发过程中的一些错误汇总!

    2.4K10

    Android之NDK开发初体验

    个人博客地址 http://dandanlove.com/ 记得前年开始自己在项目中使用第三方so库的时候就接触NDK编程开发了,只不过哪个时候自己是输出了"Hello Wrold~!"。...它提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk。这些工具对开发者的帮助是巨大的。...它集成了交叉编译器,并提供了相应的mk文件隔离CPU、平台、ABI等差异,开发人员只需要简单修改mk文件(指出“哪些文件需要编译”、“编译特性要求”等),就可以创建出so。...它可以自动地将so和Java应用一起打包,极大地减轻了开发人员的打包工作。 ARM 早起Android只支持ARMv5的CPU架构,而发展到现在,支持一下7种架构: ?...兼容所有CPU架构类型是在性能上比较好,但是同时它也造成了apk体积的剧增(PS:我们之前的项目因为接入so库后导致apk体积剧增,最后只支持armeabi一种类型了)。

    1.3K40

    NDK 是什么 | FFmpeg 5.0 编译 so 库

    其余的东西暂时对我们来说并没有什么太大的意义,现在我们的目的是通过这个源码通过 NDK 来编译成在 Android 中可以使用的动态链接库 so 文件。...---- 2、下载 NDK :r24 可以在如下网站中下载 NDK 的工具包,不过在 macOS 中更推荐用 Android SDK 管理器来下载,如下在 AndroidStudio 中选择 NDK 点击...其实在 Android 开发中,NDK 的作用也是如此,核心价值也是把其他语言编译成Android 平台可以访问的 so 而已。所以也不要觉得 NDK 有多么神秘,就是一个工具集而已。...项目结构 在 cpp 文件夹中处理 c++ 相关内容,jniLibs 文件夹放入文件编译的 so 库: ---- 3....NDK 将 C 和 C++ 代码编译到原生库中,然后使用 Android Studio 的集成构建系统 Gradle 将原生库打包到 APK 中。

    1.4K21

    【Android 逆向】Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | VS 自带的 Android 平台应用创建与配置 )

    文章目录 一、Visual Studio 安装 " 使用 C++ 的移动开发 " 二、Visual Studio 中创建 " 动态共享库(Android) " 类型应用 三、设置编译选项 四、生成 ARM...架构 SO 动态库 五、生成 x86 架构 SO 动态库 一、Visual Studio 安装 " 使用 C++ 的移动开发 " ---- 使用 Visual Studio 2019 开发环境 , 参考...Installer 中 , 安装 " 使用 C++ 的移动开发 " ; 等待安装完成 ; 二、Visual Studio 中创建 " 动态共享库(Android) " 类型应用 ---- 在 Visual...架构 SO 动态库 ---- 生成动态库 : 右键点击 " 解决方案资源管理器 " , 在弹出的菜单中 , 选择 " 仅用于项目(J) -> 仅生成 VS_NDK_Demo(B) " 选项 ; 生成动态库结果...架构的动态库 , 可以选择 x86 架构 , 再次编译 ; 可选择的架构有 ARM , ARM64 , x86 , x64 ;

    1.1K10

    片多多64位升级之路

    系统的PMS服务(PackageManagerService)就会通过它的scanPackageDirtyLI方法进行遍历lib文件夹下的目录,目录内存放着so库,如下图所示:图片库中可能包含了“arm64...那么,划重点就是,64位的适配其实就是apk中lib文件夹下的so库的适配,java的代码是同一份,无论在64位还是32位上均可运行,而so库则不同,专门适配的版本,无论是性能和效率都会得到更高的发挥。...这里要注意一点,一旦运行了64位的进程,那么此时去加载32位的so库,是无法实现的,32位亦然。6.片多多适配6.1 包的构建方案一、构建一个支持所有abi类型的apk。...实现方案:在build.gradle里的ndk中加上相应的abi类型即可方案二、为每个abi单独构建apk优点:包体积几乎保持不变缺点:需要根据不同的情况,下发合适的apk到对应的用户设备上进行安装方案...需要查找64位与32位的so库的区别的,快速方式可以使用以下工具:EasyPrivacy:https://github.com/pengxurui/EasyPrivacy。使用日志分析即可:图片

    52850

    armeabi-v7a架构(sv7a)

    在ANE中如果SDK调用了so库,则需要把so库放到ANE下Android-ARM/lib/armeabi (调试模式)或者 armeabi-v7a(发行模式)下。...armeabi与armeabi-v7a表示支持不同的CPU类型armeabi是指的该so库用于ARM的通用CPU,而v7a的CPU支持硬件浮点运算。...我项目中使用armeabi还是armeabi-v7a对于AIR项目来说性能问题是最大的瓶颈,能优化一点就一点,所以如果接平台方SDK或者写ANE的时候使用到SO库,个人推荐全部放到armeabi-v7a...现在还有x86的了,其实armeabi 、armeabi-v7a 和x86是编译 NDK 库时,可以使用三种支持的应用二进制接口(ABI):‘armeabi’ – 默认选项,将创建以基于 ARM* v5TE...具有这种目标的浮点运算使用软件浮点运算。 使用此 ABI 创建的二进制代码将可以在所有 ARM* 设备上运行。

    1.3K10
    领券