减少.ipa中可执行文件的大小

时间:2015-06-08 12:42:10

标签: ios xcode6

遵循此how to reduce the size of app

我的ipa大小为19 MB。使用.zip扩展名重命名该文件,然后双击它。在Payload文件夹中找到应用程序并右键单击它并选择显示包内容。发现exec是25MB和一些大尺寸的图像。我怎样才能减少exec的大小?因为我想减少商店中应用的大小

任何想法/建议都会非常有用

2 个答案:

答案 0 :(得分:1)

  1. 您可以从互联网
  2. 加载高分辨率图像
  3. 优化闪屏图像,删除alpha,制作8bit颜色
  4. 使用伪AJPEG image.png + image_mask.jpg

    #define maskedCacheStorePath [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:@"maskedImageCache"]
    
    + (UIImage *)maskedImageNamed:(NSString *)imageName useCache:(Boolean)useCache {
        NSString *imageCacheStoreFile = nil;
    
        if (useCache) {
    if (![[NSFileManager defaultManager] fileExistsAtPath:maskedCacheStorePath])
        [[NSFileManager defaultManager] createDirectoryAtPath:maskedCacheStorePath withIntermediateDirectories:YES attributes:nil error:nil];
    imageCacheStoreFile = [maskedCacheStorePath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.png", imageName]];
    if ([[NSFileManager defaultManager] fileExistsAtPath:imageCacheStoreFile])
        return [UIImage imageWithContentsOfFile:imageCacheStoreFile];
        }
    
        UIImage *image = [UIImage imageNamed:[imageName stringByAppendingPathExtension:@"jpg"]];
        UIImage *mask = [UIImage imageNamed:[[imageName stringByAppendingString:@"_mask"] stringByAppendingPathExtension:@"png"]];
    
        CGImageRef ref = CGImageCreateWithMask(image.CGImage, mask.CGImage);
        UIImage *result = [UIImage imageWithCGImage:ref scale:image.scale orientation:image.imageOrientation];
        CGImageRelease(ref);
    
        if (useCache && result)
    [UIImagePNGRepresentation(result) writeToFile:imageCacheStoreFile atomically:YES];
    
        return result;
    }
    

    还会查看this question个答案

答案 1 :(得分:0)

查看this technical Q&A on Apple Developer site

它应包含减少ipa大小的所有提示;)

以下是该文件的摘录,可能会帮助您入门:

  

测量您的应用程序在尝试任何优化之前,您应该进行测量。   本文档中的一些技术是缺陷的权衡   必须考虑。你必须确定它们的影响   你正在做出正确的权衡。没有测量,你就无法知道   你正在做出什么样的改变。

     

应用分发流程会产生许多不同的工件,   每个都有自己的目的和规模。理解什么是重要的   每个工件代表测量时使用的工件和哪些工件   你的应用程序的大小。

     
      
  • 应用包是包含应用中所有二进制文件的.app包,以及所有应用的资源,例如图片。这
      bundle包含应用程序在每个应用程序上运行所需的所有内容   支持的设备。出于本文档的目的,应用程序包
      仅指通过归档应用程序生成的.app。
  •   
  • App Store提交.ipa是在上传到App Store或通过导出iOS存档时从Xcode存档创建的   App Store部署。此.ipa是一个压缩目录   包含应用程序包和App所需的其他资源   存储服务,例如用于崩溃报告和资产的.dSYM文件   随需应变资源包。
  •   
  • 通用.ipa是一个压缩的应用程序包,其中包含在任何设备上运行应用程序的所有资源。 Bitcode已经   重新编译,以及App Store所需的其他资源,例如   .dSYM文件和随需应变资源将被删除。对于App Store应用,   此.ipa将下载到运行iOS 8或更早版本的设备。
  •   
  • 精简的.ipa是一个压缩的应用包,仅包含在特定设备上运行应用所需的资源。 Bitcode有   已经重新编译,以及App Store所需的其他资源,
      例如.dSYM文件和随需应变资源,将被删除。对于应用
      存储应用程序,此.ipa将下载到运行iOS 9或
    的设备   后来。
  •   
  • 通用应用程序包是解压缩的通用.ipa。安装过程解压缩通用.ipa并安装   通用应用程序包。
  •   
  • 精简的应用包是解压缩的.ipa。安装过程解压缩稀疏的.ipa并安装   稀疏的应用程序包。
  •