GitHub Issue | n/a |
Type | Bug |
Priority | Critical |
Status | Closed |
Resolution | Fixed |
Resolution Date | 2013-12-06T19:27:32.000+0000 |
Affected Version/s | n/a |
Fix Version/s | 2013 Sprint 25, 2013 Sprint 25 Core, Release 3.2.0, Release 3.3.0 |
Components | CLI, iOS |
Labels | QA-Fail, bug, ios, qe-testadded, regression, settings.bundle |
Reporter | Andrew McElroy |
Assignee | Chris Barber |
Created | 2013-12-05T23:42:45.000+0000 |
Updated | 2014-03-11T11:49:13.000+0000 |
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.
confirmed this is a regression in CLI.
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.
***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.
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.
[~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.
Master pull request: https://github.com/appcelerator/titanium_mobile/pull/5080 3.2.x pull request: https://github.com/appcelerator/titanium_mobile/pull/5081
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.
Also verified with iPad simulator(v7.0.3) and ipad3(v 7.0)