存档

文章标签 ‘压缩’

压缩 Golang 编译的可执行文件体积

2018年1月1日 没有评论

自从接触 Golang 以来,一直对其编译出来的可执行文件有点看法,因为体积比较大。使用 go build av.go,编译简单的代码出来后就有近8M,当然,这是因为把 Go 的运行时环境也给打包进去了的原因,为了几k的源码实在是不划算,特别是在香蕉派/Firefly这些磁盘空间紧张的设备上面。

今天有搜索一下解决方法,Golang 的先行者给出的思路一共分为2步。

第一步,添加编译符号。

go build -ldflags “-s -w” av.go

-s 相当于strip掉符号表, 但是以后就没办法在gdb里查看行号和文件了。
-w 告知连接器放弃所有debug信息

衣服自己洗是使用 LiteIDE 来编写go代码的,按照下图添加即可,注意不要忘记添加引号,不然编译是无法通过的。

这样一来,编译后的文件就是5M多,看起来还是有点效果。

第二步,我们使用UPX来进一步压缩,其地址为 https://github.com/upx/upx,下载对应的版本即可。使用起来也很简单,默认即为压缩,输入upx av.exe 即可。

-d 解压缩
-l 查看压缩前后信息

现在再看,体积已经到1.7M左右了,效果很明显,就问你惊不惊喜,意不意外。

由于以前有木马病毒也使用UPX来加壳,导致现在杀毒软件对UPX不太友好。如果是部署在服务端或者Linux系统应该还好,特别是面向windows用户发布的,各位同学请慎重,可以考虑添加数字签名。至于如何使用数字签名,可以参考我的另外一个帖子。

对于产线的 Release 编译,使用自动化工具来做这个事情,应该都是小菜一碟了,就不提了。

分类: Golang, 日常 标签: , ,

pngcrush 不错的png图片压缩工具

2014年4月18日 没有评论

pngcrush 是一个免费开源的png图片的压缩工具。甚至可以在不损失视觉效果的前提下压缩40%的体积,png图片的加载速度比没有优化前要快很多。其原理是去除png文件头里的部分数据。

第一次接触这个东西时并不是为了做图片压缩,而是在分析 ipa 文件时碰到的。xcode 在打包应用时,会调用pngcrush 来对图片进行压缩,不过由于是对png文件数据格式做了修改,所以无法直接预览,这样在文件夹里显示的就是黑色的图片。

pngcrush 可以在http://sourceforge.net/projects/pmt/files/pngcrush/ 下载,里面既有源代码,也有可执行程序。其实xcode 里已经包含了,可以在命令行里输入下面的命令,即可找到 pngcrush 的位置。

xcrun -sdk iphoneos -find pngcrush

可以把这个程序拷贝到其它方便的目录,或者做一个快捷方式也是可以的。mac 里快速创建一个快捷方式是酱紫的:按住command+option,然后拖动图标到你想要创建快捷方式的位置,松手即可。

至于使用方式么,

pngcrush -d xxx reverted -revert-iphone-optimizations -q *.png

pngcrush -e xxx reverted -revert-iphone-optimizations -q *.png

还可以简单的这么来使用

pngcrush -reduce -brute -d output image.png image.png

上面是对 pngcrush的一个简单介绍,有需要的同学不妨去看看。

分类: 一句话 标签: , ,