Skip to content

[BUG] Destroys the iOS Bundle after generating iOS icons. #70

@ahyangnb

Description

@ahyangnb

normal Contents.json

{
  "images" : [
    {
      "size" : "20x20",
      "idiom" : "iphone",
      "filename" : "Icon-App-20x20@2x.png",
      "scale" : "2x"
    },
    {
      "size" : "20x20",
      "idiom" : "iphone",
      "filename" : "Icon-App-20x20@3x.png",
      "scale" : "3x"
    },
    {
      "size" : "29x29",
      "idiom" : "iphone",
      "filename" : "Icon-App-29x29@1x.png",
      "scale" : "1x"
    },
    {
      "size" : "29x29",
      "idiom" : "iphone",
      "filename" : "Icon-App-29x29@2x.png",
      "scale" : "2x"
    },
    {
      "size" : "29x29",
      "idiom" : "iphone",
      "filename" : "Icon-App-29x29@3x.png",
      "scale" : "3x"
    },
    {
      "size" : "40x40",
      "idiom" : "iphone",
      "filename" : "Icon-App-40x40@2x.png",
      "scale" : "2x"
    },
    {
      "size" : "40x40",
      "idiom" : "iphone",
      "filename" : "Icon-App-40x40@3x.png",
      "scale" : "3x"
    },
    {
      "size" : "60x60",
      "idiom" : "iphone",
      "filename" : "Icon-App-60x60@2x.png",
      "scale" : "2x"
    },
    {
      "size" : "60x60",
      "idiom" : "iphone",
      "filename" : "Icon-App-60x60@3x.png",
      "scale" : "3x"
    },
    {
      "size" : "20x20",
      "idiom" : "ipad",
      "filename" : "Icon-App-20x20@1x.png",
      "scale" : "1x"
    },
    {
      "size" : "20x20",
      "idiom" : "ipad",
      "filename" : "Icon-App-20x20@2x.png",
      "scale" : "2x"
    },
    {
      "size" : "29x29",
      "idiom" : "ipad",
      "filename" : "Icon-App-29x29@1x.png",
      "scale" : "1x"
    },
    {
      "size" : "29x29",
      "idiom" : "ipad",
      "filename" : "Icon-App-29x29@2x.png",
      "scale" : "2x"
    },
    {
      "size" : "40x40",
      "idiom" : "ipad",
      "filename" : "Icon-App-40x40@1x.png",
      "scale" : "1x"
    },
    {
      "size" : "40x40",
      "idiom" : "ipad",
      "filename" : "Icon-App-40x40@2x.png",
      "scale" : "2x"
    },
    {
      "size" : "76x76",
      "idiom" : "ipad",
      "filename" : "Icon-App-76x76@1x.png",
      "scale" : "1x"
    },
    {
      "size" : "76x76",
      "idiom" : "ipad",
      "filename" : "Icon-App-76x76@2x.png",
      "scale" : "2x"
    },
    {
      "size" : "83.5x83.5",
      "idiom" : "ipad",
      "filename" : "Icon-App-83.5x83.5@2x.png",
      "scale" : "2x"
    },
    {
      "size" : "1024x1024",
      "idiom" : "ios-marketing",
      "filename" : "Icon-App-1024x1024@1x.png",
      "scale" : "1x"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

bad Contents.json

{
  "images": [
    {
      "filename": "Icon-App-20x20@2x.png",
      "idiom": "universal",
      "scale": "2x",
      "size": "20x20",
      "platform": "ios"
    },
    {
      "filename": "Icon-App-20x20@3x.png",
      "idiom": "universal",
      "scale": "3x",
      "size": "20x20",
      "platform": "ios"
    },
    {
      "filename": "Icon-App-29x29@2x.png",
      "idiom": "universal",
      "scale": "2x",
      "size": "29x29",
      "platform": "ios"
    },
    {
      "filename": "Icon-App-29x29@3x.png",
      "idiom": "universal",
      "scale": "3x",
      "size": "29x29",
      "platform": "ios"
    },
    {
      "filename": "Icon-App-38x38@2x.png",
      "idiom": "universal",
      "scale": "2x",
      "size": "38x38",
      "platform": "ios"
    },
    {
      "filename": "Icon-App-38x38@3x.png",
      "idiom": "universal",
      "scale": "3x",
      "size": "38x38",
      "platform": "ios"
    },
    {
      "filename": "Icon-App-40x40@2x.png",
      "idiom": "universal",
      "scale": "2x",
      "size": "40x40",
      "platform": "ios"
    },
    {
      "filename": "Icon-App-40x40@3x.png",
      "idiom": "universal",
      "scale": "3x",
      "size": "40x40",
      "platform": "ios"
    },
    {
      "filename": "Icon-App-60x60@2x.png",
      "idiom": "universal",
      "scale": "2x",
      "size": "60x60",
      "platform": "ios"
    },
    {
      "filename": "Icon-App-60x60@3x.png",
      "idiom": "universal",
      "scale": "3x",
      "size": "60x60",
      "platform": "ios"
    },
    {
      "filename": "Icon-App-64x64@2x.png",
      "idiom": "universal",
      "scale": "2x",
      "size": "64x64",
      "platform": "ios"
    },
    {
      "filename": "Icon-App-64x64@3x.png",
      "idiom": "universal",
      "scale": "3x",
      "size": "64x64",
      "platform": "ios"
    },
    {
      "filename": "Icon-App-68x68@2x.png",
      "idiom": "universal",
      "scale": "2x",
      "size": "68x68",
      "platform": "ios"
    },
    {
      "filename": "Icon-App-76x76@2x.png",
      "idiom": "universal",
      "scale": "2x",
      "size": "76x76",
      "platform": "ios"
    },
    {
      "filename": "Icon-App-83.5x83.5@2x.png",
      "idiom": "universal",
      "scale": "2x",
      "size": "83.5x83.5",
      "platform": "ios"
    },
    {
      "filename": "Icon-App-1024x1024@1x.png",
      "idiom": "universal",
      "scale": "1x",
      "size": "1024x1024",
      "platform": "ios"
    }
  ],
  "info": {
    "author": "icons_launcher",
    "version": 1
  }
}

bad because it will be makes CFBundleIcons error, such as getAppIcon() will return nil, but the normal Contents.json will be displayed a pefect image.

    func getAppIcon() -> UIImage? {
        // get the CFBundleIcons of Info.plist. 
        guard let iconsDictionary = Bundle.main.infoDictionary?["CFBundleIcons"] as? [String: Any],
              let primaryIcons = iconsDictionary["CFBundlePrimaryIcon"] as? [String: Any],
              let iconFiles = primaryIcons["CFBundleIconFiles"] as? [String],
              let lastIconName = iconFiles.last else {
            print("App icon not found in Info.plist")
            return nil
        }
        
        // Get the App icon image
        return UIImage(named: lastIconName)
    }
    ```

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions