美文网首页
iOS包-(ipa文件)瘦身

iOS包-(ipa文件)瘦身

作者: 刘明洋 | 来源:发表于2018-10-29 20:55 被阅读0次

    1、下载安装瘦身软件

    下载: LSUnusedResources.app.zip或者使用 XCode 编译运行项目代码

    2、Assets.xcassets更能瘦身

    测试得知:CreateGroup、CreateFolderRefences,2种方式,图片都会直接放在.app文件中,所以打包前后,图片的大小不会改变。
    而加入到Assets.xcassets中,打包后,在.app中会生成Assets.car文件来存储图片,文件大小方面也大大降低。

    image.png

    所以,使用Assets.xcassets来管理图片也可以达到ipa瘦身的效果

    3、压缩图片

    imageoptim是一款基于Mac的图像“瘦身”软件,内置有6种压缩算法,通过删除图片部分无用的EXIF等信息来减小PNG、JPEG和GIF图片的大小。ImageOptim合并了OptiPNG、PNGCrush、AdvanceComp、PNGOUT、Jpegoptim+Jpegtran和Gifsicle等几个工具,旨在为设计师提供最好的优化效果。在最新发布的1.4.4版本中,ImageOptim改进了文件在文件列表中的拖拽、复制、粘贴功能。 下载地址

    4、静态库瘦身

    通过lipo工具可以查看第3方库的支持的指令集,比如查看IJKMediaFramework.framework

     lipo -info /Users/lmy/Desktop/test/IJKMediaFramework.framework/IJKMediaFramework 
    

    输出:

    Architectures in the fat file: /Users/lmy/Desktop/test/IJKMediaFramework.framework/IJKMediaFramework are: armv7 i386 x86_64 arm64

    可以看到,此静态库支持armv7 、i386 、x86_64 、arm64 。
    为了打包是app瘦身, 可以去掉i386 、x86_64 这两个模拟器指令集。如果有armv7s,也可以删了。因为armv7可以兼容armv7s,armv7s,只保留armv7和arm64。

    第1步:生成只支持armv7:
    lipo /Users/lmy/Desktop/test/IJKMediaFramework.framework/IJKMediaFramework -thin armv7 -output /Users/lmy/Desktop/test/IJKMediaFramework_v7
    
    第2步:生成只支持arm64:
    lipo /Users/lmy/Desktop/test/IJKMediaFramework.framework/IJKMediaFramework -thin arm64 -output /Users/lmy/Desktop/test/IJKMediaFramework_arm64
    
    第3步:合并armv7+ arm64:
    lipo -create /Users/lmy/Desktop/test/IJKMediaFramework_v7 /Users/lmy/Desktop/test/IJKMediaFramework_arm64 -output /Users/lmy/Desktop/test/IJKMediaFramework
    

    或者,cd到这个目录下,去使用命令,如下所示:

    cd /Users/lmy/Desktop/test 
    
    lipo -create IJKMediaFramework_v7 IJKMediaFramework_arm64 -output IJKMediaFramework
    

    查看目录下所有文件:

    ls -ll
    

    total 479776
    -rwxr-xr-x 1 lmy staff 122819960 10 31 14:32 IJKMediaFramework
    drwxr-xr-x@ 6 lmy staff 192 10 25 15:27 IJKMediaFramework.framework
    -rwxr-xr-x 1 lmy staff 62371760 10 25 15:27 IJKMediaFramework_arm64
    -rwxr-xr-x 1 lmy staff 60448152 10 25 15:27 IJKMediaFramework_v7

    总结:
    原来IJKMediaFramework.framework里面的IJKMediaFramework是185M。
    armv7的大小是:60M
    arm64的大小是:62.4M
    armv7+arm64合并之后文件大小是:122.8M

    解决模拟器无法使用

    删掉了i386和x86_64后模拟器不无法正常运行,目前想到的解决方法:

    1、手动在Build.settings-Framework Search Paths下面指定静态库的引用位置

    2、手动添加静态库的话可以在发布前将静态库替换。

    3、如果用 Cocoapods 管理可以使用两份podfile文件,一份包含模拟器指令集一份不包括,发布的时候更换podfile文件即可;

    或者用同一份podfile,分配置环境设置库

    pod libWeChatSDK:configurations => ['Debug']
    pod libWeChatSDK-device:configurations => ['Release']
    

    信息补充:

    arm64:iPhone6s | iphone6s plus|iPhone6| iPhone6 plus|iPhone5S | iPad Air| iPad mini2(iPad mini with Retina Display)

    armv7s:iPhone5|iPhone5C|iPad4(iPad with Retina Display)

    armv7:iPhone4|iPhone4S|iPad|iPad2|iPad3(The New iPad)|iPad mini|iPod Touch 3G|iPod Touch4

    i386是针对intel通用微处理器32位处理器

    x86_64是针对x86架构的64位处理器

    模拟器32位处理器测试需要i386架构,
    模拟器64位处理器测试需要x86_64架构,
    真机32位处理器需要armv7,或者armv7s架构,
    真机64位处理器需要arm64架构。

    相关文章

      网友评论

          本文标题:iOS包-(ipa文件)瘦身

          本文链接:https://www.haomeiwen.com/subject/dauitqtx.html