本文作者:IMWeb 黄龙 原文出处:IMWeb社区 未经同意,禁止转载
不明白crossBridge是什么的可以看下这里 https://cloud.tencent.com/developer/article/1008908
编译参数-flto-api=
Specifies a file containing the public API LLVM should preserve (implies that the optimizer is free to strip any symbols not mentioned in this file that aren't referenced by the symbols mentioned in this file)
大体意思就是:指定一个包含你要保留API LLVM 的文件(其他你不需要的就会被优化掉了) 翻译来源:http://bbs.9ria.com/forum.php?mod=viewthread&tid=213448&page=1#pid2094494
为了搞清楚这个东西是怎么玩的,在万能的github上找到一个项目 https://github.com/crossbridge-community/crossbridge-swc-devil 目前为止star是1,要不要点一下。
为什么要以这个项目为例子,因为它的swc仅仅只有167K 看一下它的exports.txt里面写了什么
# built in symbols that must always be preserved
# 构建始终保留的符号
_start1
malloc
free
memcpy
memmove
flascc_uiTickProc
_sync_synchronize
# symbols for C++ exception handling
# C++异常处理的符号
_Unwind_SjLj_Register
_Unwind_SjLj_Resume
_Unwind_SjLj_Unregister
_Unwind_SjLj_RaiseException
# custom symbols
# 自定义符号
试试用这个export.txt来优化库文件体积看看有什么效果。
编译命令行加参数 -flto-api=exports.txt
文件和makefile文件同级即可
测试视频直播SDK通过这个参数减肥340K左右从761K减到419K。编译的swf文件整体体积减小240K左右从558K到315K。效果比较明显在此记录一下。
此处有一个坑,就是这样编译出来的swc文件里面的命名空间可能会是一个很长的临时目录名,但不影响使用