Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there any iOS app size inspection tool?

Tags:

xcode

ios

ipa

I am working with an iOS app which uses both objective-c and swift code. Currently app IPA size became large. Some resources are included but may not be used in Release IPA. I want to find out which resource should be removed and which resource are making my app size increased unnecessarily. I wonder if there is any such tool or xcode profiler to analyze.

like image 688
Sazzad Hissain Khan Avatar asked Apr 26 '17 11:04

Sazzad Hissain Khan


People also ask

How do I find out the size of an app?

Open Play Console and go to the App size page (Quality > Android vitals > App size). At the top right of the screen, you can filter the page data by App download size or App size on device.

Can I test my app on iPhone?

Help developers test beta versions of their apps and App Clips using the TestFlight app. Download TestFlight on the App Store for iPhone, iPad, Mac, and Apple TV.

How do I see the size of an iOS app in Xcode?

Product > Archive (you need the iOS device scheme selected here, which means you need a valid signing identity set up) Window > Organizer. Select the "Archives" tab. Select your archive, and in the header detail view, click "Estimate Size"


2 Answers

So far the best tool I found is https://github.com/tinymind/LSUnusedResources

LSUnusedResources

A Mac App to find unused images and resources in an XCode project. It is heavily influenced by jeffhodnett‘s Unused, but Unused is very slow, and the results are not entirely correct. So It made some performance optimization, the search speed is more faster than Unused.

Export unused resource list

Use this tool and export unused/unreferenced resource list into unused.txt

enter image description here

Remove references from Xcode .pbxproj file

Use the below python script to delete references from project.pbxproj file:

    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')

And an alternative script, in bash:

    #!/bin/bash

    UNUSED_ASSETS_FILENAME="unused-images.txt"
    XCODEPROJ_PATH="zilly.xcodeproj/project.pbxproj"

    while read LINE; do
      FILENAME="$(basename "$LINE")"
      if [[ $FILENAME =~ (png|jpeg|jpg|gif)$ ]]; then
        echo "Removing '$FILENAME' references from $XCODEPROJ_PATH"
        sed -i '' "/$FILENAME/d" $XCODEPROJ_PATH
      fi
    done < $UNUSED_ASSETS_FILENAME
like image 134
Sazzad Hissain Khan Avatar answered Oct 08 '22 21:10

Sazzad Hissain Khan


First of all, are you using the latest Xcode version? Xcode 8.3 produces binaries 2-3 times larger than Xcode 8.2, and Apple fixed this bug in 8.3.1.

Also, you can check out On Demand Resources, which will let you upload your heavy assets to App Store, but not bundled within the app - and when the user will download your app, iOS will automatically download necessary assets for properly running the app.

You can change the .ipa file to have the .zip extension and unpack it. You later on can use simple inspection (Disk Inventory X for instance) of the unarchived .zip file and see what's going on there.

Also, it is probable that you're looking at a App Store Submission .ipa, which will contain necessary dSYM files and other miscellaneous data.

You can check what App Store .ipa sizes for different devices the app will have by following steps in this answer.

And last but not least, check out this Q&A by Apple on reducing the size of your app.

like image 31
nemesis Avatar answered Oct 08 '22 20:10

nemesis