我正在使用同时使用Objective c和swift代码的iOS应用程序。目前应用IPA规模变得如此之大。包括一些资源但可能未在最终版本IPA中使用。我想找到应该删除哪个资源以及哪些资源使我的应用程序大小不必要地增加。我想知道是否有任何工具或xcode探查器来分析和摆脱这个问题。
由于
答案 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
用于在XCode项目中查找未使用的图像和资源的Mac App。它受到jeffhodnett Unused的严重影响,但Unused非常慢,结果并不完全正确。因此它进行了一些性能优化,搜索速度比未使用更快。
使用此工具并将未使用/未引用的资源列表导出到unused.txt
使用下面的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)
推荐一个有效的应用大小分析工具:
优点: