Titanium JIRA Archive
Titanium SDK/CLI (TIMOB)

[TIMOB-15907] iOS: Settings.bundle fails to load

GitHub Issuen/a
TypeBug
PriorityCritical
StatusClosed
ResolutionFixed
Resolution Date2013-12-06T19:27:32.000+0000
Affected Version/sn/a
Fix Version/s2013 Sprint 25, 2013 Sprint 25 Core, Release 3.2.0, Release 3.3.0
ComponentsCLI, iOS
LabelsQA-Fail, bug, ios, qe-testadded, regression, settings.bundle
ReporterAndrew McElroy
AssigneeChris Barber
Created2013-12-05T23:42:45.000+0000
Updated2014-03-11T11:49:13.000+0000

Description

Affected versions (Titanium SDK for iOS): 3.2.0.v20131204220843, 3.2.0.v20131102082008, any version greater than 3.1.3.GA iOS version : 7.x Problem: Settings.bundle is not loaded into the settings app. Attached is a sample app that demonstrates the issue. To reproduce do the following: - Reset iOS (iPad or iPhone) simulator - Build the sample app using Titanium SDK 3.1.3.GA exit the app, go to the settings app, notice that there is a setting for iosbug. - Reset iOS (iPad or iPhone) simulator - Clean the build - Build the sample app using Titanium SDK 3.2.0.v20131204220843 - Observe there is no iosbug setting in the setting app THIS IS THE LATEST NIGHTLY BUILD OF THE TITANIUM SDK. I would consider this a critical bug. This feature has always worked before. The zip file is 2.2MB because of default iOS graphics. I have also included a simulator screenshot of the settings app screen when the titanium app is using 3.1.3.GA and 3.2.0.v20131204220843 the file names denotes which version you are viewing.

Attachments

FileDateSize
iosbug.zip2013-12-05T23:42:45.000+00002159752
TITANIUM-SDK-3.1.3.GA-SETTINGS-APP-SCREEN.png2013-12-05T23:42:45.000+000072373
TITANIUM-SDK-3.2.0.v20131204220843-SETTINGS-APP-SCREEN.png2013-12-05T23:42:45.000+000074169

Comments

  1. Sabil Rahim 2013-12-06

    confirmed this is a regression in CLI.
  2. Andrew McElroy 2013-12-06

    I have learned a bit more about this bug. It turns out that the on the simulator when you show the content of iosbug.app, Settings.bundle does not exist on the Ti 3.2.x build of the app. Additionally, the Xcode generated project (Ti 3.2.x) has a Settings.bundle at the xcodeproj root level. It appears that Settings.bundle is being placed in the wrong location and not being symlinked. On 3.1.3.GA behavior: inside iosbug.app there exists a Settings.bundle file and inside that file Root.plist is symlinked back to iosbug/platform/iphone/Settings.bundle/Root.plist Also there is no Settings.bundle file at the root of the xcodeproj file. I'm not sure where in the build script it symlinks over the /platform/iphone folder to iosbug.app/ but that is very likely the issue. Still looking into it. Thank you so much for moving on this quickly.
  3. Andrew McElroy 2013-12-06

    ***Fixed.*** When you ( I'm talking you to Chris ) decided to kill all the symlinks, the directory platform/iphone/ is completely not copied into the xcodeAppDir. :-) _build.js start at line 2748: https://gist.github.com/Sophrinix/242455529d66bff0cc5e I added: // last let's move that Settings.bundle into the xcodeAppDir, where it belongs. //symlinkResources(path.join(this.projectDir, 'platform', 'iphone'), this.xcodeAppDir, false); function (cb) { copyDir.call(this, { src: path.join(this.projectDir, 'platform', 'iphone'), dest: this.xcodeAppDir }, cb); }, to your tasks array. This fixes the issue (from the end user vantage point). Settings.bundle is however now being copied twice. Once correctly, as per my change, and once incorrectly as per something going on in your code. I've already signed a CLA, so this should be good to go. my complete _build.js file can be see in this gist: https://gist.github.com/Sophrinix/7819604 I suspect that there might be a few other misc/ less obvious things that are not being placed in the correct spots, but were handled thanks to symlinking.
  4. Andrew McElroy 2013-12-06

    One more (unrelated) note. I really like the refactor between 3.1.3 and 3.2.x on that _build.js file. refactoring to the iOSBuilder object makes for much more readable code. As always, keep up the good work. I hope to get some training coverage/documentation on the build tools soon, they are really critical to understanding Titanium's internals.
  5. Chris Barber 2013-12-06

    [~sophrinix] I know exactly what the problem is. I made this behavior change a month ago to be in parity with Android, but wouldn't you know it, iOS does something completely different than Android. I will restore the original functionality tomorrow.
  6. Chris Barber 2013-12-06

    Master pull request: https://github.com/appcelerator/titanium_mobile/pull/5080 3.2.x pull request: https://github.com/appcelerator/titanium_mobile/pull/5081
  7. Priya Agarwal 2013-12-09

    Verified with test Environment: Appcelerator Studio: 3.2.0.201312081316 SDK:3.2.0.v20131208204843 alloy: 1.3.0-beta acs: 1.0.10 npm: 1.3.2 titanium: 3.2.0-beta titanium-code-processor: 1.1.0-beta Xcode:5.0.2 OS: Mac OSX 10.9 Device: iphone5(V7.0.4),iphone simulator(v7.0.3) Closing as fixed and verified. Observe that expected app(iosbug) visible in the setting of the device and simulator.
  8. Priya Agarwal 2013-12-09

    Also verified with iPad simulator(v7.0.3) and ipad3(v 7.0)

JSON Source