Android动态链接库减小体积

Android动态链接库减小体积用 NDK 编译动态链接库 so 编译完成后 如果生成的库体积比较大 可以用 NDK 自带工具 strip exe 来瘦身 64 位 ndk 21 4 toolchains aarch64 linux android 4 9 prebuilt windows x86 64 aarch64 linux android bin32 位 ndk 21 4 toolchains arm linux androideabi 4 9 prebuilt windows x86 64 编译出来的 so 太大

用NDK编译动态链接库(so)

strip命令

编译完成后,如果生成的库体积比较大,可以用NDK自带工具strip.exe来瘦身

strip - s xxx.so : 移除所有符号信息(会覆盖原有带符号表的so)
strip - S xxx.so: 移除调试符号信息
strip - s xxx.so -o yyy.so: 移除所有符号信息,裁减好后,输出指定名字的so

strip

在类Unix和Unix的操作系统中,strip程序可对可执行二进制程序和对象文件中,删除不必要的信息,从而带来更好的性能和减少磁盘空间的使用。“不必要的信息”指的是正常执行功能过程中,不需要的二进制信息,比方调试和符号信息。但该命令裁剪的程度,取决于开发者对这部分代码的具体实现。

此外,使用strip可提高二进制文件在逆向工程中的安全性。如果没有二进制文件的信息和对象的名称,分析它将更加困难。

strip的效果可由连接器(linker)直接实现(见后文与在gcc或者cmake中的使用)。例如,在GNU编译器集合中,这个选项是“-s”。

GNU项目作为GNU binutils包的一部分提供了strip的实现。该命令也移植到了其他操作系统,包括Microsoft Windows。

作为补充知识,引用维基百科关于计算机在编译过程中,符号表(Symbol table)与重定向(Relocation)的介绍。

strip使用说明

如果不指明strip命令的输出文件,也就是默认不带-o这一指定输出文件参数的情况下,会在待裁剪的库上直接裁剪,不会产生临时拷贝或副本。

64位:

ndk\21.4.\toolchains\aarch64-linux-android-4.9\prebuilt\windows-x86_64\aarch64-linux-android\bin

32位:

ndk\21.4.\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\arm-linux-androideabi\bin

这里所用的NDK是Android studio内置的版本,也可以在NDK官网自己下载合适的版本

NDK 修订历史记录

本页提供了与所有已发布的稳定版 NDK 中发生的变更有关的信息。如需下载最新的稳定版 NDK 或任何目前可用的 Beta 版,请参阅 NDK 下载页面。

Android NDK r25 LTS(2022 年 7 月)

变更记录
下载
请从此处下载此版本。
通告
包含 Android 13 API。
基于 LLVM 14 开发成果,将 LLVM 更新为 clang-rd。
Android NDK r24(2022 年 3 月)

Android NDK r23 LTS(2021 年 8 月)

Android NDK r22b(2021 年 3 月)

Android NDK r21e LTS(2021 年 1 月)

Android NDK r20b(2019 年 6 月)

Android NDK r19c(2019 年 1 月)

Android NDK r18b(2018 年 9 月)

Android NDK r17c(2018 年 6 月)

Android NDK r16b(2017 年 12 月)

Android NDK r15c(2017 年 7 月)

Android NDK r14b(2017 年 3 月)

Android NDK r13b(2016 年 10 月)

Android NDK r12b(2016 年 6 月)

Android NDK r12(2016 年 6 月)

Android NDK r11c(2016 年 3 月)

Android NDK r11b(2016 年 3 月)

Android NDK r11(2016 年 3 月)

Android NDK r10e(2015 年 5 月)

Android NDK r10d(2014 年 12 月)

Android NDK r10c(2014 年 10 月)

Android NDK r10b(2014 年 9 月)

Android NDK r10(2014 年 7 月)

Android NDK r9d(2014 年 3 月)

Android NDK r9c(2013 年 12 月)

Android NDK r9b(2013 年 10 月)

Android NDK r9(2013 年 7 月)

Android NDK r8e(2013 年 3 月)

Android NDK r8d(2012 年 12 月)

Android NDK r8c(2012 年 11 月)

Android NDK r8b(2012 年 7 月)

Android NDK r8(2012 年 5 月)

Android NDK r7c(2012 年 4 月)

Android NDK r7b(2012 年 2 月)

Android NDK r7(2011 年 11 月)

Android NDK r6b(2011 年 8 月)

Android NDK r6(2011 年 7 月)

Android NDK r5c(2011 年 6 月)

Android NDK r5b(2011 年 1 月)

Android NDK r5(2010 年 12 月)

Android NDK r4b(2010 年 6 月)

Android NDK r3(2010 年 3 月)

Android NDK r2(2009 年 9 月)

Android NDK r1(2009 年 6 月)

使用方法

C:\MyUser\ndk\21.4.\toolchains\aarch64-linux-android-4.9\prebuilt\windows-x86_64\aarch64-linux-android\bin> .\strip.exe *.so

今天的文章 Android动态链接库减小体积分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2025-01-03 12:40
下一篇 2025-01-03 12:33

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/100606.html