Titanium JIRA Archive
Titanium SDK/CLI (TIMOB)

[TIMOB-15181] iOS7: Icon assets included in app based on older naming convention

GitHub Issuen/a
TypeBug
PriorityHigh
StatusIn Progress
ResolutionUnresolved
Affected Version/sRelease 3.1.3
Fix Version/sn/a
ComponentsCLI, iOS
Labelsqe-3.1.3
ReporterEric Merriman
AssigneeUnknown
Created2013-09-14T00:09:19.000+0000
Updated2018-02-28T20:03:33.000+0000

Description

Description:

When specifying an icon for iOS in an iOS 6 and iOS 7 project, the user will select "app icon.png" (or any other named icon as base). The icons will be copied over to the project beginning with the base name and then matching any other icons. For example, specification of "app icon.png" as the base, "app icon@2x.png" which is the retina version, will be copied. This presents a challenge in iOS7-only projects. Since we recommend the naming convention formerly followed by apple (appicon.png, appicon@2x.png, appicon-72.png, app icon-72@2x.png, etc...) there is no clarity on how to set the icon names for iOS 7 apps as the name of the base icon we might expect to be "appicon-60@2x.png". If there is no icon called appicon.png and this is selected in tiapp.xml then the packaged app may show the correct icons on the various supported devices, but the Xcode archive may show the titanium ribbon. Apple should attempt to choose the best icon for the purpose, and this is supposed to work regardless of the name. We will investigate. If this is the case, the only change would be to documentation.

Steps to reproduce:

1) Attempt to create a project using iOS 7-only icons using our naming convention 2) Select an icon as the base icon

Result:

Only icons that include the base icon name will be included in the project

Expected Result:

All relevant icons for both iOS 7 and iOS 6 are included, regardless of name

Comments

  1. James Semple 2015-01-21

    It seems as if this issue is now preventing apps from being submitted to the app store.
  2. Tim Poulsen 2015-02-04

    Notes: * Apple's icon naming rules are at https://developer.apple.com/library/ios/qa/qa1686/_index.html iOS 8 (and presumably 7) requirements in table 1, iOS 6 requirements in table 2 * Key CLI handling of iOS icons is at https://github.com/appcelerator/titanium_mobile/blob/master/iphone/cli/commands/_build.js#L2031 * The sizes and names are also listed at https://github.com/FokkeZB/TiCons-CLI/blob/master/lib/specs.js The _build.js file: * Takes the name specified in the tiapp.xml and strips off the .png. So, appicon.png in the tiapp.xml results in a basename within _build.js of appicon. * _Assuming the developer has not created a custom plist_, takes the basename and appends the suffixes listed on line 2031 and checks to see if files of those names exist in Resources, Resources/iphone, or Resources/ios. If they do, it lists them in the generated info.plist file, which would cause them to be included in the app bundle. * Does not enforce or require any of those files to be present for the build to succeed. * (Incidentally, it erroneously would include an appicon-60.png file even though Apple doesn't define or use such a file.) Consider this scenario: Per Apple's table 1, for an iOS 8 app, it should be fine to submit an iPhone-only app to Apple with just the appicon-60@2x.png and appicon-60@3x.png (to cover all currently-supported iPhone/iPod Touch devices). The _build.js supports this: specify the tiapp.xml icon name as appicon.png then include only the two files in the project. The binary should be pass Apple's verification step. (For a universal app, you would also need appicon-76.png and appicon-76@2x.png.)
  3. Eric Merriman 2015-02-04

    [~jsemple] Hello,, can you be more specific? Is there an Xcode validation failure prior to upload, if so what are you seeing? Or is this a report from someone who experienced trouble?
  4. Praveen Innamuri 2015-02-14

    Thanks [~skypanther] for creating a wiki page with all the required details. We still need to investigate the actual implementation details from CLI or SDK and figure out what changes are required to implement this. Once we break down the feature work into multiple tasks/tickets, then this ticket can be resolved.

JSON Source