Chris, thanks for tracking that down! I wasn't familiar with the app.js issue but I have come across the issue with missing modules. I usually end up with something like this at the top of my app.js:
// Add these so Appcelerator doesn't strip out these modules
Ti.Media.showCamera; Ti.UI.createActivityIndicator; Ti.UI.createAlertDialog; Ti.UI.createButton; Ti.UI.createButtonBar; Ti.UI.createImageView; Ti.UI.createLabel; Ti.UI.createOptionDialog; Ti.UI.createPicker; Ti.UI.createScrollableView; Ti.UI.createScrollView; Ti.UI.createSearchBar; Ti.UI.createSplitView; Ti.UI.createSwitch; Ti.UI.createTab; Ti.UI.createTabGroup; Ti.UI.createTabbedBar; Ti.UI.createTableView; Ti.UI.createTableViewRow; Ti.UI.createTableViewSection; Ti.UI.createTextArea; Ti.UI.createTextField; Ti.UI.createToolbar; Ti.UI.createView; Ti.UI.createWebView; Ti.UI.createWindow;
Ti.UI.iPhone.createNavigationGroup; Ti.Map.createView; Ti.Map.createAnnotation; Ti.UI.createPicker; Ti.UI.iOS.createToolbar; Ti.UI.iOS.createTabbedBar;
I'm a bit concerned about overloading the generated app.js with every module that might possibly be used within the app as it prevents Titanium from removing unused modules, but of course I also don't want everyone to rediscover the problem you did.
Perhaps it would be best to list out all of them in app.js with a comment indicating that unused modules can be removed from the list to reduce the application size before deployment. Think that would help?
Matt