iOS App尺寸检查工具

时间:2017-04-26 11:51:30

标签: ios xcode ipa

我正在使用同时使用Objective c和swift代码的iOS应用程序。目前应用IPA规模变得如此之大。包括一些资源但可能未在最终版本IPA中使用。我想找到应该删除哪个资源以及哪些资源使我的应用程序大小不必要地增加。我想知道是否有任何工具或xcode探查器来分析和摆脱这个问题。

由于

3 个答案:

答案 0 :(得分:6)

首先,您使用的是最新的Xcode版本吗? Xcode 8.3生成的二进制文件比Xcode 8.2大2-3倍,Apple修复了8.3.1中的这个错误。

此外,您可以查看On Demand Resources,它可以让您将重型资产上传到App Store,但不会捆绑在应用中 - 当用户下载您的应用时,iOS会自动下载必要的资源正确运行应用程序。

您可以将.ipa文件更改为.zip扩展名并将其解压缩。您稍后可以使用未归档的.zip文件的简单检查(例如Disk Inventory X) 看看那里发生了什么。

此外,您可能正在查看App Store提交的.ipa,其中包含必要的dSYM个文件和其他杂项数据。

您可以按照this answer中的步骤检查应用将拥有的不同设备的App Store .ipa大小。

最后但并非最不重要的是,请查看Apple减少应用大小的this Q&A

答案 1 :(得分:6)

到目前为止,我发现的最佳工具是https://github.com/tinymind/LSUnusedResources

LSUnusedResources

用于在XCode项目中查找未使用的图像和资源的Mac App。它受到jeffhodnett Unused的严重影响,但Unused非常慢,结果并不完全正确。因此它进行了一些性能优化,搜索速度比未使用更快。

导出未使用的资源列表

使用此工具并将未使用/未引用的资源列表导出到unused.txt

enter image description here

从Xcode .pbxproj文件中删除引用

使用下面的python脚本删除project.pbxproj文件中的引用,

file = open("unused.txt","r")
data = [line.rstrip('\n') for line in open("project.pbxproj", 'r')]
newFile = open("project2.pbxproj","w")

def removeLine(imageName):
        temp = data 
        for line_s in temp:
                if line_s.find(imageName) != -1:
                        data.remove(line_s)
                else:
                        continue        

for line in file:
        if (len(line) > 5):
                tokens = line.split("/")
                len_a = len(tokens)
                imageName =  tokens[len_a-1]
                removeLine(imageName.rstrip('\n'))

for line in data:
        newFile.write(line)
        newFile.write('\n')

答案 2 :(得分:0)

推荐一个有效的应用大小分析工具:

WBBlades

优点:

  1. 链接后直接测量.a或.framework的大小,无需反复编译。
  2. 清楚地显示两个版本之间的差异,帮助您控制增加的大小。
  3. 有效检测未使用的代码(ObjC 和 Swift)
  4. 广泛应用于五霸的应用中
相关问题