diff --git "a/database/tawos/deep/TIMOB_deep-se.csv" "b/database/tawos/deep/TIMOB_deep-se.csv" new file mode 100644--- /dev/null +++ "b/database/tawos/deep/TIMOB_deep-se.csv" @@ -0,0 +1,3916 @@ +"issuekey","created","title","description","storypoint" +"TIMOB-8075","03/29/2011 17:48:47","Android: While debugger is running, cannot back out and go back into an app","If you debug an Android app, you can't back out of that app and go back into it. It hangs then at the splash screen, and shows both ""Bad Socket"" and ""Connection Refused"" errors in logcat. Logcat: [https://gist.github.com/43b1285ca8743eaaf672] Screencast: [http://screencast.com/t/m0C2c9Ojxo] ",2 +"TIMOB-339","04/15/2011 03:27:30","Android: Missing Icons","Android images need to be copied for some icons. They're not being exposed via android.R. DONE, Refresh, and a few others. UPDATE! What needs to happen is we need to expose whatever system icons via Titanium.Android.R.",3 +"TIMOB-559","04/15/2011 03:31:55","Android: Appversion never taken from tiapp.xml","I found this bug while I created new release for Android Market. appversion is never changed from tiapp.xml file (version tag). I send you patch to correct this, to apply on 1.0.0/android/android.py",3 +"TIMOB-630","04/15/2011 03:33:13","Android: TabGroup stops window being re-shown","start with a standalone window that fires an event, a listener in app.js then closes the window and opens a tabgroup (think logon window) - all good. the tabgroup fires an event which is listened to in app.js which closes the tabgroup and opens the initial window. This fails - the tabgroup goes away, logging shows the original window is being re-built, but it is never shown. It is shown in iPhone. Pseudo code for app.js... {code} var loginWin; var logoutGroup; function makeLoginWindow() { loginWin = window with single button firing LOGIN event; loginWin.open(); } function makeLogoutWindow() { logoutGroup = tabGroup containing one window with... single button firing LOGOUT event; logoutGroup.close(); } makeLoginWindow() addEventListener(LOGIN) { loginWin.close(); makeLogoutWindow(); } addEventListener(LOGOUT) { logoutGroup.close(); makeLoginWindow(); } {code} * Should this work? * Should I raise this sort of thing as a query or ask in the forums in future? ",0 +"TIMOB-664","04/15/2011 03:33:59","Android: Support custom annotation views on maps","{html}

from this premium support ticket:

http://helpdesk.appcelerator.net/tickets/1661

{html}",0 +"TIMOB-933","04/15/2011 03:39:35","iOS: Support image view aspect fill"," See https://developer.appcelerator.com/question/23931/imageview-scaling-mode",0 +"TIMOB-1070","04/15/2011 03:43:09","iOS: Numeric and phone keypads have no return key and can't be easily dismissed on iPhone","{html}

numeric and phone keypads have no return key

see discussion here:

http://developer.appcelerator.com/question/30821/add-a-done-button-...

possible solution suggested here:

http://stackoverflow.com/questions/584538/how-to-show-button-done-o...

{html}",0 +"TIMOB-1097","04/15/2011 03:43:59","Android: Titlebar is displayed when fullscreen splash screen is used.","{html}

There are a couple of possibly related problems with trying to run a fullscreen application in Android. The first is with the splash screen. There should be a way to have the splash screen display on the whole screen, but this is not the case despite the tiapp.xml configuration in this screenshot which shows both the emulator and the code:

http://skitch.com/kwhinnery/dgmps/fullscreen

Also, once the app launches, you should be able to open a window fullscreen with no title - this would be necessary for an app to go totally fullscreen:

http://skitch.com/kwhinnery/dgmp7/fullscreen

{html} h5. Test Code {code} in theme.xml {code} h5. Expected behavior The splash screen should be displayed full screen with no title bar h5. Actual behavior The title bar, is displayed. During build the theme.xml gets reset, causing the title bar to be displayed. h5. Work-around There is a workaround posted in community Q and A. out one way to resolve this problem. 1) Create folders \platform\android\res\values (see KitchenSink folder structure) 2) Put in folder ""values"" the file theme.xml modifyed (i.e. ) ",2 +"TIMOB-1242","04/15/2011 03:47:30","iOS: Drag and drop map pin annotations","{html}

MKAnnotationView has support for allowing a map annotation to be draggable (in iOS 4).
Boolean property on Annotation object - draggable:true/false
Add associated Events - e.g. DragStart & DragEnd etc.

{html}",5 +"TIMOB-1243","04/15/2011 03:47:32","iOS: Label background disappears in tableRow on selection","{html}

Label in a tableRow has a background color set.
On tableRow selection the background of the Label disappears regardless of the label colour used.

See two states in this image

On deselection the background color of the Label waits for the tableRow selection to fade out completely before redisplaying.

I'm sure this is just a z sorting issue but it looks like the tableRow selection is overriding any text label backgrounds.

{html}",0 +"TIMOB-1244","04/15/2011 03:47:33","Audio Seeking and Buffering","{html}

I would like to have the possibility to control the seek function with the media comp,
i also would be glad if i could play with ""buffer"" option to stream better my music.

thank you in advance,
my compliments to the great appcelerator team.
Andrea

{html}",0 +"TIMOB-1356","04/15/2011 03:50:19","Android: setUrl in AudioPlayer not working","Can't dynamically change the url of the audio player. The streamer.url variable does change, but it seems as if the url is cached somewhere, such that if you play again, the same audio will play (not the updated url). Here's the proof/test code of app.'s to show this bug. http://pastie.org/1051158"">http://pastie.org/1051158",0 +"TIMOB-1444","04/15/2011 03:53:01","iPad - OptionsDialog - fails to display last option / height bug","{html}

Just created a new two button optiondialog on an ipad webview.

when it is shown on the page only the first of the options is shown

var dialog = Titanium.UI.createOptionDialog({

      title: 'you have options',      options: ['option 1','option 2'],      destructive:0,      cancel:1  });  

dialog.show();

if you place a third option the resulting optiondialog has 1 and a half buttons,

var dialog = Titanium.UI.createOptionDialog({

      title: 'you have options',      options: ['Option 1','Option 2',''],      destructive:0,      cancel:1  });  

dialog.show();

images attached for your convenience

{html}",1 +"TIMOB-1476","04/15/2011 03:53:53","iOS: add support for textAlign on button","{html}

add support to be able to align text using textAlign property for a button

{html}",0 +"TIMOB-1480","04/15/2011 03:53:59","Android: Using _ For Assets in Path Prevents Loading","If you try and include a .js, or .css file from a path that starts with _ (e.g. _shared) it fails to load. Remove the underscore and it works. Documenting, it may be a WebKit issue.",1 +"TIMOB-1485","04/15/2011 03:54:04","TiAPI: Unable to set offset when using custom pins on mapview","{html}

So ticket #1197 added support for custom pin images on mapviews, which works awesome. However, there's currently no way to set the centerOffset which means that the top of the image is always aligned with the point on the map. That might work well for some custom pin images, but if I actually use an image of a pin for the custom pin image (imagine that :p) then the offset is wrong. If I zoom in on it I see the head of the pin is attached to the point on the map rather than the base of the pin (which is what should be).

The solution is pretty simple, if http://stackoverflow.com/questions/1185611/mkpinannotationview-are-... is correct: you just need to allow us to set MKAnnotationView.centerOffset when using a custom image. Could this be included in 1.5.0?

(I'm a subscriber)

{html}",0 +"TIMOB-1496","04/15/2011 03:54:22","iOS: Photo viewer","{html}

Titanium could really use a photo viewer built-in.

I have a lot of projects that needs a photo viewer, right now I use a webview with a html/css photoviewer.

(I know you have the coverflow thingy, but it's not very usable for photographs).

Something like the Three20 photo viewer would be awesome: http://github.com/facebook/three20

It's open source, so maybe you can just use that?

{html}",0 +"TIMOB-1514","04/15/2011 03:54:52","iOS: add textAlign and verticalAlign support for buttons","{html}

This was implemented for android as ticket 1479.

support on butons for:

Titanium.UI.TEXT_ALIGNMENT_LEFT
Titanium.UI.TEXT_ALIGNMENT_CENTER
Titanium.UI.TEXT_ALIGNMENT_RIGHT
Titanium.UI.TEXT_VERTICAL_ALIGNMENT_TOP
Titanium.UI.TEXT_VERTICAL_ALIGNMENT_CENTER
Titanium.UI.TEXT_VERTICAL_ALIGNMENT_BOTTOM

there is a test casein kitchenSink at

{html}",0 +"TIMOB-1552","04/15/2011 03:55:50","TiAPI: tableViewRow subtitle","{html}

Support for the UITableViewRow initWithStyle:UITableViewCellStyleSubtitle by adding a property named ""subtitle"" to the tableView object.

This would make it easy to create the default title + subtitle tables many apps use.

{html}",0 +"TIMOB-1565","04/15/2011 03:56:11","Android: Ti.Geolocation doesn't work from app.js","{html}

On android (at least the emulator), geolocation services will always appear false when called from app.js.

This
Ti.API.warn('Ti.Geolocation.locationServicesEnabled:'+Titanium.Geolocation.locationServicesEnabled); always displays 'false' from app.js, while displaying 'true' from an open window.

{html}",1 +"TIMOB-1573","04/15/2011 03:56:23","Android Market Licensing Service","h5. Implement Android Market Licensing Service, which is available to all paid apps on the Android Market. http://developer.android.com/guide/google/play/licensing/index.html",0 +"TIMOB-1682","04/15/2011 03:59:18","Feature: interactive console","It would be great to have a javascript-based interactive console to your running app along the lines of http://probablyinteractive.com/2010/8/20/ios-interactive-console.html.",1 +"TIMOB-1722","04/15/2011 04:00:30","Android: Implement Dashboard","{html}

iPhone added a dashboard control. We need to support it.

{html}",0 +"TIMOB-1775","04/15/2011 04:01:56","Ti.UI.View center property not implemented on Android, no warning in documentation","{html}

Docs for Ti.UI.View and its fellow view types lists a center property:

https://developer.appcelerator.com/apidoc/mobile/latest/Titanium.UI...

 center   object      a dictionary with properties x and y to indicate the center of the views position relative to the parent view 

This property is very useful for positioning things under, over, or next to other views, however it appears to be unimplemented on Android.

 /*  * This code demonstrates the missing center property on Android...  * on iPhone shows: ""160, 230""  * on Android shows: ""wtf? null""  */  var window = Titanium.UI.createWindow({ }); var button = Titanium.UI.createButton({     title: ""Where am I?"",     width: 200,     height: 50 }); button.addEventListener('click', function() {     var center = button.center;     var msg;     Ti.API.info('center: ' + center);     if (center) {         Ti.API.info('center.x: ' + center.x);         Ti.API.info('center.y: ' + center.y);         msg = center.x + ', ' + center.y;     } else {         msg = 'wtf? ' + center;     }     button.title = msg; }); window.add(button); window.open(); 

Changing it to check an actual 'View' object makes no difference; View, Button, and Label have all been tested, and there's no sign of a 'center' property implementation in the titanium_mobile/android source tree.

{html}",0 +"TIMOB-1793","04/15/2011 04:02:34","Android: Allow OptionDialog to not Have Radiobuttons","{html}

See Helpdesk 42631 basically provide a configuration option that allows hiding the radiobuttons that appear on the option dialog if possible.

{html}",0 +"TIMOB-1800","04/15/2011 04:02:44","iOS: Analytics causes app crash when no network is available - iphone","{html}

A customer reports that if analytics is enabled and no network (cell or wifi) causes a crash. I cannot reproduce this but at the request of the customer I am logging this ticket so we can investigate further.

{html}",2 +"TIMOB-1847","04/15/2011 04:03:49","iOS: Clear button does not show when paddingRight is used in text field","{html}

Code below shows this. Happens on iPhone and iPad:

var win = Ti.UI.currentWindow;
var input1 = Ti.UI.createTextField({

  hintText:'e.g. 30000  ',  height:35,  width:120,  borderColor:'#000',  

// COMMENT OUT THIS LINE AND THE CLEAR BUTTON WILL SHOW

  paddingRight:5,  

//END

  textAlign: 'right',  font:{fontSize:15},  color:'#000',  returnKeyType:Titanium.UI.RETURNKEY_DONE,  clearButtonMode:Titanium.UI.INPUT_BUTTONMODE_ONFOCUS,  keyboardType:Titanium.UI.KEYBOARD_NUMBERS_PUNCTUATION  

}); win.add(input1);

{html}",1 +"TIMOB-1872","04/15/2011 04:04:26","Android: Fix AVD naming scheme","{html}

The current script for naming AVDs is based on the download order of the emulators. For instance if you download API 4 and API 8 and run the API 8 emulator. Then later you download the Google API emulator 4. It will launch the API 8 emulator.

If possible, we should also try and detect that the problem exists in their environment and fix the AVDs name to the new solution based on the contents of the AVD configuration file.

{html}",2 +"TIMOB-1902","04/15/2011 04:05:07","iOS: Scrollview can scroll to much on ipad when keyboard is up","{html}

This can be recreated in KS Controls>Text Field>Border Style.

{html}",1 +"TIMOB-2017","04/15/2011 04:08:13","Android: WebView No Longer Fires Click Event","{html}

Bill triaged the problem.

In April you added this code to disallow registering for touch on the WebView:

http://github.com/appcelerator/titanium_mobile/commit/d47e4e06456d0...

I'm going to mark this as a regression since I didn't comment on the commit well enough to know if I disabled it on purpose. Will need to check interference with clickable items in a webview and scrolling.

{html}",1 +"TIMOB-2099","04/15/2011 04:10:25","Android: border properties broken for Label","{html}

Adding ""border:1, borderColor:'black'"" to a label works fine on 1.4.1 under iOS, but not on 1.4.2 under Android. Under android, the entire label is blacked out, instead of a border being placed around the label.

{html}",1 +"TIMOB-2122","04/15/2011 04:11:06","Android: Implement Video Recording","{html}{html}",3 +"TIMOB-2126","04/15/2011 04:11:12","Android: Support Scroll Event on Tableview","{html}

Should fire the standard event.

{html} ",0 +"TIMOB-2209","04/15/2011 04:13:36","Android: Re-enable incremental build","Before all of our new changes for stylesheet and RA.java code generation we knew when new Java code was generated so we could skip the javac and dex parts of the APK building process. We need to go back through and make sure to only dex/javac when necessary.",3 +"TIMOB-2363","04/15/2011 04:17:47","Android: Strip debugging symbols from JARs when building for production","It might be a good space saving measure to strip debugging symbols from our JARs when building apps for production mode. The biggest implication this has is not having line numbers in stack traces from production apps.",3 +"TIMOB-2484","04/15/2011 04:20:59","iOS: Httpclient ssl problem without different port","{html}

If I put a port 443 or a different one the connection does not work

{html}",1 +"TIMOB-2527","04/15/2011 04:21:58","Android: App launch/build problem if ampersand in home folder name (windows)","http://developer.appcelerator.com/question/86611/ampersand-in-user-path-prevents-creation-of-avd-windows-vista The user folder (C:\users...) for my profile contains an ampersand (C:\users\tom&jerry\ - real names hidden). This is preventing Titanium from creating the Android AVDs needed to test apps, giving the following error: [TRACE] Error: 'C:\Users\tom' is not recognized as a valid sdcard value. It looks like the command that creates the avd is stripping away part of the string when it tries to create an avd. I've manage to track down a function 'create_avd' in 1.4.0/android/builder.py which I think may be the culprit, but I'm not sure where to go from there. The sdcard has been created, so the problem must be after that point. There are a multitude of methods for renaming the user folder, none of which are straight forward (registry edits, etc.). I'm hoping someone can tell me a way of making Titanium function with this, albeit rare and idiotic, usage case. Does anyone have any suggestions?",5 +"TIMOB-2600","04/15/2011 04:24:05","iOS: invalid method (createTabGroup) passed to UIModule at app.js","{html}

When i build for simulator everything works as expected, but when i build for device it installs onto the phone, then when i open the application the errors below appear and the app locks on the splash screen. I've really tried everything and it looks like a couple of other people have experienced similar issues:

http://developer.appcelerator.com/question/85671/invalid-method-cre...
http://developer.appcelerator.com/question/45181/test-working-in-ip...

The errors are:

[WARN] attempted to load: TiUITabGroupProxy [ERROR] Script Error = invalid method (createTabGroup) passed to UIModule at app.js (line 1). [ERROR] application received error: invalid method (createTabGroup) passed to UIModule at app.js (line 1) [DEBUG] application booted in 275.932014 ms

This issue has just started and i'm struggling to move past it, i've done the following and it's still causing the issue:

I've attached my app.js which seems to be in order, i also created a new project and replaced the app.js in that project and it seemed to run ok, but i cannot find any reason why my app.js wouldn't run...

please help, i've spent 2 whole days trying things now!!!!!

{html}",1 +"TIMOB-2646","04/15/2011 04:25:45","Android: Support passing customized launch params to Android emulator","Developers would like to have the ability to add custom launch parameters to the android emulator such as setting a HTTP proxy. Here is one example of the parameters they would like to be able to include: {code} # start the emulator emulator_cmd = [ self.sdk.get_emulator(), '-avd', avd_name, '-port', '5560', '-sdcard', self.sdcard, '-logcat', ""'*:d *'"", '-no-boot-anim', # '-http-proxy', # 'http://127.0.0.1:8888', '-partition-size', '128' # in between nexusone and droid ] {code} Reference HD Tickets: http://appc.me/c/APP-364571 http://appc.me/c/EPH-39417-198",3 +"TIMOB-2653","04/15/2011 04:25:57","Android: Complex/autogenerated remote image URLs fail, whereas simple URLs succeed","h2. Problem A complex url to an image, used in an imageView do not render. The issues is not present in 1.4.3 (21Nov). h2. Test case The following code will cause an exception: {code:lang=javascript|title=app.js} var window = Titanium.UI.createWindow({ backgroundColor:'red' }); var graph = Titanium.UI.createImageView({ top: 20, image: 'http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15,12,10,26&chdl=xyz|abc|def|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150' // image: 'http://developer.appcelerator.com/assets/img/sprites.png' }); window.add(graph); window.open(); {code} When the commented/uncommented image lines are toggled, the app works without a problem. h2. Logs {code:lang=none|title=logcat} 449 AndroidRuntime D >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<< 449 AndroidRuntime D CheckJNI is ON 449 AndroidRuntime D --- registering native functions --- 60 ActivityManager I Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.appcelerator.testing10/.Testing10Activity } 60 ActivityManager I Start proc com.appcelerator.testing10 for activity com.appcelerator.testing10/.Testing10Activity: pid=455 uid=10041 gids={1015, 3003} 449 AndroidRuntime D Shutting down VM 455 TiApplication I (main) [0,0] checkpoint, app created. 455 TiApplication I (main) [402,402] Titanium 1.8.1 (2012/01/27 17:31 a24502a) 455 TiFastDev D (main) [110,512] Enabling Fastdev on port 51023 455 TiFastDev D (main) [8,520] sent tokens successfully 455 TiFastDev D (main) [1,521] Fastdev session handshake succesful. 455 TiApplication I (main) [4,525] Titanium Javascript runtime: v8 455 TiApplication W (main) [47,572] activity stack is emtpy, unable to get current activity 455 TiRootActivity I (main) [0,0] checkpoint, on root activity create, savedInstanceState: null 455 TiApplication W (main) [116,116] activity stack is emtpy, unable to get current activity 455 TiApplication W (main) [1,117] activity stack is emtpy, unable to get current activity 455 TiApplication W (main) [0,117] activity stack is emtpy, unable to get current activity 60 NotificationService W Object died trying to hide notification android.app.ITransientNotification$Stub$Proxy@4500b128 in package com.appcelerator.testing10 60 ActivityManager W setProcessForeground called on unknown pid: 427 455 TiApplication E (KrollRuntimeThread) [1083,1200] APP PROXY: ti.modules.titanium.app.AppModule@44fccf38 455 TiAssetHelper D Fetching ""app.js"" with Fastdev... 455 TiUIImageView E (main) [524,1724] URISyntaxException for url http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15,12,10,26&chdl=xyz|abc |def|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 455 TiUIImageView E java.net.URISyntaxException: Illegal character in query at index 122: http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15, 12,10,26&chdl=xyz|abc|def|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 455 TiUIImageView E at java.net.URI$Helper.validateQuery(URI.java:458) 455 TiUIImageView E at java.net.URI$Helper.parseURI(URI.java:360) 455 TiUIImageView E at java.net.URI$Helper.access$100(URI.java:302) 455 TiUIImageView E at java.net.URI.(URI.java:87) 455 TiUIImageView E at ti.modules.titanium.ui.widget.TiUIImageView.setImage(TiUIImageView.java:715) 455 TiUIImageView E at ti.modules.titanium.ui.widget.TiUIImageView.processProperties(TiUIImageView.java:849) 455 TiUIImageView E at org.appcelerator.kroll.KrollProxy.setModelListener(KrollProxy.java:641) 455 TiUIImageView E at org.appcelerator.titanium.proxy.TiViewProxy.realizeViews(TiViewProxy.java:464) 455 TiUIImageView E at org.appcelerator.titanium.proxy.TiViewProxy.handleGetView(TiViewProxy.java:456) 455 TiUIImageView E at org.appcelerator.titanium.proxy.TiViewProxy.getOrCreateView(TiViewProxy.java:434) 455 TiUIImageView E at org.appcelerator.titanium.proxy.TiViewProxy.handleAdd(TiViewProxy.java:538) 455 TiUIImageView E at org.appcelerator.titanium.proxy.TiViewProxy.handleMessage(TiViewProxy.java:271) 455 TiUIImageView E at android.os.Handler.dispatchMessage(Handler.java:95) 455 TiUIImageView E at org.appcelerator.kroll.common.TiMessenger.dispatchMessage(TiMessenger.java:318) 455 TiUIImageView E at org.appcelerator.kroll.common.TiMessenger.dispatchPendingMessages(TiMessenger.java:303) 455 TiUIImageView E at org.appcelerator.kroll.common.TiMessenger$2.getResult(TiMessenger.java:188) 455 TiUIImageView E at org.appcelerator.kroll.common.TiMessenger.sendBlockingMessage(TiMessenger.java:215) 455 TiUIImageView E at org.appcelerator.kroll.common.TiMessenger.sendBlockingRuntimeMessage(TiMessenger.java:143) 455 TiUIImageView E at org.appcelerator.kroll.KrollProxy.fireSyncEvent(KrollProxy.java:417) 455 TiUIImageView E at org.appcelerator.titanium.TiBaseActivity.onCreate(TiBaseActivity.java:344) 455 TiUIImageView E at org.appcelerator.titanium.TiLaunchActivity.onCreate(TiLaunchActivity.java:117) 455 TiUIImageView E at org.appcelerator.titanium.TiRootActivity.onCreate(TiRootActivity.java:46) 455 TiUIImageView E at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 455 TiUIImageView E at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 455 TiUIImageView E at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 455 TiUIImageView E at android.app.ActivityThread.access$2300(ActivityThread.java:125) 455 TiUIImageView E at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 455 TiUIImageView E at android.os.Handler.dispatchMessage(Handler.java:99) 455 TiUIImageView E at android.os.Looper.loop(Looper.java:123) 455 TiUIImageView E at android.app.ActivityThread.main(ActivityThread.java:4627) 455 TiUIImageView E at java.lang.reflect.Method.invokeNative(Native Method) 455 TiUIImageView E at java.lang.reflect.Method.invoke(Method.java:521) 455 TiUIImageView E at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 455 TiUIImageView E at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 455 TiUIImageView E at dalvik.system.NativeStart.main(Native Method) 455 TiDrawableReference E (main) [123,1847] Problem opening stream with url http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15,12,10,26&chdl=xy z|abc|def|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150: http://chart.apis.google.com/chart?chco=666666,555555,444444,3333 33,222222&cht=p&chd=t:36,15,12,10,26&chdl=xyz|abc|def|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 455 TiDrawableReference E java.io.FileNotFoundException: http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15,12,10,26&chdl=xyz|abc|def|ghi|jkl&a mp;chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 455 TiDrawableReference E at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:1162) 455 TiDrawableReference E at java.net.URL.openStream(URL.java:653) 455 TiDrawableReference E at org.appcelerator.titanium.util.TiFileHelper.openInputStream(TiFileHelper.java:172) 455 TiDrawableReference E at org.appcelerator.titanium.view.TiDrawableReference.getInputStream(TiDrawableReference.java:671) 455 TiDrawableReference E at org.appcelerator.titanium.view.TiDrawableReference.peekBounds(TiDrawableReference.java:628) 455 TiDrawableReference E at org.appcelerator.titanium.view.TiDrawableReference.getBitmap(TiDrawableReference.java:461) 455 TiDrawableReference E at ti.modules.titanium.ui.widget.TiUIImageView.setImage(TiUIImageView.java:724) 455 TiDrawableReference E at ti.modules.titanium.ui.widget.TiUIImageView.processProperties(TiUIImageView.java:849) 455 TiDrawableReference E at org.appcelerator.kroll.KrollProxy.setModelListener(KrollProxy.java:641) 455 TiDrawableReference E at org.appcelerator.titanium.proxy.TiViewProxy.realizeViews(TiViewProxy.java:464) 455 TiDrawableReference E at org.appcelerator.titanium.proxy.TiViewProxy.handleGetView(TiViewProxy.java:456) 455 TiDrawableReference E at org.appcelerator.titanium.proxy.TiViewProxy.getOrCreateView(TiViewProxy.java:434) 455 TiDrawableReference E at org.appcelerator.titanium.proxy.TiViewProxy.handleAdd(TiViewProxy.java:538) 455 TiDrawableReference E at org.appcelerator.titanium.proxy.TiViewProxy.handleMessage(TiViewProxy.java:271) 455 TiDrawableReference E at android.os.Handler.dispatchMessage(Handler.java:95) 455 TiDrawableReference E at org.appcelerator.kroll.common.TiMessenger.dispatchMessage(TiMessenger.java:318) 455 TiDrawableReference E at org.appcelerator.kroll.common.TiMessenger.dispatchPendingMessages(TiMessenger.java:303) 455 TiDrawableReference E at org.appcelerator.kroll.common.TiMessenger$2.getResult(TiMessenger.java:188) 455 TiDrawableReference E at org.appcelerator.kroll.common.TiMessenger.sendBlockingMessage(TiMessenger.java:215) 455 TiDrawableReference E at org.appcelerator.kroll.common.TiMessenger.sendBlockingRuntimeMessage(TiMessenger.java:143) 455 TiDrawableReference E at org.appcelerator.kroll.KrollProxy.fireSyncEvent(KrollProxy.java:417) 455 TiDrawableReference E at org.appcelerator.titanium.TiBaseActivity.onCreate(TiBaseActivity.java:344) 455 TiDrawableReference E at org.appcelerator.titanium.TiLaunchActivity.onCreate(TiLaunchActivity.java:117) 455 TiDrawableReference E at org.appcelerator.titanium.TiRootActivity.onCreate(TiRootActivity.java:46) 455 TiDrawableReference E at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 455 TiDrawableReference E at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 455 TiDrawableReference E at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 455 TiDrawableReference E at android.app.ActivityThread.access$2300(ActivityThread.java:125) 455 TiDrawableReference E at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 455 TiDrawableReference E at android.os.Handler.dispatchMessage(Handler.java:99) 455 TiDrawableReference E at android.os.Looper.loop(Looper.java:123) 455 TiDrawableReference E at android.app.ActivityThread.main(ActivityThread.java:4627) 455 TiDrawableReference E at java.lang.reflect.Method.invokeNative(Native Method) 455 TiDrawableReference E at java.lang.reflect.Method.invoke(Method.java:521) 455 TiDrawableReference E at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 455 TiDrawableReference E at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 455 TiDrawableReference E at dalvik.system.NativeStart.main(Native Method) 455 TiDrawableReference W (main) [54,1901] Could not open stream for drawable, therefore bounds checking could not be completed 455 TiDrawableReference W (main) [5,1906] Bitmap bounds could not be determined. If bitmap is loaded, it won't be scaled. 455 TiDrawableReference E (main) [95,2001] Problem opening stream with url http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15,12,10,26&chdl=xyz |abc|def|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150: http://chart.apis.google.com/chart?chco=666666,555555,444444,33333 3,222222&cht=p&chd=t:36,15,12,10,26&chdl=xyz|abc|def|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 455 TiDrawableReference E java.io.FileNotFoundException: http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15,12,10,26&chdl=xyz|abc|def|ghi|jkl&a mp;chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 455 TiDrawableReference E at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:1162) 455 TiDrawableReference E at java.net.URL.openStream(URL.java:653) 455 TiDrawableReference E at org.appcelerator.titanium.util.TiFileHelper.openInputStream(TiFileHelper.java:172) 455 TiDrawableReference E at org.appcelerator.titanium.view.TiDrawableReference.getInputStream(TiDrawableReference.java:671) 455 TiDrawableReference E at org.appcelerator.titanium.view.TiDrawableReference.getBitmap(TiDrawableReference.java:238) 455 TiDrawableReference E at org.appcelerator.titanium.view.TiDrawableReference.getBitmap(TiDrawableReference.java:467) 455 TiDrawableReference E at ti.modules.titanium.ui.widget.TiUIImageView.setImage(TiUIImageView.java:724) 455 TiDrawableReference E at ti.modules.titanium.ui.widget.TiUIImageView.processProperties(TiUIImageView.java:849) 455 TiDrawableReference E at org.appcelerator.kroll.KrollProxy.setModelListener(KrollProxy.java:641) 455 TiDrawableReference E at org.appcelerator.titanium.proxy.TiViewProxy.realizeViews(TiViewProxy.java:464) 455 TiDrawableReference E at org.appcelerator.titanium.proxy.TiViewProxy.handleGetView(TiViewProxy.java:456) 455 TiDrawableReference E at org.appcelerator.titanium.proxy.TiViewProxy.getOrCreateView(TiViewProxy.java:434) 455 TiDrawableReference E at org.appcelerator.titanium.proxy.TiViewProxy.handleAdd(TiViewProxy.java:538) 455 TiDrawableReference E at org.appcelerator.titanium.proxy.TiViewProxy.handleMessage(TiViewProxy.java:271) 455 TiDrawableReference E at android.os.Handler.dispatchMessage(Handler.java:95) 455 TiDrawableReference E at org.appcelerator.kroll.common.TiMessenger.dispatchMessage(TiMessenger.java:318) 455 TiDrawableReference E at org.appcelerator.kroll.common.TiMessenger.dispatchPendingMessages(TiMessenger.java:303) 455 TiDrawableReference E at org.appcelerator.kroll.common.TiMessenger$2.getResult(TiMessenger.java:188) 455 TiDrawableReference E at org.appcelerator.kroll.common.TiMessenger.sendBlockingMessage(TiMessenger.java:215) 455 TiDrawableReference E at org.appcelerator.kroll.common.TiMessenger.sendBlockingRuntimeMessage(TiMessenger.java:143) 455 TiDrawableReference E at org.appcelerator.kroll.KrollProxy.fireSyncEvent(KrollProxy.java:417) 455 TiDrawableReference E at org.appcelerator.titanium.TiBaseActivity.onCreate(TiBaseActivity.java:344) 455 TiDrawableReference E at org.appcelerator.titanium.TiLaunchActivity.onCreate(TiLaunchActivity.java:117) 455 TiDrawableReference E at org.appcelerator.titanium.TiRootActivity.onCreate(TiRootActivity.java:46) 455 TiDrawableReference E at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 455 TiDrawableReference E at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 455 TiDrawableReference E at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 455 TiDrawableReference E at android.app.ActivityThread.access$2300(ActivityThread.java:125) 455 TiDrawableReference E at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 455 TiDrawableReference E at android.os.Handler.dispatchMessage(Handler.java:99) 455 TiDrawableReference E at android.os.Looper.loop(Looper.java:123) 455 TiDrawableReference E at android.app.ActivityThread.main(ActivityThread.java:4627) 455 TiDrawableReference E at java.lang.reflect.Method.invokeNative(Native Method) 455 TiDrawableReference E at java.lang.reflect.Method.invoke(Method.java:521) 455 TiDrawableReference E at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 455 TiDrawableReference E at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 455 TiDrawableReference E at dalvik.system.NativeStart.main(Native Method) 455 TiDrawableReference W (main) [12,2013] Could not open stream to get bitmap 455 TiRootActivity I (main) [0,0] checkpoint, on root activity resume. activity = com.appcelerator.testing10.Testing10Activity@44f7a570 60 ActivityManager I Displayed activity com.appcelerator.testing10/.Testing10Activity: 3686 ms (total 3686 ms) 455 TiUIImageView D (main) [398,398] Retrying bitmap decode: 1/5 455 TiUIImageView E (main) [1,399] URISyntaxException for url http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15,12,10,26&chdl=xyz|abc|de f|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 455 TiUIImageView E java.net.URISyntaxException: Illegal character in query at index 122: http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15, 12,10,26&chdl=xyz|abc|def|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 455 TiUIImageView E at java.net.URI$Helper.validateQuery(URI.java:458) 455 TiUIImageView E at java.net.URI$Helper.parseURI(URI.java:360) 455 TiUIImageView E at java.net.URI$Helper.access$100(URI.java:302) 455 TiUIImageView E at java.net.URI.(URI.java:87) 455 TiUIImageView E at ti.modules.titanium.ui.widget.TiUIImageView.setImage(TiUIImageView.java:715) 455 TiUIImageView E at ti.modules.titanium.ui.widget.TiUIImageView.access$500(TiUIImageView.java:53) 455 TiUIImageView E at ti.modules.titanium.ui.widget.TiUIImageView$3.run(TiUIImageView.java:771) 455 TiUIImageView E at android.os.Handler.handleCallback(Handler.java:587) 455 TiUIImageView E at android.os.Handler.dispatchMessage(Handler.java:92) 455 TiUIImageView E at android.os.Looper.loop(Looper.java:123) 455 TiUIImageView E at android.app.ActivityThread.main(ActivityThread.java:4627) 455 TiUIImageView E at java.lang.reflect.Method.invokeNative(Native Method) 455 TiUIImageView E at java.lang.reflect.Method.invoke(Method.java:521) 455 TiUIImageView E at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 455 TiUIImageView E at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 455 TiUIImageView E at dalvik.system.NativeStart.main(Native Method) 455 TiDrawableReference W (main) [34,433] Bitmap bounds could not be determined. If bitmap is loaded, it won't be scaled. 455 TiDrawableReference E (main) [210,643] Problem opening stream with url http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15,12,10,26&chdl=xyz |abc|def|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150: http://chart.apis.google.com/chart?chco=666666,555555,444444,33333 3,222222&cht=p&chd=t:36,15,12,10,26&chdl=xyz|abc|def|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 455 TiDrawableReference E java.io.FileNotFoundException: http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15,12,10,26&chdl=xyz|abc|def|ghi|jkl&a mp;chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 455 TiDrawableReference E at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:1162) 455 TiDrawableReference E at java.net.URL.openStream(URL.java:653) 455 TiDrawableReference E at org.appcelerator.titanium.util.TiFileHelper.openInputStream(TiFileHelper.java:172) 455 TiDrawableReference E at org.appcelerator.titanium.view.TiDrawableReference.getInputStream(TiDrawableReference.java:671) 455 TiDrawableReference E at org.appcelerator.titanium.view.TiDrawableReference.getBitmap(TiDrawableReference.java:238) 455 TiDrawableReference E at org.appcelerator.titanium.view.TiDrawableReference.getBitmap(TiDrawableReference.java:467) 455 TiDrawableReference E at ti.modules.titanium.ui.widget.TiUIImageView.setImage(TiUIImageView.java:724) 455 TiDrawableReference E at ti.modules.titanium.ui.widget.TiUIImageView.access$500(TiUIImageView.java:53) 455 TiDrawableReference E at ti.modules.titanium.ui.widget.TiUIImageView$3.run(TiUIImageView.java:771) 455 TiDrawableReference E at android.os.Handler.handleCallback(Handler.java:587) 455 TiDrawableReference E at android.os.Handler.dispatchMessage(Handler.java:92) 455 TiDrawableReference E at android.os.Looper.loop(Looper.java:123) 455 TiDrawableReference E at android.app.ActivityThread.main(ActivityThread.java:4627) 455 TiDrawableReference E at java.lang.reflect.Method.invokeNative(Native Method) 455 TiDrawableReference E at java.lang.reflect.Method.invoke(Method.java:521) 455 TiDrawableReference E at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 455 TiDrawableReference E at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 455 TiDrawableReference E at dalvik.system.NativeStart.main(Native Method) 455 TiDrawableReference W (main) [7,650] Could not open stream to get bitmap 455 TiUIImageView D (main) [282,932] Retrying bitmap decode: 2/5 455 TiUIImageView E (main) [1,933] URISyntaxException for url http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15,12,10,26&chdl=xyz|abc|de f|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 455 TiUIImageView E java.net.URISyntaxException: Illegal character in query at index 122: http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15, 12,10,26&chdl=xyz|abc|def|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 455 TiUIImageView E at java.net.URI$Helper.validateQuery(URI.java:458) 455 TiUIImageView E at java.net.URI$Helper.parseURI(URI.java:360) 455 TiUIImageView E at java.net.URI$Helper.access$100(URI.java:302) 455 TiUIImageView E at java.net.URI.(URI.java:87) 455 TiUIImageView E at ti.modules.titanium.ui.widget.TiUIImageView.setImage(TiUIImageView.java:715) 455 TiUIImageView E at ti.modules.titanium.ui.widget.TiUIImageView.access$500(TiUIImageView.java:53) 455 TiUIImageView E at ti.modules.titanium.ui.widget.TiUIImageView$3.run(TiUIImageView.java:771) 455 TiUIImageView E at android.os.Handler.handleCallback(Handler.java:587) 455 TiUIImageView E at android.os.Handler.dispatchMessage(Handler.java:92) 455 TiUIImageView E at android.os.Looper.loop(Looper.java:123) 455 TiUIImageView E at android.app.ActivityThread.main(ActivityThread.java:4627) 455 TiUIImageView E at java.lang.reflect.Method.invokeNative(Native Method) 455 TiUIImageView E at java.lang.reflect.Method.invoke(Method.java:521) 455 TiUIImageView E at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 455 TiUIImageView E at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 455 TiUIImageView E at dalvik.system.NativeStart.main(Native Method) 455 TiDrawableReference W (main) [39,972] Bitmap bounds could not be determined. If bitmap is loaded, it won't be scaled. 455 TiDrawableReference E (main) [93,1065] Problem opening stream with url http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15,12,10,26&chdl=xyz |abc|def|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150: http://chart.apis.google.com/chart?chco=666666,555555,444444,33333 3,222222&cht=p&chd=t:36,15,12,10,26&chdl=xyz|abc|def|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 455 TiDrawableReference E java.io.FileNotFoundException: http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15,12,10,26&chdl=xyz|abc|def|ghi|jkl&a mp;chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 455 TiDrawableReference E at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:1162) 455 TiDrawableReference E at java.net.URL.openStream(URL.java:653) 455 TiDrawableReference E at org.appcelerator.titanium.util.TiFileHelper.openInputStream(TiFileHelper.java:172) 455 TiDrawableReference E at org.appcelerator.titanium.view.TiDrawableReference.getInputStream(TiDrawableReference.java:671) 455 TiDrawableReference E at org.appcelerator.titanium.view.TiDrawableReference.getBitmap(TiDrawableReference.java:238) 455 TiDrawableReference E at org.appcelerator.titanium.view.TiDrawableReference.getBitmap(TiDrawableReference.java:467) 455 TiDrawableReference E at ti.modules.titanium.ui.widget.TiUIImageView.setImage(TiUIImageView.java:724) 455 TiDrawableReference E at ti.modules.titanium.ui.widget.TiUIImageView.access$500(TiUIImageView.java:53) 455 TiDrawableReference E at ti.modules.titanium.ui.widget.TiUIImageView$3.run(TiUIImageView.java:771) 455 TiDrawableReference E at android.os.Handler.handleCallback(Handler.java:587) 455 TiDrawableReference E at android.os.Handler.dispatchMessage(Handler.java:92) 455 TiDrawableReference E at android.os.Looper.loop(Looper.java:123) 455 TiDrawableReference E at android.app.ActivityThread.main(ActivityThread.java:4627) 455 TiDrawableReference E at java.lang.reflect.Method.invokeNative(Native Method) 455 TiDrawableReference E at java.lang.reflect.Method.invoke(Method.java:521) 455 TiDrawableReference E at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 455 TiDrawableReference E at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 455 TiDrawableReference E at dalvik.system.NativeStart.main(Native Method) 455 TiDrawableReference W (main) [5,1070] Could not open stream to get bitmap 455 TiUIImageView D (main) [254,1324] Retrying bitmap decode: 3/5 455 TiUIImageView E (main) [1,1325] URISyntaxException for url http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15,12,10,26&chdl=xyz|abc|d ef|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 455 TiUIImageView E java.net.URISyntaxException: Illegal character in query at index 122: http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15, 12,10,26&chdl=xyz|abc|def|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 455 TiUIImageView E at java.net.URI$Helper.validateQuery(URI.java:458) 455 TiUIImageView E at java.net.URI$Helper.parseURI(URI.java:360) 455 TiUIImageView E at java.net.URI$Helper.access$100(URI.java:302) 455 TiUIImageView E at java.net.URI.(URI.java:87) 455 TiUIImageView E at ti.modules.titanium.ui.widget.TiUIImageView.setImage(TiUIImageView.java:715) 455 TiUIImageView E at ti.modules.titanium.ui.widget.TiUIImageView.access$500(TiUIImageView.java:53) 455 TiUIImageView E at ti.modules.titanium.ui.widget.TiUIImageView$3.run(TiUIImageView.java:771) 455 TiUIImageView E at android.os.Handler.handleCallback(Handler.java:587) 455 TiUIImageView E at android.os.Handler.dispatchMessage(Handler.java:92) 455 TiUIImageView E at android.os.Looper.loop(Looper.java:123) 455 TiUIImageView E at android.app.ActivityThread.main(ActivityThread.java:4627) 455 TiUIImageView E at java.lang.reflect.Method.invokeNative(Native Method) 455 TiUIImageView E at java.lang.reflect.Method.invoke(Method.java:521) 455 TiUIImageView E at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 455 TiUIImageView E at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 455 TiUIImageView E at dalvik.system.NativeStart.main(Native Method) 455 TiDrawableReference W (main) [4,1329] Bitmap bounds could not be determined. If bitmap is loaded, it won't be scaled. 455 TiDrawableReference E (main) [154,1483] Problem opening stream with url http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15,12,10,26&chdl=xy z|abc|def|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150: http://chart.apis.google.com/chart?chco=666666,555555,444444,3333 33,222222&cht=p&chd=t:36,15,12,10,26&chdl=xyz|abc|def|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 455 TiDrawableReference E java.io.FileNotFoundException: http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15,12,10,26&chdl=xyz|abc|def|ghi|jkl&a mp;chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 455 TiDrawableReference E at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:1162) 455 TiDrawableReference E at java.net.URL.openStream(URL.java:653) 455 TiDrawableReference E at org.appcelerator.titanium.util.TiFileHelper.openInputStream(TiFileHelper.java:172) 455 TiDrawableReference E at org.appcelerator.titanium.view.TiDrawableReference.getInputStream(TiDrawableReference.java:671) 455 TiDrawableReference E at org.appcelerator.titanium.view.TiDrawableReference.getBitmap(TiDrawableReference.java:238) 455 TiDrawableReference E at org.appcelerator.titanium.view.TiDrawableReference.getBitmap(TiDrawableReference.java:467) 455 TiDrawableReference E at ti.modules.titanium.ui.widget.TiUIImageView.setImage(TiUIImageView.java:724) 455 TiDrawableReference E at ti.modules.titanium.ui.widget.TiUIImageView.access$500(TiUIImageView.java:53) 455 TiDrawableReference E at ti.modules.titanium.ui.widget.TiUIImageView$3.run(TiUIImageView.java:771) 455 TiDrawableReference E at android.os.Handler.handleCallback(Handler.java:587) 455 TiDrawableReference E at android.os.Handler.dispatchMessage(Handler.java:92) 455 TiDrawableReference E at android.os.Looper.loop(Looper.java:123) 455 TiDrawableReference E at android.app.ActivityThread.main(ActivityThread.java:4627) 455 TiDrawableReference E at java.lang.reflect.Method.invokeNative(Native Method) 455 TiDrawableReference E at java.lang.reflect.Method.invoke(Method.java:521) 455 TiDrawableReference E at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 455 TiDrawableReference E at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 455 TiDrawableReference E at dalvik.system.NativeStart.main(Native Method) 455 TiDrawableReference W (main) [5,1488] Could not open stream to get bitmap 455 TiUIImageView D (main) [254,1742] Retrying bitmap decode: 4/5 455 TiUIImageView E (main) [1,1743] URISyntaxException for url http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15,12,10,26&chdl=xyz|abc|d ef|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 455 TiUIImageView E java.net.URISyntaxException: Illegal character in query at index 122: http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15, 12,10,26&chdl=xyz|abc|def|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 455 TiUIImageView E at java.net.URI$Helper.validateQuery(URI.java:458) 455 TiUIImageView E at java.net.URI$Helper.parseURI(URI.java:360) 455 TiUIImageView E at java.net.URI$Helper.access$100(URI.java:302) 455 TiUIImageView E at java.net.URI.(URI.java:87) 455 TiUIImageView E at ti.modules.titanium.ui.widget.TiUIImageView.setImage(TiUIImageView.java:715) 455 TiUIImageView E at ti.modules.titanium.ui.widget.TiUIImageView.access$500(TiUIImageView.java:53) 455 TiUIImageView E at ti.modules.titanium.ui.widget.TiUIImageView$3.run(TiUIImageView.java:771) 455 TiUIImageView E at android.os.Handler.handleCallback(Handler.java:587) 455 TiUIImageView E at android.os.Handler.dispatchMessage(Handler.java:92) 455 TiUIImageView E at android.os.Looper.loop(Looper.java:123) 455 TiUIImageView E at android.app.ActivityThread.main(ActivityThread.java:4627) 455 TiUIImageView E at java.lang.reflect.Method.invokeNative(Native Method) 455 TiUIImageView E at java.lang.reflect.Method.invoke(Method.java:521) 455 TiUIImageView E at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 455 TiUIImageView E at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 455 TiUIImageView E at dalvik.system.NativeStart.main(Native Method) 455 TiDrawableReference W (main) [3,1746] Bitmap bounds could not be determined. If bitmap is loaded, it won't be scaled. 455 TiDrawableReference E (main) [114,1860] Problem opening stream with url http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15,12,10,26&chdl=xy z|abc|def|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150: http://chart.apis.google.com/chart?chco=666666,555555,444444,3333 33,222222&cht=p&chd=t:36,15,12,10,26&chdl=xyz|abc|def|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 455 TiDrawableReference E java.io.FileNotFoundException: http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15,12,10,26&chdl=xyz|abc|def|ghi|jkl&a mp;chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 455 TiDrawableReference E at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:1162) 455 TiDrawableReference E at java.net.URL.openStream(URL.java:653) 455 TiDrawableReference E at org.appcelerator.titanium.util.TiFileHelper.openInputStream(TiFileHelper.java:172) 455 TiDrawableReference E at org.appcelerator.titanium.view.TiDrawableReference.getInputStream(TiDrawableReference.java:671) 455 TiDrawableReference E at org.appcelerator.titanium.view.TiDrawableReference.getBitmap(TiDrawableReference.java:238) 455 TiDrawableReference E at org.appcelerator.titanium.view.TiDrawableReference.getBitmap(TiDrawableReference.java:467) 455 TiDrawableReference E at ti.modules.titanium.ui.widget.TiUIImageView.setImage(TiUIImageView.java:724) 455 TiDrawableReference E at ti.modules.titanium.ui.widget.TiUIImageView.access$500(TiUIImageView.java:53) 455 TiDrawableReference E at ti.modules.titanium.ui.widget.TiUIImageView$3.run(TiUIImageView.java:771) 455 TiDrawableReference E at android.os.Handler.handleCallback(Handler.java:587) 455 TiDrawableReference E at android.os.Handler.dispatchMessage(Handler.java:92) 455 TiDrawableReference E at android.os.Looper.loop(Looper.java:123) 455 TiDrawableReference E at android.app.ActivityThread.main(ActivityThread.java:4627) 455 TiDrawableReference E at java.lang.reflect.Method.invokeNative(Native Method) 455 TiDrawableReference E at java.lang.reflect.Method.invoke(Method.java:521) 455 TiDrawableReference E at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 455 TiDrawableReference E at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 455 TiDrawableReference E at dalvik.system.NativeStart.main(Native Method) 455 TiDrawableReference W (main) [5,1865] Could not open stream to get bitmap 455 TiUIImageView D (main) [255,2120] Retrying bitmap decode: 5/5 455 TiUIImageView E (main) [0,2120] URISyntaxException for url http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15,12,10,26&chdl=xyz|abc|d ef|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 455 TiUIImageView E java.net.URISyntaxException: Illegal character in query at index 122: http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15, 12,10,26&chdl=xyz|abc|def|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 455 TiUIImageView E at java.net.URI$Helper.validateQuery(URI.java:458) 455 TiUIImageView E at java.net.URI$Helper.parseURI(URI.java:360) 455 TiUIImageView E at java.net.URI$Helper.access$100(URI.java:302) 455 TiUIImageView E at java.net.URI.(URI.java:87) 455 TiUIImageView E at ti.modules.titanium.ui.widget.TiUIImageView.setImage(TiUIImageView.java:715) 455 TiUIImageView E at ti.modules.titanium.ui.widget.TiUIImageView.access$500(TiUIImageView.java:53) 455 TiUIImageView E at ti.modules.titanium.ui.widget.TiUIImageView$3.run(TiUIImageView.java:771) 455 TiUIImageView E at android.os.Handler.handleCallback(Handler.java:587) 455 TiUIImageView E at android.os.Handler.dispatchMessage(Handler.java:92) 455 TiUIImageView E at android.os.Looper.loop(Looper.java:123) 455 TiUIImageView E at android.app.ActivityThread.main(ActivityThread.java:4627) 455 TiUIImageView E at java.lang.reflect.Method.invokeNative(Native Method) 455 TiUIImageView E at java.lang.reflect.Method.invoke(Method.java:521) 455 TiUIImageView E at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 455 TiUIImageView E at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 455 TiUIImageView E at dalvik.system.NativeStart.main(Native Method) 455 TiDrawableReference W (main) [5,2125] Bitmap bounds could not be determined. If bitmap is loaded, it won't be scaled. 455 TiDrawableReference E (main) [102,2227] Problem opening stream with url http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15,12,10,26&chdl=xy z|abc|def|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150: http://chart.apis.google.com/chart?chco=666666,555555,444444,3333 33,222222&cht=p&chd=t:36,15,12,10,26&chdl=xyz|abc|def|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 455 TiDrawableReference E java.io.FileNotFoundException: http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15,12,10,26&chdl=xyz|abc|def|ghi|jkl&a mp;chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 455 TiDrawableReference E at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:1162) 455 TiDrawableReference E at java.net.URL.openStream(URL.java:653) 455 TiDrawableReference E at org.appcelerator.titanium.util.TiFileHelper.openInputStream(TiFileHelper.java:172) 455 TiDrawableReference E at org.appcelerator.titanium.view.TiDrawableReference.getInputStream(TiDrawableReference.java:671) 455 TiDrawableReference E at org.appcelerator.titanium.view.TiDrawableReference.getBitmap(TiDrawableReference.java:238) 455 TiDrawableReference E at org.appcelerator.titanium.view.TiDrawableReference.getBitmap(TiDrawableReference.java:467) 455 TiDrawableReference E at ti.modules.titanium.ui.widget.TiUIImageView.setImage(TiUIImageView.java:724) 455 TiDrawableReference E at ti.modules.titanium.ui.widget.TiUIImageView.access$500(TiUIImageView.java:53) 455 TiDrawableReference E at ti.modules.titanium.ui.widget.TiUIImageView$3.run(TiUIImageView.java:771) 455 TiDrawableReference E at android.os.Handler.handleCallback(Handler.java:587) 455 TiDrawableReference E at android.os.Handler.dispatchMessage(Handler.java:92) 455 TiDrawableReference E at android.os.Looper.loop(Looper.java:123) 455 TiDrawableReference E at android.app.ActivityThread.main(ActivityThread.java:4627) 455 TiDrawableReference E at java.lang.reflect.Method.invokeNative(Native Method) 455 TiDrawableReference E at java.lang.reflect.Method.invoke(Method.java:521) 455 TiDrawableReference E at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 455 TiDrawableReference E at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 455 TiDrawableReference E at dalvik.system.NativeStart.main(Native Method) 455 TiDrawableReference W (main) [4,2231] Could not open stream to get bitmap 455 TiUIImageView E (main) [15,2246] Max retries reached, giving up decoding image source: http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15 ,12,10,26&chdl=xyz|abc|def|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 {code} ",3 +"TIMOB-2662","04/15/2011 04:26:19","android SDK > 1.5.0 ""Compiling Javascript Resources"" each time","With SDK older than 1.5.0, when Ti developer ""Launch"" button is clicked, application is immediately displaying in the emulator: {code} [INFO] Building test for Android ... one moment [INFO] Copying project resources.. [INFO] Tiapp.xml unchanged, skipping class generation [INFO] Manifest unchanged, skipping Java build [INFO] Re-launching application ... test [INFO] Relaunched test ... Application should be running. {code} With 1.5.0 & 1.5.1 each time I get a ""compiling Android Resources"": {code} [INFO] Building test for Android ... one moment [INFO] Titanium SDK version: 1.5.1 (12/16/10 16:25 16bbb92) [INFO] Copying project resources.. [INFO] Tiapp.xml unchanged, skipping class generation [INFO] Compiling Javascript Resources ... [INFO] Compiling Android Resources... This could take some time {code}",3 +"TIMOB-2705","04/15/2011 04:27:30","App names containing ""Titanium"" break the iPhone build","{html}

If the (case-sensitive) string ""Titanium"" appears is used in a project name, the Xcode project files (*.pbxproj) get mangled and can't be built from the Titanium Developer GUI.

I can reproduce this reliably with the following versions:
Titanium Developer 1.2.2
Titanium Mobile SDK 1.1.0
Mac OS X 10.6.5
Xcode 3.2.3

Details for reproducing:

When I create a new Mobile project from Titanium Developer, called ""Hello Titanium"", building the app throws an error because the named Xcode target doesn't exist. (I found that in build/iphone/build/build.log)

$ xcodebuild -list

 Information about project ""Hello Titanium"": Targets:     Hello HelloTitanium (Active)     Hello HelloTitanium-iPad  Build Configurations:     Debug (Active)     Release  If no build configuration is specified ""Release"" is used. 

These cases also fail:

  • ""Hello2Titanium"" => ""Hello2Hello2Titanium""
  • ""Hello4Titanium"" => ""Hello4Hello4Titanium""
  • ""Titanium7Hello"" => ""Titanium7Hello7Hello""
  • ""Hello8Titanium8Hello"" => ""Hello8Hello8Titanium8Hello8Hello""
  • ""Welcome Titanium Howdy"" => ""Welcome WelcomeTitaniumHowdy Howdy""

But these cases are just fine:

  • ""Hello5Titanius"" => ""Hello5Titanius""
  • ""some titanium in lowercase"" => ""some titanium in lowercase""
{html}",1 +"TIMOB-2733","04/15/2011 04:28:04","Android: Getting Error at Rebuilding after changing tiapp.xml.","Hi, I am developing Android application using Titanium. Earlier i was using {{Titanium.Platform.displayCaps.platformHeight}} and i tried solution provided here: http://developer.appcelerator.com/question/91631/titaniumplatformdisplaycapsplatformheight-runtime-error Now i am getting following error {code} [INFO] Detected tiapp.xml change, forcing full re-build... [ERROR] Error in compiler. , [Errno 13] Permission denied: 'D:\\Test\\TestApp\\build\\android\\bin\\assets\\Resources\\Thumbs.db'; Traceback (most recent call last): File ""C:\Documents and Settings\All Users\Application Data\Titanium\mobilesdk\win32\1.5.1\android\builder.py"", line 1548, in s.build_and_run(False,avd_id) File ""C:\Documents and Settings\All Users\Application Data\Titanium\mobilesdk\win32\1.5.1\android\builder.py"", line 1296, in build_and_run self.copy_project_resources() File ""C:\Documents and Settings\All Users\Application Data\Titanium\mobilesdk\win32\1.5.1\android\builder.py"", line 549, in copy_project_resources shutil.copy(path, dest) File ""C:\Documents and Settings\All Users\Application Data\Titanium\modules\win32\python\1.0.0\lib\shutil.py"", line 85, in copy copyfile(src, dst) File ""C:\Documents and Settings\All Users\Application Data\Titanium\modules\win32\python\1.0.0\lib\shutil.py"", line 52, in copyfile fdst = open(dst, 'wb') IOError: [Errno 13] Permission denied: 'D:\\Test\\TestApp\\build\\android\\bin\\assets\\Resources\\Thumbs.db' {code} Suggest Something ASAP. Regards, Rahul",3 +"TIMOB-2760","04/15/2011 04:28:52","need to be able to ref adb from either /tools or /platform-tools subdir","{html}

as it stands users have to make a symlink in /tools to /platform-tools/adb

{html}",3 +"TIMOB-2783","04/15/2011 04:29:26","iOS: Need more methods to manipulate localnotification ","{html}

Local notification created for iOS can not be manipulate after the application has been closed and re opened.
It's really a need, per exemple, to be able to cancel one, or modify another..

We need some tools to retrieve and manipulate them.

{html}",0 +"TIMOB-2792","04/15/2011 04:29:41","iOS: Facebook permissions return false positives","{html}

Problem

If a user clicks ""Don't Allow"" when an app asks for additional information, evt.success and hasPermission will still return ""true"" for this permission, when they should return false. This false positive only occurs in iOS, in my testing.

Sample Code Demonstrating Problem

The following sample code demonstrates the problem.

Use the following steps to reproduce in sample code:
1. Click ""Connect with Facebook""
2. Sign in
3. Click ""Don't Allow""

 /** * Function that logs the user into Facebook, and makes sure they have * granted us the ""user_checkins"" permission. */ function checkIfUserIsLoggedIntoFacebook() {     // if user hasn't logged in yet, don't do anything     // (they need to click the ""Connect with Facebook"" button)     if (Titanium.Facebook.isLoggedIn() === false) {     }     // if the user hasn't given us the permissions we want, request them.     else if (!Titanium.Facebook.hasPermission(""user_checkins"")) {         Titanium.Facebook.requestPermission(""user_checkins"", function (evt) {             if (evt.success) {                 alert('Permission GRANTED');             } else {                 alert(""Permission DENIED"");             }         });     }     // otherwise, we should be good to go     else {         alert('Permission ALREADY GRANTED');     } }  /** * Add a login event listener so we can check if we have all the permissions * we want. */ Titanium.Facebook.addEventListener('login', function (evt) {     if (evt.success) {         checkIfUserIsLoggedIntoFacebook();     } });  // create our window var win = Ti.UI.createWindow({ backgroundColor: '#fff' }); win.add(Ti.Facebook.createLoginButton({     apikey: '645bf1d897d1fa8dc93ed45bc37edc04',     secret: '49d146f85b8429438262380b85f2ebac',     style: 'wide' })); win.open(); 

Tested On

Tested on CI build 1.6.0 from January 8th, 2010.
BROKEN on iPhone Simulator, 4.2
WORKS on Android Simulator APIs 2.2

Associated Helpdesk Ticket

http://developer.appcelerator.com/helpdesk/view/63481

{html}",1 +"TIMOB-2801","04/15/2011 04:29:54","iOS: HTTPClient intermittently errors on HTTPS requests","{html}

Problem

The HTTPClient errors intermittently (around half the time) when making an HTTPS request. The following error message is sent:

  Error Domain=ASIHTTPRequestErrorDomain Code=1 ""A connection failure occurred"" UserInfo=0xb236b70 {NSUnderlyingError=0xb234cf0 ""The operation couldn’t be completed. Connection reset by peer"", NSLocalizedDescription=A connection failure occurred}  

Tested On

All platforms tested with clean builds from both Titanium Mobile 1.5.1 and 1.6.0 (pulled January 8th, 2011).
BROKEN on iPhone Simulator 4.2
BROKEN on iPod Touch 4.2
WORKS on Android Simulator 2.2
WORKS in browser (hitting the URL)

Sample Code

  var win = Titanium.UI.createWindow({ backgroudColor: '#333' });  var statusLabel = Titanium.UI.createTextArea({      top: 10, right: 10, left: 10, bottom: 45  });  win.add(statusLabel);    function runRequest() {      var xhr = Titanium.Network.createHTTPClient();      xhr.onload = function () {          statusLabel.value = this.responseText;          //Ti.API.info(this.responseText);      };      xhr.onerror = function (e) {          statusLabel.value = e.error;          Ti.API.error(e.error);      };      statusLabel.value = 'Waiting for response...';      xhr.open('GET', 'https://acomsx1.cos.agilent.com/QueryOpenNotificationsCount');      xhr.send();  }    var refresh = Ti.UI.createButton({      title: 'Refresh',      bottom: 10, left: 10, right: 10, height: 25  });  refresh.addEventListener('click', runRequest);  win.add(refresh);    win.open();    runRequest();  

Associated Helpdesk Ticket

http://developer.appcelerator.com/helpdesk/view/64561

{html}",2 +"TIMOB-2908","04/15/2011 04:32:37","iOS: Switch - Disable animation on init and allow developer to disable for setValue","When loading a switch with a value set to 'true' the switch shows an animation going from 'off' to 'on'. Users would like a property added to the switch object of 'animate' as a boolean value, to turn off the animation on-load if the value of the switch is preset to true. Reference ticket: http://developer.appcelerator.com/helpdesk/view/67301",2 +"TIMOB-2951","04/15/2011 04:33:37","iOS Feature Request: Add a byte() Method to Titanium.Filesystem","{html}

User is trying to read a binary blob file. Specifically this users is trying to read the last 128 bytes from the data within the blob.

Ticket reference: http://developer.appcelerator.com/helpdesk/view/66511

Code he is attempting:

  var ansi = Ti.Filesystem.getFile(Titanium.Filesystem.resourcesDirectory,'4THDS-05.DRK');

  Ti.API.info('Native = ' + ansi.nativePath);  var content = ansi.read();  var sauce = content.getByte(content.size-128);    Ti.API.info('SAUCE = ' + sauce);</code>  
      
{html}",0 +"TIMOB-3060","04/15/2011 04:35:49","iOS: Modal Window Animated False","If a modal window is opened with animated:false, it will be opened without animation but will close with animation. Example code: {code:js} var win = Titanium.UI.createWindow({ backgroundColor:'#fff' }); var button = Ti.UI.createButton({title:'open', width:200, height:50}); win.add(button); button.addEventListener('click', function(){ var win2 = Ti.UI.createWindow({backgroundColor:'#ccc'}); var button2 = Ti.UI.createButton({title:'close', width:200, height:50}); win2.add(button2); button2.addEventListener('click', function(){ win2.close(); //win2.close({animted:false}); }); win2.open({modal:true, animated:false}); }); win.open(); {code}",1 +"TIMOB-3162","04/15/2011 04:38:25","Android: Ti.API.log doesn't work with one argument only","{html}

I used Ti.API.log with one argument in an external JS file wrongly. It works on iPhone and a message is printed as info log. But on Android, it fails without error message and scripts after the log line are not executed.

{html}",0.5 +"TIMOB-3180","04/15/2011 04:38:57","Android: JAVA_HOME not recognized when launching some Android applications","Googled and found that spaces in the Java paths would create complications: http://developer.appcelerator.com/question/34701/error-jdk-version-javac-is-not-recognized-as-an-internal-or-external-command-testing-on-android We moved the JDK location to C:\Java\java-jdk-folder and it appeared to work fine after updating JAVA_HOME and the Path environment variables to the new location.",3 +"TIMOB-3186","04/15/2011 04:39:00","Android: Persistent internal compiler error","h2. Error Message: {code} [INFO] Compiling Javascript Resources ... [ERROR] Error in compiler. , 'utf8' codec can't decode byte 0x8e in position 324: unexpected code byte; Traceback (most recent call last): File ""C:\ProgramData\Titanium\mobilesdk\win32\1.5.1\android\builder.py"", line 1548, in s.build_and_run(False,avd_id) File ""C:\ProgramData\Titanium\mobilesdk\win32\1.5.1\android\builder.py"", line 1307, in build_and_run compiler.compile() File ""C:\ProgramData\Titanium\mobilesdk\win32\1.5.1\android\compiler.py"", line 239, in compile js_contents = self.make_function_from_file(fullpath, pack=False) File ""C:\ProgramData\Titanium\mobilesdk\win32\1.5.1\android\compiler.py"", line 183, in make_function_from_file file_contents = codecs.open(path,'r',encoding='utf-8').read() File ""C:\ProgramData\Titanium\modules\win32\python\1.0.0\lib\codecs.py"", line 618, in read return self.reader.read(size) File ""C:\ProgramData\Titanium\modules\win32\python\1.0.0\lib\codecs.py"", line 424, in read newchars, decodedbytes = self.decode(data, self.errors) UnicodeDecodeError: 'utf8' codec can't decode byte 0x8e in position 324: unexpected code byte {code} h2. Version Info: * Titanium Mobile 1.5.1 * Android SDK r8 and r9 h2. Repo Steps: * Create a new titanium project * Add attached BigInt.js to the /Resources directory * Recompile *Error occurs here* * Remove BigInt.js from /Resources directory * Recompile *Compiler error still occurs* It appears that the entire titanium mobile project is trashed from this point and will not recompile again. Edit: fixed the formatting",3 +"TIMOB-3199","04/15/2011 04:39:17","Android: GridView support","{html}

Hi,
I would like to see support of GridView in Titanium.
Currently the only way to do something similar is to emulate it with a TableView and internal views, but this brings performance, usability problems and a non-native experience.

Something like

 // create grid view var gridView = Titanium.UI.Android.createGridView({ data:data }); 
would be desirable.
{html}",0 +"TIMOB-3200","04/15/2011 04:39:18","Android: Add radio button group support","*Summary:* We should add a radio button group like feature on all platforms (Android, iOS, and Windows) where a horizontal layout of buttons are displayed, but only one option can be selected at a time. On Android and Windows, this is a built-in UI component that we should use. https://developer.android.com/guide/topics/ui/controls/radiobutton On iOS, this should be implemented via a {{UISegmentedControl}}. https://developer.apple.com/design/human-interface-guidelines/ios/controls/segmented-controls *Recommend Solution:* Should be implemented in Titanium similar to {{Ti.UI.TabbedBar}}... https://docs.appcelerator.com/platform/latest/#!/api/Titanium.UI.TabbedBar The idea is that the Titanium developer creates the ""group"" view, but does not have access to the individual buttons within the group. This will help make it more portable between Android and iOS. The radio buttons will be created via a creation-only ""labels"" property, which is assigned an array of strings, just like how it works with {{Ti.UI.TabbedBar}} and {{Ti.UI.ButtonBar}}. We should also support an ""index"" property to indicate which button is selected and the ""click"" event when a button has been clicked on. This is how it's implemented in {{Ti.UI.TabbedBar}} as well. The layout should be horizontal by default. Especially since iOS' {{UISegmentedControl}} can only be displayed horizontally. Vertical layout support would be nice, but it is only natively supported on Android and Windows. *Future:* We may also want to support the ""Choice Chips"" feature as shown in Google's material design below. New {{Chip}} and {{ChipGroup}} Java classes have been added to Google's Support Library version 28. This could be implemented via the view's ""style"" property in the future. https://material.io/design/components/chips.html ",13 +"TIMOB-3214","04/15/2011 04:39:39","iOs 1.6.0 - iPad - Modal FormSheet BUG","{html}

Hi,
I'm currently use an window in modal, in modalStyle:Ti.UI.iPhone.MODAL_PRESENTATION_FORMSHEET, opened with flip animation. On 1.5.2 this works correctly, but in 1.6.0 this modal takes all height of screen and hide the current window.

{html}",0 +"TIMOB-3221","04/15/2011 04:39:50","Facebook.authorize not firing on Android with 1.6.0","{html}

Nothing happens on the Android emulator when firing the authorize call. (Same code works on iOS)

 Ti.Facebook.appid = 'xxx'; Ti.Facebook.permissions = ['publish_stream']; Ti.Facebook.authorize(); 

But some action is happening behind the scenes.

 [TRACE] W/InputManagerService( 64): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@450d0020 [TRACE] D/Facebook-WebView( 290): Webview loading URL: https://m.facebook.com/dialog/oauth?display=touch&client_id=xxx&scope=publish_stream&type=user_agent&redirect_uri=fbconnect%3A%2F%2Fsuccess [TRACE] D/Facebook-WebView( 290): Webview loading URL: http://www.facebook.com/connect/uiserver.php?app_id=xxx&method=permissions.request&display=touch&next=fbconnect%3A%2F%2Fsuccess&type=user_agent&fbconnect=1&perms=publish_stream [TRACE] D/Facebook-WebView( 290): Redirect URL: http://www.facebook.com/connect/uiserver.php?app_id=xxx&method=permissions.request&display=touch&next=fbconnect%3A%2F%2Fsuccess&type=user_agent&fbconnect=1&perms=publish_stream [TRACE] D/Facebook-WebView( 290): Webview loading URL: http://touch.facebook.com/login.php?app_id=xxx&cancel=fbconnect%3A%2F%2Fsuccess%2F%3Ferror_reason%3Duser_denied%26error%3Daccess_denied%26error_description%3DThe%2Buser%2Bdenied%2Byour%2Brequest.&fbconnect=1&next=http%3A%2F%2Fwww.facebook.com%2Fconnect%2Fuiserver.php%3Fmethod%3Dpermissions.request%26app_id%3Dxxx%26display%3Dtouch%26redirect_uri%3Dfbconnect%253A%252F%252Fsuccess%26type%3Duser_agent%26fbconnect%3D1%26perms%3Dpublish_stream%26from_login%3D1&rcount=1 [TRACE] D/Facebook-WebView( 290): Redirect URL: http://touch.facebook.com/login.php?app_id=xxx&cancel=fbconnect%3A%2F%2Fsuccess%2F%3Ferror_reason%3Duser_denied%26error%3Daccess_denied%26error_description%3DThe%2Buser%2Bdenied%2Byour%2Brequest.&fbconnect=1&next=http%3A%2F%2Fwww.facebook.com%2Fconnect%2Fuiserver.php%3Fmethod%3Dpermissions.request%26app_id%3Dxxx%26display%3Dtouch%26redirect_uri%3Dfbconnect%253A%252F%252Fsuccess%26type%3Duser_agent%26fbconnect%3D1%26perms%3Dpublish_stream%26from_login%3D1&rcount=1 
{html}",1 +"TIMOB-3277","04/15/2011 04:41:10","iOS: Picker 'select'-event requested","{html}

At this moment, the only Picker-event is the change-event. A user, however, can click on a row. If he does so, a blue selection bar appears. But there is no way to detect that event. Could you add a 'select'-event so that we can write an event-handler for this behavior?

{html}",0 +"TIMOB-3286","04/15/2011 04:41:19","Android: Support service constants","{html}

Is it possible to add support for the constants for services for better control over the instances through Ti.Android.Service and the start event handler?

I'm finding my Android background service is getting cleared up when the device is running low on memory. I guess the alternative is support for foreground services.

Android Docs: http://developer.android.com/reference/android/app/Service.html#STA...
QA Thread: http://developer.appcelerator.com/question/116757/creating-services...

{html}",1 +"TIMOB-3375","04/15/2011 04:43:29","TiAPI: Implement several missing Ti.Media.AudioPlayer features","*Problem description* Ti.Media.AudioPlayer is lacking several features. Because of this, developing an audio player with the current API is not possible. For example, Ti.Media.Sound has a duration property, which isn't available in Ti.Media.AudioPlayer. *Proposed fixes (available in linked repositry)* - ADD duration read-only property - ADD time property (for seeking) - ADD volume property - ADD next/prev and seeking remote control events - FIX play/pause remote controls don't work when using background audio - FIX changing the URL doesn't work (unless you stop first) - FIX progress events only fire for the first URL Also suggested on http://stackoverflow.com/q/35157844/4626813 - Expose contentType header to be send when retrieving the file/stream",0 +"TIMOB-3408","04/15/2011 04:43:55","iOS: Expose Ti.UI.Label.textAlign ""justify""","Please put this into the next release. Allows for prettier text aligning in Labels.",2 +"TIMOB-3425","04/15/2011 04:45:01","iOS: Titanium.Media.createItem does not exist","{html}

I tried to call the method however I get an error in 1.6.1, 1.6.0 and 1.5.1 telling me that the method doesn't exist. Still no luck after emptying build folder and forcing full rebuild. So it's impossible to save and deserialize media data picked from the library at the moment.

Here is the relevant part of the crash log:

*** Terminating app due to uncaught exception 'XXX', reason: 'invalid method (createItem) passed to MediaModule'

{html}",1 +"TIMOB-3427","04/15/2011 04:45:04","Ti API: Provide EXIF data interface","As Exif data is stored in photo files created using the device camera, it can be exploited to simplify apps as the information does not need to be implemented/duplicated using the DB. Hence, propose that access to the data be considered for inclusion in a future release. This functionality is available for iOS from version 4.0, according to http://developer.appcelerator.com/helpdesk/view/63941. This request also raised for Android.",3 +"TIMOB-3432","04/15/2011 04:45:08","iOS: Clear app url from App Arguments on resume","{html}

A helpdesk ticket encounter a problem while coming back to the app after it has been in the background (multitasking).

If the app is opened from being close, Ti.App.getArguments().url return nothing, and if it is opened again from backgrounding, it also returns nothing. This is fine, but when the app is launched from Safari (for example: app://), getArguments().url returns ""app://"" (or whatever the name of the app is) as expected. If the app is placed in the background again and reopened normally, the same url appears as if it was opened through safari.

More details and sample app.js in helpdesk ticket 76659.

{html}",1 +"TIMOB-3491","04/15/2011 04:45:49","Android: support font-style strike line-through","{html}

Requesting suport for line-through decoration of text.
Also known as strike/strikethrough.
Example

{html}",0 +"TIMOB-3492","04/15/2011 04:45:50","Android: Context menu","h1. Feature Support Android Context Menu h2. Relies On The context menu feature relies on [TIMOB-1653]",0 +"TIMOB-3529","04/15/2011 04:46:20","Android: Ti.Properties do not accept ""undefined"" as value","This is feature request to allow ""undefined"" to be set as part of Ti.Properties, specifically the setBool and getBool. This works fine on iOS but does not on Android. Currently getBool accepts ""true"", ""false"" and ""null"". There is a http://support.appcelerator.com/tickets/BUQ-42972-167/homepage ticket asking for this.",1 +"TIMOB-3541","04/15/2011 04:46:28","iOS: Implement Composite Layout Behavior Spec","Implementation of the new (Composite) Behavior Spec for IOS. ",8 +"TIMOB-3569","04/15/2011 04:46:46","Titanium.UI.iPhone.SystemButton does not exist","Sometimes it does, other times not... ditto for {{SystemButtonStyle}}. (iPhone emulator) Restarting Titanium developer and deleting the build folder brought it back. But...",2 +"TIMOB-3588","04/15/2011 04:46:58","Android: Geolocation displays error alert for Current location","{html}

Steps to Reproduce
1. Launch KitchenSink
2. Run Phone > Geolocation
3. Go back and then go back into geolocation again

Actual Result:
Alert ""error{code

Expected Result:
To return the geolocation values

Note:
Droid 1 happens on first launch
Nexus S, sometimes happen on first launch, sometimes require a second launch
See also bug # 2418

Tested on:
Nexus S 2.3.2 Titanium SDK version: 1.7.0 (Apr 12 2011 15:24 rcc9dd9e1)
Droid 1 2.2.1 Titanium SDK version: 1.7.0 (Apr 12 2011 15:24 rcc9dd9e1)

{html}",1 +"TIMOB-3594","04/15/2011 04:47:02","TableViewRow.header/footer is undocumentated","{html}

Usage example in the Kitchensink: https://github.com/appcelerator/KitchenSink/blob/master/Resources/e...

But the current API documentation doesn't know this attribute: http://developer.appcelerator.com/apidoc/mobile/latest/Titanium.UI....

{html}",1 +"TIMOB-3887","05/03/2011 16:12:58","Android: Image taken in portrait orients itself to landscape ","# phone > camera > camera basic # in portrait, take an image, then hit okay and look at resulting image results: image is landscape expected: should reflect users orientation when image was taken notes: not seen when using landscape orientation to take image",5 +"TIMOB-4041","05/10/2011 21:56:44","Android: Add ""separatorStyle"" property to Ti.UI.ListView","Users have requested the ability to eliminate the Separator in a tableview so when they are using backgroundImages for the TableViewRow there is no break in between the rows. See screenshot: http://screencast.com/t/5lDQUpCyHpxv Setting the tableView seperatorColor to 'transparent' shows the table backgroundColor. Sample project is attached. The API should match iOS as closely as possible, so we are moving the existing iOS* constants into the top level UI namespace, and keeping the existing separatorStyle property that iOS uses. The valid styles should be: Ti.UI.TableViewSeparatorStyle.NONE Ti.UI.TableViewSeparatorStyle.SINGLE_LINE In the future we can also implement custom separator drawables by passing them to this property (Android only)",5 +"TIMOB-4063","05/12/2011 19:08:40","Android: TabGroup: most events not do not fire (only focus works)","Environment: * TiStudio Preview * Android 2.3.3 * Titanium SDK (all versions) The following code demonstrates that only the focus event is fired for tabGroups: {code} Titanium.UI.setBackgroundColor('#000'); var tabGroup = Titanium.UI.createTabGroup(); var win1 = Titanium.UI.createWindow({ title:'Tab 1', backgroundColor:'#fff' }); var tab1 = Titanium.UI.createTab({ title:'Tab 1', window:win1 }); var label1 = Titanium.UI.createLabel({ color:'#999', text:'I am Window 1' }); win1.add(label1); var win2 = Titanium.UI.createWindow({ title:'Tab 2', backgroundColor:'#fff' }); var tab2 = Titanium.UI.createTab({ title:'Tab 2', window:win2 }); var label2 = Titanium.UI.createLabel({ color:'#999', text:'I am Window 2' }); win2.add(label2); tabGroup.addTab(tab1); tabGroup.addTab(tab2); tabGroup.open(); label1.addEventListener(""click"", function(){ Ti.API.info(""label1 click event fired!""); }); tabGroup.addEventListener(""click"", function(){ Ti.API.info(""tabGroup click event fired!""); }); tabGroup.addEventListener(""dblclick"", function(){ Ti.API.info(""tabGroup dblclick event fired!""); }); tabGroup.addEventListener(""doubletap"", function(){ Ti.API.info(""tabGroup doubletap event fired!""); }); tabGroup.addEventListener(""focus"", function(){ Ti.API.info(""tabGroup focus event fired!""); }); tabGroup.addEventListener(""swipe"", function(){ Ti.API.info(""tabGroup swipe event fired!""); }); {code}",2 +"TIMOB-4162","05/20/2011 13:26:04","Android: Debugger: Breakpoint hits prior to value change when condition is set","Steps to Reproduce: 1. Run Debug test 1014 and 1015 from http://wiki.appcelerator.org/display/tp/Debugger+Test+Plan Actual Result: Frames 1-7 is not being displayed in the debug window Expected Result: Call frames in the debug window should be: 9 call frames: frame[0] : [Eval script] [app.js:24] frame[1]-frame[7] : [Eval script] [app.js:28] frame[8] : [Top-level script] [app.js:53] Workaround: Click Resume twice",3 +"TIMOB-5626","05/24/2011 07:08:32","MobileWeb: Event 'selected' doesn't work with textArea.","Event 'selected' not works with textArea object. The label should be appear when the text in the textField is selected. {code:JavaScript} win = Ti.UI.currentWindow; ta = Ti.UI.createTextArea({ width: 200, height: 100, top: 10, left: 10, value: 'textArea' }) ta.addEventListener('selected', function(){ var label = Ti.UI.createLabel({ text: 'selected works', backgroundColor:'red', top: 150 }) win.add(label); }) win.add(ta); {code}",3 +"TIMOB-4244","05/25/2011 07:10:33","iOS: Enable searchBar to animate cancel button","When a searchBar is NOT attached to a tableView, instead attached to a view on the window, the cancel button isn't animated. Nor does there seem to be a property to enable it. The cancel button IS animated when a searchBar is attached to a tableView. On the Q&A site, there is this: [http://developer.appcelerator.com/question/67231/searchbar-animate-cancel-button] Hidayet Dogan, looked at the source and wrote: {code:title=iphone/Classes/TiUISearchBar.m (about line 70)} Change: [search setShowsCancelButton:[TiUtils boolValue:value]]; to [search setShowsCancelButton:[TiUtils boolValue:value] animated:YES]; {code} Could be a configurable option, I suppose, but having it match the tableView searchBar would probably make sense. The latter is not configurable.",1 +"TIMOB-4274","06/01/2011 09:46:13","iOS: searchHidden value does not stay when window containing scroll view is blurred/focused","The use of searchHidden:true is losing its value in that once a window containing a table with this property is blurred, on return the search is displayed. Code example below: {code:lang=javascript|title=app.js} Titanium.UI.setBackgroundColor('#fff'); var tabGroup = Titanium.UI.createTabGroup(); var win1 = Titanium.UI.createWindow({ title:'Tab 1' }); var tab1 = Titanium.UI.createTab({ title:'Tab 1', window:win1 }); var data = [{ title:'row 1' }]; var s1 = Titanium.UI.createSearchBar(); var tb = Ti.UI.createTableView({ data:data, search:s1, searchHidden:true }); win1.add(tb); var win2 = Titanium.UI.createWindow({ title:'Tab 2' }); var tab2 = Titanium.UI.createTab({ title:'Tab 2', window:win2 }); var label2 = Titanium.UI.createLabel({ text:'I am Window 2' }); win2.add(label2); tabGroup.addTab(tab1); tabGroup.addTab(tab2); tabGroup.open(); {code}",3 +"TIMOB-4371","06/04/2011 02:26:34","Android: webview content height and width too large","Since 1.7.0, webview content on Android is way too long and wide by default. This leads to a webview where you can scroll way too much to the right and the bottom with no more content being visible inside the webview. On 1.6.3 the height and width of a webview was properly adopted to the text length and the width/height properties. Here's an example code snippet you can run: app.js: {code} Titanium.UI.setBackgroundColor('black'); var win = Titanium.UI.createWindow(); var webview = Titanium.UI.createWebView({ html:""This is some text inside a webview...it's not very long, but demonstrates what it should"", height:150, width:300, autoDetect:[], scalesPageToFit:false, backgroundColor:""white"", left:10, top:100, color:""black"" }); win.add(webview); win.open(); {code} On 1.6.3 this will look just fine, no scrollbars appear in the webview. Since 1.7.0 you will get a webview where you can scroll vertically and horizontally way beyond the size / length of the visible text. ",1 +"TIMOB-4388","06/06/2011 12:04:31","Implement getPressure in Android view","Can you expose the getPressure value on android devices: http://developer.android.com/reference/android/view/MotionEvent.html#getPressure%28int%29 ",2 +"TIMOB-4341","06/07/2011 08:28:44","2nd instance of application run from a separate process causes NullPointerException","The latest version of the Urban Airship SDK supports a new notification handling process, whereby the PushService can be configured to run in a separate process. When it is configured in that manner it creates a 2nd instance of the application which in turn results in the OnCreate method of TiApplication being called a 2nd time. The result is a NullPointerException occurring somewhere in that method. The workaround for now is to configure the PushService to run within the current application process, but UA recommends running it in a separate process to conserve memory. The following excerpt is from the Urban Airship documentation on how to resolve this issue: Process Management It is possible to run the push service either in your application process or as a separate stand-alone process. We recommend that most applications run it in a separate process. The primary benefit to this approach is that it allows the service to run with a relatively small memory footprint even if your application is resource intensive. In a low memory situation the OS can kill a backgrounded application's main process without disrupting the service. To run the service in a separate process, simply add the ""android:process"" attribute to the service element and provide a name for the process. If the name starts with a colon, the process will be private to your application: Note that when the service runs in a separate process it will create a separate instance of the application when the service is started. This means that your application's onCreate() method will be called again in another context. For most applications this is not an issue, but if the onCreate method invokes any code that should only be called once (such as analytics code that changes state outside of the application) you will want to ensure that it only runs in one of the processes. The following sample illustrates a method for determining which process your application is running within: public class MyApplication extends Application { public void onCreate() { // the main process for this application is named for the package // if this is the default process, run some special code if (isProcess(context.getPackageName()) { //run default process operations here } } private boolean isProcess(String processName) { Context context = getApplicationContext(); ActivityManager actMgr = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE); List appList = actMgr.getRunningAppProcesses(); for (RunningAppProcessInfo info : appList) { if (info.pid == android.os.Process.myPid() && processName.equals(info.processName)) { return true; } } return false; } } ",1 +"TIMOB-4644","06/15/2011 19:01:05","iOS: New properties of Titanium.UI.View beginning with ""get"" always link to main object","New properties of Titanium.UI.View beginning with ""get"" always link to main object {code} var myApp = {}; myApp.ui = {}; myApp.ui.createMyView = function() { var v = Ti.UI.createView({}); v.getSomething = function() { return 100; }; v._getSomething = function() { return 100; }; v.getFood = 200; return v; }; var myView = myApp.ui.createMyView(); alert(myView.getSomething); // [object TiUIView], shold be function alert(myView.getSomething()); // nothing, shold be ""100"" alert(myView._getSomething()); // ""100"" - OK alert(myView.getFood); // [object TiUIView], shold be 200 {code}",3 +"TIMOB-4467","06/21/2011 08:48:32","Platform inconsistencies around custom fonts","The handling of custom fonts is inconsistent across platforms. For iOS it requires a custom Info.plist setting - also, to my knowledge, fonts have to be placed at the top level Resource directory to be usable. For Android, fonts must be placed in Resources/fonts. There's not clear guidance on either platform on how to use these fonts in JavaScript. Consistent handling and documentation on proper use is needed for custom fonts.",1 +"TIMOB-5538","06/27/2011 06:35:55","MobileWeb: Constants FACE_UP, FACE_DOWN, UPSIDE_PORTRAIT don't returned in orientationchange.orientation of Ti.Gesture module","Constants FACE_UP, FACE_DOWN, UPSIDE_PORTRAIT don't returned in orientationchange.orientation of Ti.Gesture module. ",3 +"TIMOB-4510","06/27/2011 18:48:09","Force full re-build discrepancy between Android and iOS - Android requires modified tiapp.xml","Android requires that tiapp.xml is modified (touched) to force a full rebuild, whereas iOS checks for files in the build/iphone directory. To demonstrate this, follow these steps: * cd $PROJECT/build/android * touch ../../tiapp.xml * rm -rf * (delete all files and folders within build/android) * launch app with the following code: {code:lang=javascript} Ti.UI.backgroundColor = ""white""; var win = Ti.UI.createWindow({ exitOnClose: true }); var prod_button = Ti.UI.createButton({ width:81, height:21, top:125, left:150, title:'View Online', font:{fontSize:10,fontWeight:'bold'} }); win.add(prod_button); win.open(); {code} * after successful app launch, replace code above (does not contain maps) with the code below (contains maps) * do *not* touch tiapp.xml * cd $PROJECT/build/android * rm -rf * (delete all files and folders within build/android) * launch app {code:lang=javascript} Ti.UI.backgroundColor = ""white""; var win = Ti.UI.createWindow({ exitOnClose: true }); var mapview = Ti.Map.createView({ mapType: Ti.Map.STANDARD_TYPE, region:{latitude:33.74511, longitude:-84.38993, latitudeDelta:0.5, longitudeDelta:0.5}, animate:true, regionFit:true, userLocation:true }); win.add(mapview); win.open(); {code} The app does not launch, nothing is output to logcat, but the following ""Application Installer"" console errors occur: {code} [INFO] logfile = /home/appcel/Titanium Studio Workspace/testing7/build.log [DEBUG] /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/builder.py simulator testing7 /opt/android-sdk /home/appcel/Titanium Studio Workspace/testing7 com.testing.testing7 6 WVGA800 [INFO] Building testing7 for Android ... one moment [INFO] Titanium SDK version: 1.7.1 (06/17/11 00:13 1293a6d...) [DEBUG] Waiting for device to be ready ... [TRACE] adb devices returned 1 devices/emulators [DEBUG] Device connected... (waited 0 seconds) [DEBUG] waited 0.004323 seconds on emulator to get ready [DEBUG] /opt/android-sdk/platform-tools/adb -e shell ls /data/app/com.testing.testing7*.apk [DEBUG] com.testing.testing7 installed? True [INFO] Fastdev server running, deploying in Fastdev mode [INFO] Copying project resources.. [TRACE] COPYING MODIFIED FILE: /home/appcel/Titanium Studio Workspace/testing7/Resources/app.js => /home/appcel/Titanium Studio Workspace/testing7/build/android/bin/assets/Resources/app.js [TRACE] Generating Java Classes [DEBUG] detected module analytics, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-analytics.jar [DEBUG] detected module android, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-android.jar [DEBUG] adding required library: titanium.jar [DEBUG] adding required library: ti-commons-codec-1.3.jar [DEBUG] adding required library: smalljs.jar [DEBUG] adding required library: jaxen-1.1.1.jar [DEBUG] detected module ui, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-ui.jar [DEBUG] detected module app, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-app.jar [DEBUG] detected module api, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-api.jar [DEBUG] detected module filesystem, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-filesystem.jar [DEBUG] detected module media, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-media.jar [DEBUG] detected module json, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-json.jar [DEBUG] detected module locale, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-locale.jar [INFO] Force including all modules... [DEBUG] detected module android.calendar, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-calendar.jar [DEBUG] detected module media.android, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-media.jar [DEBUG] detected module database, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-database.jar [DEBUG] detected module android.optionmenu, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-ui.jar [DEBUG] detected module ui.clipboard, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-ui.jar [DEBUG] detected module ui.android, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-ui.jar [DEBUG] detected module ui.iphone, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-ui.jar [DEBUG] detected module ui.activityindicator, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-ui.jar [DEBUG] detected module bump, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-bump.jar [DEBUG] adding required library: bump-api.jar [DEBUG] detected module geolocation, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-geolocation.jar [DEBUG] detected module yahoo, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-yahoo.jar [DEBUG] detected module network, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-network.jar [DEBUG] detected module xml, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-xml.jar [DEBUG] detected module utils, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-utils.jar [DEBUG] detected module titanium.stream, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/titanium.jar [DEBUG] detected module titanium, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/titanium.jar [DEBUG] detected module kroll, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/titanium.jar [DEBUG] detected module titanium.codec, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/titanium.jar [DEBUG] detected module accelerometer, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-accelerometer.jar [DEBUG] detected module facebook, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-facebook.jar [DEBUG] detected module network.socket, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-network.jar [DEBUG] detected module contacts, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-contacts.jar [DEBUG] detected module app.android, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-app.jar [DEBUG] detected module app.properties, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-app.jar [DEBUG] detected module android.notificationmanager, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-android.jar [DEBUG] detected module gesture, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-gesture.jar [DEBUG] detected module map, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-map.jar [DEBUG] detected module platform, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-platform.jar [DEBUG] unknown module = ui.iphone.tableviewcellselectionstyle [DEBUG] unknown module = ui.iphone.tableviewstyle [DEBUG] unknown module = ui.iphone.systembuttonstyle [DEBUG] unknown module = ui.currentwindow.app.window [DEBUG] Detecting modules in /home/appcel/Titanium Studio Workspace/testing7/modules [DEBUG] Detecting modules in /home/appcel/.titanium/modules [TRACE] Generating /home/appcel/Titanium Studio Workspace/testing7/build/android/gen/com/testing/testing7/Testing7AppInfo.java [TRACE] Generating /home/appcel/Titanium Studio Workspace/testing7/build/android/AndroidManifest.xml [TRACE] Generating /home/appcel/Titanium Studio Workspace/testing7/build/android/gen/com/testing/testing7/Testing7Application.java [TRACE] Generating /home/appcel/Titanium Studio Workspace/testing7/build/android/gen/com/testing/testing7/Testing7Activity.java [TRACE] Generating /home/appcel/Titanium Studio Workspace/testing7/build/android/.classpath [TRACE] Generating /home/appcel/Titanium Studio Workspace/testing7/build/android/.project [TRACE] Generating /home/appcel/Titanium Studio Workspace/testing7/build/android/default.properties [TRACE] Skipping copying gitignore -> .gitignore because already exists [DEBUG] detected module analytics, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-analytics.jar [DEBUG] detected module android, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-android.jar [DEBUG] adding required library: titanium.jar [DEBUG] adding required library: ti-commons-codec-1.3.jar [DEBUG] adding required library: smalljs.jar [DEBUG] adding required library: jaxen-1.1.1.jar [DEBUG] detected module ui, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-ui.jar [DEBUG] detected module app, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-app.jar [DEBUG] detected module api, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-api.jar [DEBUG] detected module filesystem, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-filesystem.jar [DEBUG] detected module media, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-media.jar [DEBUG] detected module json, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-json.jar [DEBUG] detected module locale, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-locale.jar [INFO] Force including all modules... [DEBUG] detected module android.calendar, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-calendar.jar [DEBUG] detected module media.android, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-media.jar [DEBUG] detected module database, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-database.jar [DEBUG] detected module android.optionmenu, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-ui.jar [DEBUG] detected module ui.clipboard, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-ui.jar [DEBUG] detected module ui.android, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-ui.jar [DEBUG] detected module ui.iphone, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-ui.jar [DEBUG] detected module ui.activityindicator, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-ui.jar [DEBUG] detected module bump, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-bump.jar [DEBUG] adding required library: bump-api.jar [DEBUG] detected module geolocation, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-geolocation.jar [DEBUG] detected module yahoo, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-yahoo.jar [DEBUG] detected module network, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-network.jar [DEBUG] detected module xml, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-xml.jar [DEBUG] detected module utils, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-utils.jar [DEBUG] detected module titanium.stream, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/titanium.jar [DEBUG] detected module titanium, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/titanium.jar [DEBUG] detected module kroll, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/titanium.jar [DEBUG] detected module titanium.codec, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/titanium.jar [DEBUG] detected module accelerometer, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-accelerometer.jar [DEBUG] detected module facebook, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-facebook.jar [DEBUG] detected module network.socket, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-network.jar [DEBUG] detected module contacts, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-contacts.jar [DEBUG] detected module app.android, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-app.jar [DEBUG] detected module app.properties, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-app.jar [DEBUG] detected module android.notificationmanager, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-android.jar [DEBUG] detected module gesture, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-gesture.jar [DEBUG] detected module map, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-map.jar [DEBUG] detected module platform, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-platform.jar [INFO] Compiling Javascript Resources ... [DEBUG] Processing Android resource drawables [DEBUG] Detecting modules in /home/appcel/Titanium Studio Workspace/testing7/modules [DEBUG] Detecting modules in /home/appcel/.titanium/modules [DEBUG] app stylesheet => /home/appcel/Titanium Studio Workspace/testing7/build/android/gen/com/testing/testing7/ApplicationStylesheet.java [DEBUG] copying app icon: /home/appcel/Titanium Studio Workspace/testing7/build/android/bin/assets/Resources/appicon.png [ERROR] Exception occured while building Android project: [ERROR] Traceback (most recent call last): [ERROR] File ""/home/appcel/.titanium/mobilesdk/linux/1.7.1/android/builder.py"", line 1947, in [ERROR] s.build_and_run(False, avd_id, debugger_host=debugger_host) [ERROR] File ""/home/appcel/.titanium/mobilesdk/linux/1.7.1/android/builder.py"", line 1740, in build_and_run [ERROR] self.manifest_changed = self.generate_android_manifest(compiler) [ERROR] File ""/home/appcel/.titanium/mobilesdk/linux/1.7.1/android/builder.py"", line 811, in generate_android_manifest [ERROR] shutil.copy(iconpath, dest_icon) [ERROR] File ""/usr/lib/python2.6/shutil.py"", line 88, in copy [ERROR] copyfile(src, dst) [ERROR] File ""/usr/lib/python2.6/shutil.py"", line 52, in copyfile [ERROR] fsrc = open(src, 'rb') [ERROR] IOError: [Errno 2] No such file or directory: u'/home/appcel/Titanium Studio Workspace/testing7/build/android/bin/assets/Resources/appicon.png' {code} * no improvement is observed when the app is relaunched any number of times * once the tiapp.xml file is touched, a ""Detected tiapp.xml change, forcing full re-build..."" message is output to the console, and the app is launched as expected ",3 +"TIMOB-4521","06/29/2011 09:26:10","Android: Natively Compiled JS Modules","h1. Feature Support natively compiled JavaScript modules like we do on iOS. h2. Example Module The following steps create a compiled module that you could distribute as a zip on iOS. Once implemented, the same process would work on Android. 1. Create a new module for Android: titanium create --platform=android --type=module --name=jsmod --id=ti.jsmod --android=/path/to/android-sdk 2. Drop the below in assets/ti.jsmod.js: {code:title=assets/ti.jsmod.js} exports.createBox = function() { return Ti.UI.createView({ width: 100, height: 100, backgroundColor: 'red' }); }; {code} 3. Drop the below in example/app.js: {code:title=example/app.js} var window = Ti.UI.createWindow({ backgroundColor: 'white' }); window.add(require('ti.jsmod').createBox()); window.open(); {code} 4. Enjoy your luscious red rectangle h2. Workaround Until this feature is available, you can always distribute just the JS file. Developers can utilize it in its un-compiled state, although your code isn't protected from prying eyes. h3. Associated Helpdesk Ticket http://appc.me/c/APP-487811",2 +"TIMOB-4609","07/06/2011 18:06:47","SDK switch causes build errors in TiStudio","Mirror for TISTUD-472 for time/progress tracking on Mobile. Issue is with build scripts/project template.",1 +"TIMOB-4730","07/20/2011 12:30:11","Android 3.2 Simulator behavior on windows is very poor (not launched at all or useless emulator launched)","1.update your sdk install to include 3.2 2.target 3.2 as the run config and launch the emulator results: we see 2 things occur 1.time out with no emulator launched 2. emulator launches, but is useless (half the screen renders, buttons do not work etc) fwiw, lion and 10.6.8 work as expected Also, as per Don this is not a studio or TIMOB issue",2 +"TIMOB-10281","07/20/2011 18:33:39","Android: Intermittent debugger variable fails to stay expanded","1. Import debug_test into TiStudio (attached) 2. From TiStudio go to debug view 3. In the breakpoint window, right-click to Import Breakpoints... 4. Browse to breakpoint-4013.bkpt (attached)_ 5. Run in debug 6. Click 'App event/timer' button (breakpoint hits: app.js:131) 7. Expand 'e' variable 8. Expand 'x' property of 'e' 9. Hightlight 'e' (select in variables pane) 10. Resume (breakpoint hits: app.js:135) Actual: Intermittently, after step 10 the disclosure triangle will collapse unexpectedly on the 'x' property of 'e'. See screen shot. Expected: Both 'x' and 'e' values are fully expanded. ",1 +"TIMOB-4884","07/22/2011 10:38:01","toImage() on device with retina display is pixellated (captured at half resolution)","If you call {{var a = view.toImage()}} on a view, and set an ImageView to that blob i.e. {{imageView.image = a}} on an Iphone with retina display, then the image is displayed at normal resolution and thus is pixelated on an iPhone 4. There is a very simple fix to this already out there in the wild, see [https://github.com/iamyellow/titanium_mobile/|https://github.com/iamyellow/titanium_mobile/commit/b7ac93e257339e60510a88a5767455f6b1120034#iphone/Classes/TiViewProxy.m] I would recommend that change is made to all appropriate UI controls which have a toImage() method. {code:javascript|title=app.js} var win = Titanium.UI.createWindow({ backgroundColor: '#FFF' }); var sourceView = Titanium.UI.createView({ width: 155, left: 5, height: 240, borderWidth: 1, borderColor: '#000' }); sourceView.add(Titanium.UI.createLabel({ text: 'Here is some nice smooth antialised text', font: { fontSize: 20 } })); var targetView = Titanium.UI.createImageView({ width: 155, right: 5, height: 240, borderWidth: 1, borderColor: '#000' }); var btn = Titanium.UI.createButton({ title: 'Copy image to target on right', width: 300, height: 30, bottom: 10 }); btn.addEventListener('click', function() { targetView.image = sourceView.toImage(); }); win.add(btn); win.add(targetView); win.add(sourceView); win.open(); {code} Please remember this issue is only visible when using an iOS 4 Retina Device.",0 +"TIMOB-4800","07/26/2011 18:26:38","Ti.UI.backgroundColor/Ti.UI.backgroundImage not translucent","h3. Setting background on Root Window 1) Create project in TiStudio and replace app.js with {code:JavaScript} Ti.UI.backgroundColor = '#f00'; Ti.UI.backgroundImage = 'KS_nav_ui.png'; var win = Ti.UI.createWindow(); win.open(); {code} (or use attached Resources folder) 2) Launch application Expected: Image appears with a red background. Actual: Only image appears. (See screen shot) Note: Talked to Jon Alter about this. He says it isn't a major issue because he doesn't see a circumstance where someone would set the background this way. It is a parity issue. Setting the background this way works as expected on iOS devices. h3. Setting background on a view. Verify image is shown with a red background. Also verify background color changes when the state of the view changes (ex: focused, selected). {code:JavaScript} var win = Ti.UI.createWindow({ backgroundColor: 'white', layout: 'vertical' }); var colorView = Ti.UI.createView({ width: 400, height: 400, focusable: true, backgroundColor: 'blue', backgroundImage: 'background.png', backgroundSelectedColor: 'red', backgroundFocusedColor: 'yellow', backgroundDisabledColor: 'black' }); win.add(colorView); var disableButton = Ti.UI.createButton({ title: 'Enable/Disable View', width: 150 }); disableButton.on('click', function() { colorView.enabled = !colorView.enabled; }); win.add(disableButton); win.open(); {code} ",2 +"TIMOB-4865","08/01/2011 19:12:44","iOS: imageAsCropped rotates image","imageAsCropped seems to be rotating the image 90 degrees when applied. Before Crop: http://support-admin.appcelerator.com/files/cf1c121c-b9ae-11e0-8901-12313b1264a1/Before_crop.PNG After Crop: http://support-admin.appcelerator.com/files/cf110d22-b9ae-11e0-8901-12313b1264a1/After_crop.PNG Repro Code: {code:javascript} var win = Ti.UI.createWindow(); var currPic = null; var takePic = Ti.UI.createButton({ zIndex: 1000, width: ""90%"", height: 40, title: ""Take picture"" }); var imgView = null; takePic.addEventListener(""click"", function() { if (currPic !== null) { var croppedImg = currPic.imageAsCropped({ x: 0, y: 0, width: currPic.width, height: currPic.height }); imgView.image = croppedImg; } else { Ti.Media.requestCameraPermissions(takePhoto); } }); win.add(takePic); win.open(); function takePhoto(e) { if (!e.success) { Ti.API.error(""No camera permissions granted""); return; } Ti.Media.showCamera({ success: function(event) { takePic.title = ""Crop image""; var image = event.media; var width = image.width / 5; var height = image.height / 5; currPic = image; imgView = Ti.UI.createImageView({ zIndex: 0, width: width, height: height, image: image, top: 40 }); win.add(imgView) }, cancel: function() {}, error: function(error) {}, saveToPhotoGallery: false, mediaTypes: [Ti.Media.MEDIA_TYPE_PHOTO] }); } {code}",5 +"TIMOB-4979","08/10/2011 15:54:11","Android: Expose ""dragstart"" and ""dragend"" event on ScrollView (Parity)","API 11 recently exposed the onDragEvent listener in View, which would allow us to reach parity by exposing the dragStart and dragEnd events on Titanium.UI.ScrollView. http://developer.android.com/reference/android/view/View.html#onDragEvent(android.view.DragEvent)",5 +"TIMOB-5010","08/15/2011 12:18:52","Latest version of Java unusable for building Android projects","1) Download and install latest Java JDK 7 http://www.oracle.com/technetwork/java/javase/downloads/java-se-jdk-7-download-432154.html 2) Create a new Android project and launch to emulator Results: build.log has the following contents Logfile initialized [INFO] logfile = C:\Users\alan\My Documents\Titanium Studio Workspace\Hello\build.log [DEBUG] C:\ProgramData\Titanium\mobilesdk\win32\1.8.0.v20110811101746\android\builder.py simulator Hello C:\Users\alan\android-sdk C:\Users\alan\My Documents\Titanium Studio Workspace\Hello com.appcelerator.hello 17 WVGA854 [INFO] Building Hello for Android ... one moment [ERROR] JDK version 1.7.0 detected, but 1.6 is required ",3 +"TIMOB-5303","08/19/2011 03:01:07","Android: UI view size property values incorrect","h2. Problem The view's size property values are intended to reflect the rendered dimensions. However, if these properties are queried too soon after rendering has completed, the old values will be output. The advice of querying property values within a window open event listener does not work. h2. Test case {code:lang=javascript|title=app.js} var win = Ti.UI.createWindow({ // fullscreen: false, // once fixed, please check with this line uncommented backgroundColor:'red' }); var view = Ti.UI.createView({ backgroundColor:'blue', width:'50', height:50 }); win.add(view); Ti.API.info(""*** Before window open - view.size.width = 50 ***""); Ti.API.info(""view.size w x h: "" + view.size.width + "" x "" + view.size.height); // incorrect view.width = 100; win.addEventListener('open', function(){ Ti.API.info(""*** Window open - view.size.width = 100 ***""); Ti.API.info(""view.size w x h: "" + view.size.width + "" x "" + view.size.height); // incorrect }); Ti.Gesture.addEventListener('orientationchange', function(){ Ti.API.info(""*** orientationchange - view.size.width = 200 ***""); view.width = 200; Ti.API.info(""view.size w x h: "" + view.size.width + "" x "" + view.size.height); // incorrect }); win.open(); {code} h2. Logs {code:lang=none} 1454 AndroidRuntime D >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<< 1454 AndroidRuntime D CheckJNI is ON 60 InputManagerService W Got RemoteException sending setActive(false) notification to pid 1430 uid 10044 1454 AndroidRuntime D --- registering native functions --- 60 ActivityManager I Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.appcelerator.testing10/.Testing10Activity } 60 ActivityManager I Start proc com.appcelerator.testing10 for activity com.appcelerator.testing10/.Testing10Activity: pid=1461 uid=10044 gids={1015, 3003} 1454 AndroidRuntime D Shutting down VM 1454 AndroidRuntime I NOTE: attach of thread 'Binder Thread #3' failed 1461 TiApplication I (main) [0,0] checkpoint, app created. 1461 TiApplication I (main) [536,536] Titanium 1.8.0.1 (2011/12/22 13:09 fbdc96f) 1461 TiFastDev D (main) [164,700] Enabling Fastdev on port 58902 1461 TiFastDev D (main) [10,710] sent tokens successfully 1461 TiFastDev D (main) [1,711] Fastdev session handshake succesful. 1461 TiApplication I (main) [8,719] Titanium Javascript runtime: v8 1461 TiApplication W (main) [68,787] activity stack is emtpy, unable to get current activity 1461 TiRootActivity I (main) [0,0] checkpoint, on root activity create, savedInstanceState: null 1461 TiApplication W (main) [119,119] activity stack is emtpy, unable to get current activity 1461 TiApplication W (main) [1,120] activity stack is emtpy, unable to get current activity 1461 TiApplication W (main) [1,121] activity stack is emtpy, unable to get current activity 1461 TiApplication E (KrollRuntimeThread) [937,1058] APP PROXY: ti.modules.titanium.app.AppModule@44eb3110 1461 TiAssetHelper D Fetching ""app.js"" with Fastdev... 1461 TiAPI I *** Before window open - view.size.width = 50 *** 1461 TiAPI I view.size w x h: 0 x 0 1461 TiAPI I *** Window open - view.size.width = 100 *** 1461 TiAPI I view.size w x h: 0 x 0 1461 TiRootActivity I (main) [0,0] checkpoint, on root activity resume. activity = com.appcelerator.testing10.Testing10Activity@44e76478 60 ActivityManager I Displayed activity com.appcelerator.testing10/.Testing10Activity: 3359 ms (total 3359 ms) 60 WindowManager I Setting rotation to 1, animFlags=1 60 ActivityManager I Config changed: { scale=1.0 imsi=310/260 loc=en_US touch=3 keys=2/1/1 nav=3/1 orien=2 layout=34 uiMode=17 seq=70} 1461 TiAPI I *** orientationchange - view.size.width = 200 *** 1461 TiAPI I view.size w x h: 100 x 50 60 ActivityManager I Config changed: { scale=1.0 imsi=310/260 loc=en_US touch=3 keys=2/1/2 nav=3/1 orien=2 layout=34 uiMode=17 seq=71} 60 WindowManager I Setting rotation to 0, animFlags=0 60 ActivityManager I Config changed: { scale=1.0 imsi=310/260 loc=en_US touch=3 keys=2/1/2 nav=3/1 orien=1 layout=34 uiMode=17 seq=72} 1461 TiAPI I *** orientationchange - view.size.width = 200 *** 1461 TiAPI I view.size w x h: 200 x 50 {code} h2. Discussions See Q/A topic: http://developer.appcelerator.com/question/124426/how-does-dimensions-work#216821 h2. Workaround Using setTimeout allows the size values to be updated to reflect the re-rendered view. ",0.5 +"TIMOB-5162","08/29/2011 16:02:14","iOS: Ti.Database.ResultSet fieldCount is a property beginning in 3.3.0. Update Anvil, KS, etc.","iOS incorrectly has fieldCount as a function fieldCount(). In addition: * The DB tests must be updated to catch mistakes like this going forward, if possible, and also test correct values * The documentation for Ti.Database.ResultSet must be updated",3 +"TIMOB-5233","09/08/2011 11:20:15","Android: Splash screen stretched on the app launch if device in landscape","h5.Problem Splash screen is stretched if window orientation mode is locked up, when launching the app in landscape mode. h5.Target Environment {noformat} Titanium SDK: Mobile 1.7.2 Platform OS: Android Version: 2.1 {noformat} h5.Repro sequence {code:title=app.js} var win1 = Titanium.UI.createWindow({ title:'Tab 1', backgroundColor:'#fff' }); win1.orientationModes = [ Titanium.UI.PORTRAIT]; var label1 = Titanium.UI.createLabel({ color:'#999', text:'I am Window 1', font:{fontSize:20,fontFamily:'Helvetica Neue'}, textAlign:'center', width:'auto' }); win1.add(label1); win1.open(); {code}",0.5 +"TIMOB-5253","09/09/2011 20:45:54","iOS: Extra Border seen in default button on iPad","When a button with no specific style is created, it always has an ""extra border"" on the bottom. This is visible on iPad. Sample Code {noformat} Titanium.UI.setBackgroundColor('black'); var window = Titanium.UI.createWindow({ title:'Hello', backgroundColor:'black' }); var button = Ti.UI.createButton({ width:150, height:50, title:'My Button', top:200, left:100 }); window.add(button); window.open(); {noformat}",0 +"TIMOB-5301","09/18/2011 10:28:48","iOS: iPad Table View w/ Cuts Text Field Off Screen","h1. Problem A table view with a text field doesn't size properly to account for the keyboard in portrait orientation. This will be easier to see in practice, so please take a look at the example. h2. Example Perform the following steps: 1. Drop the following code in an app.js, and run it in the iPad simulator. 2. The app automatically focuses the last text field in the table view, popping up the keyboard. 3. Verify that you can see the text field, and everything looks as it should. 4. Now scroll to the top of the table view. 5. Try to scroll back down so the last text field is visible. The height of the table view is such that you cannot keep the text field on screen. {code:title=app.js} var win = Ti.UI.createWindow({ title: 'Focus Test', backgroundColor: '#fff' }); var rows = []; for (var i = 0; i < 20; i++) { var row = Ti.UI.createTableViewRow({ height: 40 }); row.add(row.textField = Titanium.UI.createTextField({ value: 'Last row focused; Scroll up, and then try to scroll back down.', color: '#000', top: 5, right: 10, bottom: 5, left: 10, borderStyle: Titanium.UI.INPUT_BORDERSTYLE_ROUNDED })); rows.push(row); } win.add(Ti.UI.createTableView({ data: rows })); win.addEventListener('open', function() { rows[rows.length - 1].textField.focus(); }); win.open(); {code}",1 +"TIMOB-5378","09/26/2011 20:05:31","iOS: showCamera leaves a black background if saveToPhotoGallery or allowEditing are true","If you use showCamera and have either allowEditing or saveToPhotoGallery set to true the screen will be black after taking a picture, after the camera disappears. Step 1: run the code below on device Step 2: click on the window Step 3: take a picture Step 4: notice the camera view disappears but the window is still all black Step 5: repeat the above steps with 1.7.2 and it will work fine (not leave a black background) {code:title=app.js} var win = Ti.UI.createWindow({ backgroundColor : 'white' }); win.open(); win.addEventListener('click', function(e) { Titanium.Media.showCamera({ // allowEditing : true, saveToPhotoGallery : true, mediaTypes : [Ti.Media.MEDIA_TYPE_VIDEO, Ti.Media.MEDIA_TYPE_PHOTO], success : function(event) { alert('success'); }, cancel : function() { alert('cancel'); }, error : function() { alert('error'); } }); }); {code} h4. Associated Helpdesk Ticket http://appc.me/c/APP-821739",1 +"TIMOB-5436","10/05/2011 03:03:15","iOS: Expose SystemAlert","h1. Feature Not all sounds that an app plays are media, so we should expose the SystemAlert through the Media module. This will let developers choose the most appropriate way to play a sound. h2. Example Usage {code:title=app.js} var systemAlert = Ti.Media.createSystemAlert({ url: 'bad.wav' }); for (var i = 0; i < 10; i++) { systemAlert.play(); var until = new Date().getTime() + 300; while (until > new Date().getTime()) {} } {code} h2. Example Implementation {code:title=TiMediaSystemAlertProxy.h} #import ""TiProxy.h"" #import ""TiUtils.h"" #import @interface TiMediaSystemAlertProxy : TiProxy { NSURL* url; TiFile *tempFile; SystemSoundID sound; } @property (nonatomic,readonly) NSURL *url; -(void)play:(id)args; @end {code} {code:title=TiMediaSystemAlertProxy.m} #import ""TiMediaSystemAlertProxy.h"" @implementation TiMediaSystemAlertProxy #pragma mark Proxy Lifecycle -(id)init { return [super init]; } -(void)_destroy { if (sound) { AudioServicesDisposeSystemSoundID(sound); } RELEASE_TO_NIL(url); [super _destroy]; } #pragma mark System Sound -(NSURL*)url { return url; } -(void)setUrl:(id)url_ { RELEASE_TO_NIL(url); if ([url_ isKindOfClass:[NSString class]]) { url = [[TiUtils toURL:url_ proxy:self] retain]; if ([url isFileURL]==NO) { // we need to download it and save it off into temp file NSData *data = [NSData dataWithContentsOfURL:url]; NSString *ext = [[[url path] lastPathComponent] pathExtension]; tempFile = [[TiFile createTempFile:ext] retain]; // file auto-deleted on release [data writeToFile:[tempFile path] atomically:YES]; RELEASE_TO_NIL(url); url = [[NSURL fileURLWithPath:[tempFile path]] retain]; } } else if ([url_ isKindOfClass:[TiBlob class]]) { TiBlob *blob = (TiBlob*)url_; //TODO: for now we're only supporting File-type blobs if ([blob type]==TiBlobTypeFile) { url = [[NSURL fileURLWithPath:[blob path]] retain]; } } else if ([url_ isKindOfClass:[TiFile class]]) { url = [[NSURL fileURLWithPath:[(TiFile*)url_ path]] retain]; } if (sound) { AudioServicesDisposeSystemSoundID(sound); } AudioServicesCreateSystemSoundID((CFURLRef)url, &sound); } -(void)play:(id)args { if (url == nil) return; AudioServicesPlayAlertSound(sound); } @end {code} h2. Android Implementation I'm not sure what the corresponding feature on Android would be.",8 +"TIMOB-5438","10/05/2011 08:26:32","Android: Add compiler warning when using maps with Non-Google APIs SDK","Currently, we don't provide a clear error message if the developer attempts to use the Google Maps APIs in their Titanium application with a ""vanilla"" Android SDK version. It would be good to put in some kind of compiler warning to let the developer know that they are trying to run a Maps-enabled application on an Android flavor that does not support it.",3 +"TIMOB-5466","10/07/2011 03:03:19","iOS: Expose Current Window of Tab in Tab Group","h1. Feature Expose a currentWindow feature for a tab so that developers can access the visible window on the tab's stack. h2. Expected Behavior Whenever a window is opened on the tab, currentWindow would point to the newly opened window. The same applies to whenever you close a window: through clicking a back button, programmatically calling tab.close(someWindow), or tapping the tab's button. h2. Why This Is Necessary The end goal of this is to be able to pop back to the root window of a tab group, cleaning up and closing each window along the way. By exposing currentWindow, we give developers access to data we have internally already. h2. Why Name It ""currentWindow""? For parity with Ti.UI.currentWindow. h2. Sample Implementation {code:title=TiUITabProxy.m} -(id)currentWindow { return [current window]; } {code} h2. Sample Documentation {code:title=Tab.yml} ... - name: window description: the root level tab window. all tabs must have at least one root level tab window. type: Titanium.UI.Window - name: currentWindow description: The currently visible window in the tab; the window that was last opened in this tab. type: Titanium.UI.Window permission: read-only ... {code} h2. Sample Consuming Code Drop the following in an app.js. Touch ""S1: Touch Me"" and a series of windows will be popped on to the tab's stack. Then hit ""S2: Touch Me"", and the code will utilize the new currentWindow property to cascade back to the root window. {code:title=app.js} function openWindowOnStack(i) { var win = Ti.UI.createWindow({ title: 'Window ' + i, rightNavButton: Ti.UI.createButton({ title: 'S2: Touch Me' }) }); win.rightNavButton.addEventListener('click', function() { popToRoot(); }); win.addEventListener('open', function() { Ti.API.info('Opened: ' + tab.currentWindow.title); if (i < 4) { openWindowOnStack(i + 1); } }); win.addEventListener('close', function(evt) { Ti.API.info('Closed: ' + evt.source.title); if (evt.source.cascadeClose && !tab.currentWindow.rootWindow) { tab.currentWindow.cascadeClose = true; tab.close(tab.currentWindow, { animated: false }); } }); tab.open(win); } function popToRoot() { tab.currentWindow.cascadeClose = true; tab.close(tab.currentWindow, { animated: false }); } var outer = Ti.UI.createWindow({ title: 'Root Window', rightNavButton: Ti.UI.createButton({ title: 'S1: Touch Me' }), rootWindow: true }); outer.rightNavButton.addEventListener('click', function() { openWindowOnStack(0); }); var tabGroup = Ti.UI.createTabGroup(); var tab = Ti.UI.createTab({ window: outer }); tabGroup.addTab(tab); tabGroup.open(); {code}",0 +"TIMOB-5749","10/13/2011 12:37:16","Android: AndroidManifest.xml not properly created when using Ti.Geolocation events","Using the code below, the appropriate entries are not added to the AndroidManifest.xml file to allow for using location services. {code:lang=javascript} var win = Ti.UI.createWindow(); win.open(); var locationAdded = false; var handleLocation = function(e) { if (!e.error) { Ti.API.info(e.coords); } }; var addHandler = function() { if (!locationAdded) { Ti.Geolocation.addEventListener('location', handleLocation); locationAdded = true; } }; var removeHandler = function() { if (locationAdded) { Ti.Geolocation.removeEventListener('location', handleLocation); locationAdded = false; } }; Ti.Geolocation.accuracy = Ti.Geolocation.ACCURACY_BEST; Ti.Geolocation.preferredProvider = Ti.Geolocation.PROVIDER_GPS; if (Ti.Geolocation.locationServicesEnabled) { addHandler(); var activity = Ti.Android.currentActivity; activity.addEventListener('destroy', removeHandler); activity.addEventListener('pause', removeHandler); activity.addEventListener('resume', addHandler); } else { alert('Please enable location services'); } {code} The expected values of {code:lang=xml} {code} are absent from the generated AndroidManifest.xml. If you add the following line of code into the above code, the AndroidManifest.xml generates just fine. {code:lang=javascript} Ti.Geolocation.getCurrentPosition(function(e) {}); {code}",3 +"TIMOB-5812","10/19/2011 11:52:21","iOS: Support UIMenuController","!http://i.stack.imgur.com/yQKL4.png! Would be a useful feature to have. Already need it for so much. This is something that should be built-in.",8 +"TIMOB-5823","10/19/2011 13:03:42","iOS: Support building to device, directly to the device, skipping iTunes","When building to device, it would be good to build directly to the device rather then building, then having to sync via iTunes. Here is a good jumping off point: http://stackoverflow.com/questions/5010062/xcodebuild-simulator-or-device For those people who wish to sync to iTunes, we will inject a fake ""device ID"" that represents iTunes Sync and this will revert to using the existing mechanism.",8 +"TIMOB-5799","10/19/2011 13:37:50","Android: Child element does not respect opacity of parent","h3. Original test case. A child element attached to a parent with an opacity of 0 is still visible, but should be hidden. {code} var win = Ti.UI.createWindow({ title: ""Window"", backgroundColor: ""#FFF"" }); var view = Ti.UI.createView({ width: 50, height: 50, left: 0, top: 0, backgroundColor: ""transparent"", opacity: 0 }); var img = Ti.UI.createImageView({ image: ""KS_nav_ui.png"", width: 40, height: 40, left: 0, top: 0 }); view.add(img); win.add(view); win.open(); {code} h3. Child and Parent View w/ sliders to control opacity. Try adjusting the opacity of the parent and child views. The child's opacity should be properly composited with that of the parent. As you lower the opacity of the parent, the child should also become more transparent. But if you only lower the child's opacity, the parent should not be affected. {code} var win = Ti.UI.createWindow({ layout: 'vertical', backgroundColor: 'white' }); var parent = Ti.UI.createView({ backgroundColor: ""blue"", width: 200, height: 200 }); win.add(parent); var child = Ti.UI.createView({ backgroundColor: ""black"", width: '50%', height: '50%' }); parent.add(child); function createOpacitySlider(title, view) { var container = Ti.UI.createView({ width: '75%', height: 75, layout: 'horizontal' }); container.add(Ti.UI.createLabel({ text: title, left: 5 })); var slider = Ti.UI.createSlider({ min: 0, max: 100, value: 100 }); container.add(slider); slider.addEventListener('change', function(e) { view.opacity = e.value / 100; }); return container; } win.add(createOpacitySlider('Parent', parent)); win.add(createOpacitySlider('Child', child)); win.open(); {code}",3 +"TIMOB-5817","10/20/2011 02:18:34","Android: keyboard type set as number pad permits input of non-numeric values","h2. Problem New minor version of Titanium SDK has a new look of numeric keyboard. The problem is that it allows input of non-numeric values. h2. Test case How to reproduce the issue: run this example with 1.7.4 version of Titanium SDK, click on text field and type ""*"" or ""#"" symbol. You'll see that they are present in text field, while they shouldn't be present. Compile and run same example with 1.7.3 SDK version and try to do same thing. You'll see that you can't input ""*"" or ""#"" symbols (or any other that is not a number). {code} var win = Ti.UI.createWindow({ modal: true, backgroundColor: '#000' }); var textField = Ti.UI.createTextField({ width: 200, keyboardType: Ti.UI.KEYBOARD_NUMBER_PAD }); win.add(textField); win.open(); {code} Also, it would be nice if there was key in this new keyboard that would minimize keyboard (if that is possible).",3 +"TIMOB-6998","10/21/2011 21:21:17","Tooling: iOS - Xcode build fails for project using a module, when directory exists in the Resources directory with same name as project","h2. Problem Xcode build fails for project when directory exists in the Resources directory with same name as project. This issue *only* occurs for projects with modules. h2. Discussion and Workaround Q&A: [http://developer.appcelerator.com/question/119869/ios] h2. Steps to reproduce 1. Create a Titanium mobile project named ""NameConflict"" 2. Create a directory inside Resources also named ""NameConflict"" 3. Create a JS file inside of the newly created directory 4. Add a module to the tiapp.xml file and place the module inside the project 5. Try to build... in Xcode 3.2.6 you'll get a ""SystemExit: 1"" and in Xcode 4.2 you'll get a ""SystemExit: 65""",5 +"TIMOB-6922","10/23/2011 14:15:03","Android: Network - HTTPClient cannot retrieve non-ascii data","h2. Problem When loading some JSON file (UFT-8) from the web and displaying the data, the Non-Ascii-chars text is garbled. See attached screenshot of this problem on 1.7.2 Note that this works fine on iPhone. The Kitchen Sink Demo of XHR has the same problem. It works on the iPhone but fails on Android. h2. Test case {code:lang=javascript|title=app.js} Ti.UI.setBackgroundColor('#ddd'); var win = Ti.UI.createWindow({}); var loadDataButton = Ti.UI.createButton({ title: ""Let's load UTF-8 from the web!"", width: 260, top: 50, height: 40 }); win.add(loadDataButton); loadDataButton.addEventListener('click', function() { var test1 = loadFromWeb(""http://crossplattformvergleich.dnsalias.org/test.js""); /* file contains in UTF8: { ""result"" : ""áäüÖßÉ?"" } and a comment */ var test2 = loadFromWeb(""http://crossplattformvergleich.dnsalias.org/test2.js""); /* this is a 36-byte file. Appears as 0 bytes on android */ }); function loadFromWeb(url) { var asyncRequest = Ti.Network.createHTTPClient(); asyncRequest.timeout = 30*1000; asyncRequest.open(""GET"", url); asyncRequest.onload = loadCallback; asyncRequest.send(); } function loadCallback() { alert(this.responseText); } win.open(); {code} h2. Discussions Q&A: [problem fetching uft-8 content on android|http://developer.appcelerator.com/question/126712/problem-fetching-uft-8-content-on-android#comment-101538] ",2 +"TIMOB-5837","10/24/2011 07:03:39","Tooling: Adding a module requires a clean build","Currently when a new 3rd party module is added to the code and TiApp.xml file, the user must also do a clean build rather then Titanium detecting that the newly requested module is available and including it automatically",2 +"TIMOB-5884","10/26/2011 10:22:05","iOS: Add support for adding custom URL schemes to Info.plist","On some of my projects, I needed to add additional URL schemes to my iOS applications. Right now that involves manually editing the build/iphone/Info.plist file. With this change I can just make a new property on tiapp.xml and it automatically adds the custom url scheme on the next build. Github push request [https://github.com/appcelerator/titanium_mobile/pull/591]",5 +"TIMOB-5882","10/27/2011 05:17:45","iOS: Add Android Style Picker On iPhone","Titanium currently allows the option to force Android to use an iOS-style ""spinner"" picker. Would it be possible to also allow an option to force iOS to use an Android-style ""flat"" picker? An example use-case for this is when wanting a picker mechanism as part of the layout of a screen (kind of like how an HTML form has a dropdown list), or in any case where the iOS picker's size (216px/pt tall) is too large for the desired UX. Setting this override could use the existing useSpinner option (and default to true on iOS), or replace the useSpinner property with probably a more flexible ""spinnerStyle"" property with options like ""system default"", ""android"", and ""iphone"". The default would be, obviously ""system default"", while the other two options would provide overrides for their opposite platform (ie - setting style:""iphone"" on an iPhone would simply use the default, but setting style:""android"" on an iPhone would trigger the override).",0 +"TIMOB-5892","10/27/2011 18:57:53","iOS: needs to handle thrown exceptions (revisiting)","Bad news! iOS does not forward exceptions properly to the JSCore system, meaning that unhandled exceptions result in crashes. What we need to do is catch exceptions from Kroll invokes (and potentially on other threads via the uncaught exception handler...) and forward them to the JSCore system so that they can be caught on the user side (although if they're uncaught, we need to figure out what to do about that, and how JS responds.) Could be handed off.",0 +"TIMOB-5895","10/28/2011 13:09:03","iOS 7: Setting a tableview row header incorrectly inserts a blank headerTitle","h3.Problem Setting a row's header property as '' now inserts a blank headerTitle. This causes a much bigger gap than usual in grouped tableviews (see attachment). Problem exists only with iOS5. On iOS4 everything works as expected and there is no extra gap. h3.Reproducible Steps 1. Execute the test case h3.Sample Code {code} // this sets the background color of the master UIView (when there are no windows/tab groups on it) Titanium.UI.setBackgroundColor('#000'); // create tab group var tabGroup = Titanium.UI.createTabGroup(); // // create base UI tab and root window // var win1 = Titanium.UI.createWindow({ title:'Tab 1', backgroundColor:'#fff' }); var tab1 = Titanium.UI.createTab({ icon:'KS_nav_views.png', title:'Tab 1', window:win1 }); var label1 = Titanium.UI.createLabel({ color:'#999', text:'I am Window 1', font:{fontSize:20,fontFamily:'Helvetica Neue'}, textAlign:'center', width:'auto' }); var rows = [ {title: 'Row 1'}, {title: 'Row 2'}, {header: '', title: 'Row 3'}, {title: 'Row 4'}, {title: 'Row 1'}, {title: 'Row 2'}, {header: '', title: 'Row 3'}, {title: 'Row 4'} ]; var tableview = Ti.UI.createTableView({ style: Ti.UI.iPhone.TableViewStyle.GROUPED }); tableview.setData(rows); win1.add(tableview); // // create controls tab and root window // var win2 = Titanium.UI.createWindow({ title:'Tab 2', backgroundColor:'#fff' }); var tab2 = Titanium.UI.createTab({ icon:'KS_nav_ui.png', title:'Tab 2', window:win2 }); var label2 = Titanium.UI.createLabel({ color:'#999', text:'I am Window 2', font:{fontSize:20,fontFamily:'Helvetica Neue'}, textAlign:'center', width:'auto' }); win2.add(label2); // // add tabs // tabGroup.addTab(tab1); tabGroup.addTab(tab2); // open tab group tabGroup.open(); {code} h3.Associated HelpDesk Ticket http://appc.me/c/APP-139179",1 +"TIMOB-6995","11/03/2011 10:29:50","Tooling: builder.py + iOS - current directory alias passed as project argument causes i18n directory to be omitted from package","h2. Problem Passing a ""dot"" to denote the current directory (and possibly all relative paths) as an argument to {{builder.py}} causes the {{i18n/}} directory in the root of the project to be omitted from the package. It should work with both relative and absolute project paths h2. Test case The following (using an absolute path as the third argument) builds the project correctly for distribution: {code} $ builder.py ""distribute"" ""5.0"" ""/Users/dawconsdwitservices/Documents/Titanium Studio Workspace/internacionalization"" ""com.appcelerator.internacionalization"" ""internacionalization"" ""F3AAB07B-9197-48F7-A128-77F18BD9CD3D"" ""Appcelerator Distribution Group"" ""/Users/dawconsdwitservices/adhoc"" ""universal"" {code} The following (using ""dot"" as the third argument) causes the {{i18n/}} folder in the root of the project to be omitted from the package. {code} $ cd /Users/dawconsdwitservices/Documents/Titanium Studio Workspace/internacionalization $ builder.py ""distribute"" ""5.0"" ""."" ""com.appcelerator.internacionalization"" ""internacionalization"" ""F3AAB07B-9197-48F7-A128-77F18BD9CD3D"" ""Appcelerator Distribution Group"" ""/Users/dawconsdwitservices/adhoc"" ""universal"" {code} h2. Discussions Helpdesk: [APP-473421|http://support.appcelerator.com/tickets/APP-473421/tickets] h2. Workaround Use an absolute path ",5 +"TIMOB-5989","11/04/2011 09:12:55","Android: Button's image attribute behaves the same as the backgroundImage attribute","h4.Problem The button's image attribute does not work as described in documentation ""the image to display on the button to the left of the title"". Image scales to fill the entire button background. h6.Titanium API - Image property http://developer.appcelerator.com/apidoc/mobile/latest/Titanium.UI.Button-object h6.Tested on Android Emulator v2.2 & Android LG Ally device v2.2.1 h6.Repro sequence {code:title=app.js} var win1 = Titanium.UI.createWindow({ title:'Win 1', backgroundColor:'#fff' }); var button = Titanium.UI.createButton({ top: 60, title : 'Hello', width : '140', height : '40', //backgroundImage : 'button.png', image: 'button.png', //backgroundLeftCap:12, //backgroundTopCap:12, //textAlign: Titanium.UI.TEXT_ALIGNMENT_RIGHT }); win1.add(button); win1.open(); {code} h6.Associated HD ticket APP-379158",2 +"TIMOB-5996","11/04/2011 12:48:25","Android: Modify ScrollableView.removeView() to support integer indexes","h1. Feature On iOS, ScrollableView's ""removeView"" method accepts either a view or an index to a view. Android only supports passing in a view. h2. Solution We need to either remove the undocumented feature from iOS, or add it to Android and to the documentation. h2. How To Reproduce Drop the following in an app.js. If you get a modal error screen or an error in the log, the feature is not present. If you don't, then everything is working as it should. {code:title=app.js} Ti.UI.createScrollableView({ views: [ Ti.UI.createView() ] }).removeView(0); {code}",1 +"TIMOB-6038","11/07/2011 11:36:09","Android: Ti.App.Properties - Cannot retrieve property value set in tiapp.xml ","1. Include the following code into app.js: Titanium.UI.setBackgroundColor('white'); var win = Titanium.UI.createWindow(); var text = '' + Ti.App.Properties.getString('appstate'); alert(text); win.open(); 2. Add the following line to tiapp.xml: DEV 3. Run the app for Android Result: See null in the alert dialog Expected: Should see DEV in the alert dialog Note: This bug is already fixed for iOS -> http://jira.appcelerator.org/browse/TIMOB-4696",0.5 +"TIMOB-6060","11/08/2011 09:04:10","iOS: Blurring Textfield in Modal Window Doesn't Dismiss Keyboard","When using the MODAL_PRESENTATION_FORMSHEET modal style, iOS by default does not dismiss the keyboard even when text fields are blurred. iOS 4.3 and later allows us to override this, but this property is not currently exposed. This will be an iOS-only property on the Ti.UI.Window class, and will not apply to Android. In the mean time, MODAL_PRESENTATION_PAGESHEET is perfectly sufficient. (Not a bug, but leaving old comments) h1. Problem When blurring a text field in a modal window, the keyboard doesn't go away. h2. Reproduction Drop the following in an app.js, and click in the text field. It automatically blurs itself after gaining focus. If you change ""modal: true"" to ""modal: false"", the keyboard will properly hide itself. {code:title=app.js} var win = Ti.UI.createWindow({ backgroundColor: '#fff' }); var textField = Ti.UI.createTextField({ value: '1. Touch Me', height: 34, top: 10, left: 10, right: 10, borderStyle: Ti.UI.INPUT_BORDERSTYLE_ROUNDED }); textField.addEventListener('focus', function () { Ti.API.info('blurring'); textField.blur(); Ti.API.info('blurred'); }); win.add(textField); win.open({ modal: true, modalStyle: Ti.UI.iPhone.MODAL_PRESENTATION_FORMSHEET }); {code}",5 +"TIMOB-6860","11/14/2011 11:46:53","Tooling: Android build process requires ""Google APIs"" even if ""Ti.Map.createView"" only occurs in comments","h2. Problem For a Titanium mobile project on Android, if Titanium sees that you're using a Ti.Map.createView in your project, running on the emulator will fail unless your run configuration indicates use of one of the ""Google APIs"" Android API. I assume it is scanning the source js files for this. That's fine. The problem is that if the only place you have the text ""Ti.Map.createView"" is in a comment (// comment), Titanium does the same thing, and fails to install with the message, {{Package com.testing.testing9 requires unavailable shared library com.google.android.maps; failing!}}. I have to think that there are other things like that too. Titanium's build process should not detect things like this that are in comments, thus triggering the ""Google APIs"" requirement. I do not know if this affects iOS as well. h2. Test case {code:lang=javascript|title=app.js} var win = Ti.UI.createWindow({ layout:'vertical', exitOnClose:true, navBarHidden:true }); var label = Ti.UI.createLabel({ color:'white', text:'Hello World', width:'auto' }); win.add(label); // some day add a Ti.Map.createView to this win.open(); {code} h2. Logs {code} 403 AndroidRuntime D >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<< 403 AndroidRuntime D CheckJNI is ON 403 AndroidRuntime D --- registering native functions --- 87 PackageParser D Scanning package: /data/app/vmdl28961.tmp 87 PackageManager D Scanning package com.testing.testing9 87 PackageManager E Package com.testing.testing9 requires unavailable shared library com.google.android.maps; failing! 87 PackageManager W Package couldn't be installed in /data/app/com.testing.testing9-1.apk 403 AndroidRuntime D Shutting down VM 403 AndroidRuntime I NOTE: attach of thread 'Binder Thread #3' failed {code} ",3 +"TIMOB-6245","11/20/2011 23:43:13","Android: Animations provided to Window.open() and close() on Lightweight windows aren't being applied","animation properties or proxy given to open() or close() methods on a LW window are not supported currently in 1.8. FROM DUPLICATE TIMOB-11790: Note: Heavyweight windows are addressed in TIMOB-10302. h3. Issue Animations on opening a lightweight window are not working. h3. Steps to Reproduce 1. Run the sample code below {noformat} var win = Ti.UI.createWindow({ backgroundColor: 'white' }); win.open(); win.addEventListener('click', function(){ var win1 = Ti.UI.createWindow({ backgroundColor: 'red', left: 320 }); var slide_it_left = Titanium.UI.createAnimation(); slide_it_left.left = 0; slide_it_left.duration = 300; win1.open(slide_it_left); }); {noformat} 2. No animation occurs. The new window is stuck at position 320. ",3 +"TIMOB-6288","11/22/2011 18:21:43","Android (and mobileweb): Move simplejson and mako out of Android-specific folders to make them generally available","Our Mobile Web team needs simplejson, and it's packaged under support/android. There shouldn't be a need for mobileweb to depend on android (i.e., if someone builds the sdk with {{scons mobileweb=true}} they won't even get android.)",0 +"TIMOB-6292","11/23/2011 11:43:05","iOS: Update jscore to iOS 5.0 version (JSCore-903)","Ticket for tracking the update of JSCore to the version shipping with iOS 5.0 (JSCore-903) and documenting the process.",3 +"TIMOB-6423","12/01/2011 15:10:11","Android: Build should accept an alias password","The ADT supports packaging an apk using a specific keystore/password and a key/password. It appears that we require both the keystore and alias passwords to be the same. When I run the builder.py script using the correct keystore password, but use a alias with a different password, the script hangs.",3 +"TIMOB-6438","12/02/2011 13:53:52","iOS : TableView - When running QTS on an iOS device 5.0+, after finishing a test and navigating back to the main list of tests, one cannot run any other tests without terminating the app","Steps to reproduce: Grab the QTS app from git@github.com:appcelerator/titanium_mobile_tests_internal.git 1. Launch the app on an iOS device running iOS 5+ 2. Once the app is running, press any table view row (you don't have to run the test) 3. Navigate back to the main table view with all the tests 4. Press a new table view row Expected result: Able to run tests one after the other Actual result: Pressing the new table view row doesn't launch any new tests",0 +"TIMOB-6463","12/05/2011 14:49:29","iOS:JavaScript Object is incorrectly garbage collected.","Javescript object has been incorrectly garbage collected in some case. h4. Repro Steps. 1. Build a project based on the following code snippet and run the project. 2. Touch the first row textfield then continuously click the ""next"" buttons on the keyboardToolbar for more than 4 times. Expected Result: You should be able to move the focus to the next textfield by clicking the ""next"" button. Actual Result: The buttons on the toolbar get frozen and you can not switch the focus. {code} Titanium.UI.setBackgroundColor('#000'); var datasource=[],textFieldArray=[],table,rowId=1,textFieldId= 0; var win1 = Titanium.UI.createWindow({ title:'Window', barColor:'#808080', }); var scrollView = Ti.UI.createScrollView({ top:0, bottom:0, right:0, left:0, contentWidth:320, contentHeight:'auto', layout:'vertical', backgroundColor:'#fff' }); for (i = 0; i <=12; i++) { var row = createRows(rowId); scrollView.add(row); rowId++; } win1.add(scrollView); function createRows(_rowId) { var flexSpace = Titanium.UI.createButton({ systemButton:Titanium.UI.iPhone.SystemButton.FLEXIBLE_SPACE }); var navButtons = Titanium.UI.createButtonBar({ labels:['Previous','Next'], backgroundColor:'#000', top:100, style:Titanium.UI.iPhone.SystemButtonStyle.BAR, height:25, width:'auto' }); var done = Titanium.UI.createButton({ systemButton:Titanium.UI.iPhone.SystemButton.DONE }); var inputTextField = Titanium.UI.createTextField({ color : '#ff7c00', top : 5, height : 50, textAlign : 'right', width : '25%', hintText : '', left : '65%', right : '8%', keyboardToolbar : [navButtons,flexSpace,done], keyboardToolbarColor : '#898989', returnKeyType : Titanium.UI.RETURNKEY_DEFAULT, borderStyle : Titanium.UI.INPUT_BORDERSTYLE_ROUNDED, keyboardType : Titanium.UI.KEYBOARD_NUMBER_PAD, font : { fontSize : 20, fontColor : '#ff7c00', fontWeight : 'bold', fontFamily : 'Helvetica Neue' } }); inputTextField.rowId=_rowId; textFieldId = textFieldId + 1; inputTextField.id = textFieldId; textFieldArray.push(inputTextField); //prevent inputTextField from being GCed due to a bug. // inputTextField.addEventListener( // 'blur', function(e) { // }); navButtons.addEventListener('click', function(e) { max = textFieldArray.length; if(e.index ===0) { /*Prev Tab*/ if( inputTextField.id ===1) { done.fireEvent('click'); } else { var rowIndex=inputTextField.rowId-1; Ti.API.info(""change focus of row: ""+ rowIndex ); changeFocus(rowIndex,0,textFieldArray); } } else { /*Next Tab*/ if(inputTextField.id === max) { done.fireEvent('click'); } else { var rowIndex=inputTextField.rowId + 1; Ti.API.info(""change focus of row: ""+ rowIndex ); changeFocus(rowIndex,1,textFieldArray) ; } } }); done.addEventListener('click', function() { for(i=0,j=textFieldArray.length;i {code} The formatting and scaling are thrown off entirely, as shown in the attached image file. Removing *anyDensity=false* or disabling gpu rendering resolves the issue, but requires the developer to use 'dp' notation everywhere even if they don't plan to support multiple densities. h2. basic code to reproduce {code} var win = Ti.UI.createWindow({ backgroundColor: '#fff' }); win.open(); {code} With *anyDensity=false* in the tiapp.xml android manifest, this will generate the attached screenshot on a Galaxy nexus running 4.0. If *anyDensity=false* is removed from the manifest, you will get the expected white background covering the whole screen for the window.",1 +"TIMOB-6845","12/22/2011 10:40:21","Android: Ti should include only the used features/libs into a new app","h4. PROBLEM DESCRIPTION For iOS, when you create a new mobile project in Titanium Studio and run it on device, the ipa file it generates is well over 4MB. h4. STEPS TO REPRODUCE 1. Create new mobile project 2. Compile it to device 3. Check the size of the app. h4. ACTUAL RESULTS App bigger than 4MB, even if it's an almost empty app. h4. EXPECTED RESULTS Ti only adding the needed functionality, according to the namespaces used in the app. ",3 +"TIMOB-6946","12/31/2011 07:40:35","Tooling: standardize the location of build.log","Currently the {{build.log}} file is in the project root for Android and {{project/build/iphone/build/}} for iPhone. Could we standardize them, by creating them in, for example, the {{build}} folder, and naming them {{-build.log}}? There may be a better location and naming convention, but hopefully you can see that this would be cleaner and more intuitive than the current situation. ",5 +"TIMOB-7025","01/06/2012 10:39:56","iOS: CommonJS - JavaScript module require()d by a url-based Window can't see Ti.Network","h2. Problem A CommonJS (JavaScript) module which is require()d by a url-based Window (a window created with the 'url' property) from inside of that window's 'open' event tries to access Ti.Network.online, but instead a runtime error is produced: {code} [ERROR] Script Error = Result of expression 'Ti.Network' [undefined] is not an object. {code} Please see the attached project (code repeated at the bottom of this description). It's a 5-step process to expose this error. The attached code has been minimized down from an actual project, so while it may look weird and seem to contain unnecessary steps, keep in mind that this is an excerpt from a real project with a real problem. I have reduced it down to the bare minimum necessary to reproduce the problem. The normal workaround of adding a reference to ""Ti.Network"" in app.js does *not work* in this case. Another problem that is evident in the example: - In app.js, you shouldn't have to reference ""Ti.App"" to get past the use of Ti.App in deep.js, but without that line in app.js, you get the same ""undefined"" error on Ti.App. The problem does *not occur on Android*...the app works fine. h2. Steps to Reproduce - Unzip the attached project and run it to the iPhone simulator. - Look at the console log. - Right after ""** trying Network"", you will see this error {code} [ERROR] Script Error = Result of expression 'Ti.Network' [undefined] is not an object. {code} h2. Expected Result The app should run without error and give the console message ""** Network is there!"". h2. Testcase Code {code:lang=javascript|title=app.js} var Sequencer=require('Sequencer'); Sequencer.SetML('deep',require('deep')); Ti.App; // without this here, the Ti.App in deep.js crashes. Ti.Network; // this workaround doesn't work. var w1=Ti.UI.createWindow({url:'win1.js'}); w1.Sequencer=Sequencer; w1.open(); {code} {code:title=Sequencer.js} Ti.API.info('** Loading Sequencer'); exports.ML={}; exports.SetML=function(Prop,Val) { exports.ML[Prop]=Val; }; exports.GetML=function() { return exports.ML; }; {code} {code:title=deep.js} exports.RegisterWindowLoadEvent=function(TheWindow,OnLoadEvent) { Ti.App.CurrentWindow=TheWindow; Ti.App.CurrentWindow.addEventListener('open',OnLoadEvent); }; {code} {code:title=win1.js} var Sequencer=Ti.UI.currentWindow.Sequencer; deep=Sequencer.GetML().deep; deep.RegisterWindowLoadEvent(Ti.UI.currentWindow,MainWinLoad); function MainWinLoad() { Ti.API.info('** MainWinLoad'); Ti.API.info('** step 1'); var Killer=require('win2'); Ti.API.info('** step 2'); } {code} {code:title=win2.js} Ti.API.info('** trying Network'); if (Ti.Network.online) Ti.API.info('** Network is there!'); Ti.API.info('** done trying Network'); {code} ",0 +"TIMOB-7087","01/10/2012 18:33:15","MobileWeb: Ti.Blob implementation","Need to implement Ti.Blob. Extends Evented. Need to investigate binary data support in browsers. Might try using canvas? Be sure to also test setting the ""data"" property of a WebView.",3 +"TIMOB-7124","01/12/2012 00:30:39","Android: Tab icons are not being shown when are in density folders","Problem: Images in density folders will not show if you re-install the app without rebuilding AND you didn't set ti.android.fastdev property to false. This property is true by default. Note that this bug affect Emulators and Devices. Steps to reproduce: 1. Download and import the attached project, change line 49 in app.js in the test project to 'KS_nav_views.png' (Since the other image isn't included in the proj) 2. Launch emulator/device (uninstall the app if already installed). 3. Install and run the app 4. Observe the tab1 image is showing up correctly. 5. Now uninstall the app from emulator/device, and reinstall/run the app via Titanium Studio's play button. (DO NOT rebuild). ",2 +"TIMOB-7143","01/12/2012 16:00:11","Android: KitchenSink - Platform > Sockets > Connecting Socket - Connect without setting field causes crash","In KitchenSink, Platform > Sockets > Connecting Socket, pressing Connect when the module first loads causes crash. This is not a new behavior, and is a general Android issue. Steps to Reproduce: 1. Launch KitchenSink. 2. Run Platform > Sockets > Connecting Socket. 3. Press 'Connect'. Expected Result: Runtime error. Actual Result: Crash.",0.5 +"TIMOB-7152","01/12/2012 17:09:44","iOS: Memory Leak: Objects created in a Ti.UI.tabGroup are not released when the tabGroup is closed","h3. Problem Objects created in a Ti.UI.tabGroup are not released when the tabGroup is closed. h3. Reproducible steps: 1. Run the code below. 2. Use the instruments application to monitor the memory 3. Click on Open tabgroup button 4. Click on close button Please see TiUITabproxy on the category. It is never released from the memory. h3. Expected behavior: Customer wants to release the memory of a tab. h3. Tested with the next specs: Simulator iPhone 4 Version of the device: 5.0.1 Titanium Studio, build: 1.0.8.201112291658 Titanium SDK: 1.8.0.1 h3.More info: Please see the video attached. h3. Code: {Code} function createTabGroup() { var colors = ['#ff9966', '#99ff66', '#6699ff', '#66ffff', '#ffff66']; function openWindowOnStack(i) { var win = Ti.UI.createWindow( { title : 'Window ' + i, backgroundColor : colors[i] }); win.addEventListener('open', function(evt) { Ti.API.info('Opened: ' + evt.source.title); if(i < 4) { setTimeout(function() { openWindowOnStack(i + 1); }, 500); } }); win.addEventListener('close', function(evt) { Ti.API.info('Closed: ' + evt.source.title); trackClosedWindow(tab1, evt.source); }); openInTab(tab1, win); } var navButton = Ti.UI.createButton( { title : 'Open Windows' }); var outer = Ti.UI.createWindow( { title : 'Root Window', backgroundColor : '#d0d0d0', rightNavButton : navButton }); outer.rightNavButton.addEventListener('click', function() { openWindowOnStack(0); }); function trackClosedWindow(thistab, window) { var windows = thistab.windows || []; for(var w = windows.length - 1; w >= 0; w--) { if(windows[w] == window) { windows[w] = null; windows.splice(w, 1); break; } } thistab.windows = windows; } function closeAllInTab(thistab) { var windows = thistab.windows || []; for(var w = 0; w < windows.length; w++) { windows[w].close(); windows[w] = null; } thistab.windows = windows = []; } function openInTab(thistab, window) { var windows = thistab.windows || []; windows.push(window); thistab.open(window); thistab.windows = windows; } var tabGroup = Ti.UI.createTabGroup(); var tab1 = Ti.UI.createTab( { window : outer, title : 'Touch Me' }); tabGroup.addTab(tab1); var button2 = Ti.UI.createButton( { title : 'close', height : 35, width : 200 }); outer.add(button2); button2.addEventListener('click', function(e) { outer.remove(button2); outer.rightNavButton = null; button2 = null; navButton = null; closeAllInTab(tab1); tabGroup.removeTab(tab1); tab1.window = null; tab1 = null; tabGroup.tabs = null; tabGroup.close(); tabGroup = null; outer.close(); outer = null; Ti.API.info('Closed tab group'); }); return tabGroup; } var win1 = Ti.UI.createWindow( { backgroundColor : '#fff', title : ""Home"" }); var button1 = Ti.UI.createButton( { title : 'Open tabgroup', height : 35, width : 200 }); button1.addEventListener('click', function(e) { var tabGroup1 = createTabGroup(); tabGroup1.open(); Ti.API.info('Opened tab group'); }); win1.add(button1); win1.open(); {Code} h3. Helpdesk APP-443889 ",1 +"TIMOB-7233","01/16/2012 15:35:17","Android: evalJS and evalFile methods deprecated in TiContext","h3.Issue One of the General changes while porting modules to our current SDK 1.8.0.1 was remove TiContext. h6.Customer's remarks Inside my Android module, I have to execute some JavaScript statements in the current context. I was using TiContext to do that in pre-1.8.0.1 versions of SDK. Since TiContext is deprecated where in 1.8.0.1 Android module SDK can I find evalJS() and evalFile() methods? h6.General changes {noformat} TiContext is being replaced, and any implementation utilizing TiContext will take a performance / stability hit compared to using the desired API's directly. In most of the places where TiContext is used as an argument, the TiContext argument can be removed entirely or replaced with an Activity reference. {noformat} h6.evalJS and evalFile methods migrated {code:title=TiContext.java} public Object evalFile(String filename) throws IOException { return evalFile(filename, null, -1); } public Object evalJS(String src) { if (krollBridge == null) { Log.e(LCAT,""on evalJS, evaluator is null and shouldn't be""); } return krollBridge.evalJS(src); } {code} h6.References https://wiki.appcelerator.org/display/guides/Android+Module+Porting+Guide+for+1.8.0.1 ",3 +"TIMOB-7249","01/17/2012 06:53:32","Android: Intent - getData(), getAction(), and getType() do not work","h2. Problem When deciding how an app should handle an incoming Android Intent, knowing the type, action, and data values that were sent with the Intent are critical. If your app only handles one very specific Intent, this is OK, but if you have an app that handles images, URIs, video,, etc... you need to know these values. Right now when an Intent is received via Intent Filter in Titanium, the following lists the values/errors you will get for the data, type, and action functions and properties of an Intent: * {{getData()}} always equals {{null}} * {{getType()}} and {{getAction()}} always throw this exception, despite the fact that logic and documentation dictates that these functions do not require arguments: {code}Uncaught Error: Requires property name as first argument{code} * The {{data}} property always returns {{null}} * The {{action}} and {{type}} properties always return {{undefined}} h2. Proposed Solution The above listed functions and properties need to return the appropriate values for {{data}}, {{type}}, and {{action}} so that developers will know what to do with the Android Intent that they are receiving. Like I said, if you are handling only one type of data as dictated by your Intent Filter, you are OK. But if you plan to handle images, video, etc... and you need to read them from Ti.Android.EXTRA_STREAM, you have no way of knowing which type of Intent you are receiving. Also, I believe the implementation of {{getAction()}} and {{getType()}} need to change so that they do not require a parameter. h2. Test Case {code:javascript} var win = Ti.UI.createWindow({ backgroundColor: '#fff', fullscreen: false, exitOnClose: true }); win.addEventListener('open', function(e) { var intent = Ti.Android.currentActivity.getIntent(); var iname = Ti.Android.EXTRA_STREAM; if (intent && intent.hasExtra(iname)) { Ti.API.info(intent.getAction()); Ti.API.info(intent.getData()); Ti.API.info(intent.getType()); } else { Ti.API.info('No extra named ""' + iname + '"" found in Intent'); } }); win.open(); {code} It will also be necessary to add an intent filter to a custom AndroidManifest.xml to get this test case to receive intents. The only below needs to go in the main activity and will receive all image share intents. You can easily trigger an image share intent by long clicking on an image in the android gallery then select 'share' from the intent list. Then just select your test case app from the list. {code:xml} {code}",0.5 +"TIMOB-7259","01/17/2012 10:58:26","Android: Gesture - orientation change fires on app start when initial orientation is landscape","h2. Problem If initial orientation of the emulator is landscape, two orientationchange events are fired when re-orienting to portrait. Thereafter, it works as expected. The same does not happen when initial orientation is portrait. h2. Test case * set emulator to landscape (CTRL+F11) * launch app with code below {code:lang=javascript|title=app.js} var win = Ti.UI.createWindow({ title: 'Rotate device to test', backgroundColor: 'white', orientationModes: [ Titanium.UI.PORTRAIT, Titanium.UI.UPSIDE_PORTRAIT, Titanium.UI.LANDSCAPE_LEFT, Titanium.UI.LANDSCAPE_RIGHT ], fullscreen: false, // same results regardless of whether its a heavyweight window exitOnClose: true }); Ti.Gesture.addEventListener('orientationchange',function(e){ Titanium.API.info(""orientation changed = "" + Ti.Gesture.orientation + "", is portrait? "" + e.source.isPortrait() + "", is landscape? "" + e.source.isLandscape()); }); win.open(); {code} h2. Logs {code:lang=none} 421 AndroidRuntime D >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<< 421 AndroidRuntime D CheckJNI is ON 422 TiApplication I (main) [0,0] checkpoint, app created. 421 AndroidRuntime D --- registering native functions --- 422 TiApplication I (main) [399,399] Titanium 2.0.0 (2012/03/01 14:01 0ccdf63) 422 TiFastDev D (main) [276,675] Enabling Fastdev on port 46158 422 TiFastDev D (main) [21,696] sent tokens successfully 422 TiFastDev D (main) [1,697] Fastdev session handshake succesful. 422 TiApplication I (main) [24,721] Titanium Javascript runtime: v8 422 TiRootActivity I (main) [0,0] checkpoint, on root activity create, savedInstanceState: Bundle[mParcelledData.dataSize=204] 61 ActivityManager I Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.appcelerator.testing10/.Testing10Activity } 421 AndroidRuntime D Shutting down VM 421 AndroidRuntime I NOTE: attach of thread 'Binder Thread #3' failed 422 TiApplication E (KrollRuntimeThread) [1126,1126] APP PROXY: ti.modules.titanium.app.AppModule@44fc8058 422 TiAssetHelper D Fetching ""app.js"" with Fastdev... 61 ActivityManager I Starting activity: Intent { cmp=com.appcelerator.testing10/org.appcelerator.titanium.TiActivity (has extras) } 422 TiRootActivity I (main) [0,0] checkpoint, on root activity resume. activity = com.appcelerator.testing10.Testing10Activity@44f60a88 422 TiUIView D (main) [440,440] Nativeview is null 422 TiUIView D (main) [44,484] Nativeview is null 61 InputManagerService W Got RemoteException sending setActive(false) notification to pid 401 uid 10040 61 NotificationService W Object died trying to hide notification android.app.ITransientNotification$Stub$Proxy@4509fef8 in package com.appcelerator.testing10 61 ActivityManager W setProcessForeground called on unknown pid: 401 61 ActivityManager I Displayed activity com.appcelerator.testing10/.Testing10Activity: 14070 ms (total 3531 ms) 61 ActivityManager I Displayed activity com.appcelerator.testing10/org.appcelerator.titanium.TiActivity: 701 ms (total 701 ms) 61 ActivityManager I Config changed: { scale=1.0 imsi=310/260 loc=en_US touch=3 keys=2/1/2 nav=3/1 orien=2 layout=34 uiMode=17 seq=27} 422 TiAPI I orientation changed = 2, is portrait? false, is landscape? true 61 WindowManager I Setting rotation to 0, animFlags=0 61 ActivityManager I Config changed: { scale=1.0 imsi=310/260 loc=en_US touch=3 keys=2/1/2 nav=3/1 orien=1 layout=34 uiMode=17 seq=28} 422 TiAPI I orientation changed = 1, is portrait? true, is landscape? false {code} ",1 +"TIMOB-7270","01/17/2012 17:59:26","Report classes used during building for device or production","A useful data point is to find out what classes and modules fall under heavy use and which don't. During the build process for iOS, this information is indirectly gleaned in generating USE_TI_ compiler flags. If Titanium Studio could relay this information back to the cloud, we could have a better idea on what classes we could safely remove or which classes has the best ROI in terms of code fixes.",5 +"TIMOB-7301","01/19/2012 13:49:19","Android: JSS with import and js with include files not working","h3. Actual behavior Working with an app.js with an include an app.jss with a require, and adding labels to the window, those are not getting the styles dictated by the jss files h3. Expected behavior Jss working as used to work on 1.7.6 with the same structure h3. Files {code:title=app.js|borderStyle=solid} var gt = {}; gt.ui={}; Ti.include('/incs/incs.js'); gt.ui.makeWin = function(){ var win1 = Titanium.UI.createWindow({ backgroundColor:'#fff', navBarHidden:true }); var label1 = gt.ui.makeLabel('label1'); var label2 = gt.ui.makeLabel('label2'); win1.add(label1); win1.add(label2); return win1; }; var win = gt.ui.makeWin(); win.open(); {code} {code:title=app.jss|borderStyle=solid} @import 'lay/style.jss'; #label2 { color:'#f0f'; text:'I am Window 2'; fontSize:40; textAlign:'center'; height:80; width:'auto'; } {code} {code:title=incs/incs.js|borderStyle=solid} Ti.API.info('Including the inc file'); gt.ui.makeLabel = function(id) { var label = Titanium.UI.createLabel({ id:id, className:'button' }); return label; }; {code} {code:title=lay/style.jss|borderStyle=solid} #label1 { color:'#f00'; top:0; text-align:'center'; text:'I am label 1'; height:40; width:'auto'; } .button { background-color:'#00f'; } {code}",5 +"TIMOB-7311","01/20/2012 10:15:03","iOS: Change Ti.Network.BonjourService/BonjourBrowser to take a Ti.Network.Socket.TCP object","In order to correctly deprecate (and remove) `Ti.Network.TCPSocket` which has been deprecated since the introduction of better sockets in 1.7.0, without disrupting the ability to use these features, the Bonjour code needs to be updated to take `Ti.Network.Socket.TCP` objects. This should not be a difficult task, although we will need to make developers aware of the change prior to release.",8 +"TIMOB-7319","01/20/2012 14:04:33","Ti API: Label, TextArea support add method on iOS only","See related Q&A Item: http://developer.appcelerator.com/question/130925/about-textaress-methodadd Need to define which controls can/should accept children and which cannot or should not.",1 +"TIMOB-7333","01/23/2012 11:58:02","Allow specification of arbitrary AVD in build/launch scripts","Related to TISTUD-998, right now in Studio you can select (some of) the properties of an AVD (Run->Run Configurations->Titanium Android Emulator) but this isn't configurable enough for some cases (although you can modify an AVD created by Studio in the {{android}} tools, as long as it has the right name). It would be nice to have the feature to select a pre-existing AVD in the run configurations, so that you can use an existing AVD without having Studio create a new one for you. It appears to require build script modifications allowing for the specification of an arbitrary AVD.",2 +"TIMOB-7334","01/23/2012 12:20:25","iOS: EXC_BAD_ACCESS (SIGSEGV) crash while parsing xml","EXC_BAD_ACCESS (SIGSEGV) crash while parsing xml. Occurs 1 times out of 10. Steps to Reproduce: 1. Create new project. 2. Replace app.js with attached app.js. 3. Run app. 4. Press 'load' until app crashes. Expected Result: App should not crash. Actual Result: App crashes. Crash logs attached.",0.5 +"TIMOB-7664","01/23/2012 15:38:06","iOS: Allow for custom Info.plist values via tiapp.xml","It would be great if we didn't have to create our own Info.plist file to override common values. We can already specify android manifest parameters in tiapp.xml. Examples: I need an app with a shorter name for the Home screen (Bundle Display Name) I would like to have a custom url scheme (URL Schemes array) I want to specify all my icon files for a universal app (Icon files) Since Info.plist is an XML file anyway, it seems like the same logic that went into the Android Manifest section of tiapp.xml could be applied here. This would be something *really great* to have in 1.9 to bring parity between iOS & Android.",3 +"TIMOB-7365","01/24/2012 16:25:43","Android: Ti.Media.AudioPlayer.getUrl not exposed as method","Both getUrl, setUrl work on iOS, but only setUrl works on Android. I believe this is just a typo, note missing @Kroll.method annotation: @Kroll.getProperty public String getUrl() { return TiConvert.toString(getProperty(TiC.PROPERTY_URL)); } @Kroll.setProperty @Kroll.method public void setUrl(String url) { if (url != null) { setProperty(TiC.PROPERTY_URL, resolveUrl(null, TiConvert.toString(url))); } ",0.5 +"TIMOB-7368","01/24/2012 16:48:47","Tooling: titanium.py create does not add platform tiapp.xml tags as expected","When 'titanium.py create' is run from the command line, the created project does not contain platform tag information in tiapp.xml file, as would be expected. Note: When the new project is imported into studio, the tags are added based on the presence of the platform-specific Resources sub-folder (i.e., Project/Resources/android). This seems unexpected, but this is how it works as of now. Steps to Reproduce: 1. Run 'titanium.py create' from the terminal using the following arguments: {code} dhydeMBPLion:~ dhyde$ /Users/dhyde/Library/Application\ Support/Titanium/mobilesdk/osx/1.8.1.v20120123161633/titanium.py create --platform=iphone --type=project --dir=/Users/dhyde/Downloads --name=TagTest --id=com.appcelerator.tagtest {code} 2. Inspect tiapp.xml in the new project folder. Expected Result: Deployment target tags would be present. {code} true true true true false {code} Actual Result: No deployment targets exist.",5 +"TIMOB-7391","01/24/2012 18:16:02","Android: Ti.Geolocation.locationServicesEnabled is always false","Ti.Geolocation.locationServicesEnabled always return false even when the Use wireless networks and Use GPS satellites are checked. alert('Please enable location services') h4. Repro Steps Run the below code in the android device {code} var win = Ti.UI.createWindow({ backgroundColor:'white' }); if (Ti.Geolocation.locationServicesEnabled) { //Ti.Geolocation.purpose = 'Get your current location'; } else { alert('Please enable location services'); } win.open(); {\code} ",0.5 +"TIMOB-7393","01/25/2012 06:25:14","As a developer, I want to be able to pass arbitrary arguments to the Android emulator","This is a blocker issue for TISTUD-623. ""When a run/debug configuration is created, we need the ability to pass additional command-line arguments to the android emulator. Specifically, the -scale argument in order to use skins whose full scale causes them to be larger than the screen you are running on. For example, I am using the Motorola MD860 skin for the Atrix 4G whose screen is 960 pixels high. The resulting emulator window is some 1200 pixels high but my screen is only 900 pixels high. If you run the AVD from the AVD Manager, it offers the option to run with a particular screen size which uses the -scale argument. We need the capability to do this in Studio. I would recommend simply adding an extensible option to specify any additional command line arguments. The standard Eclipse launch configurator allows this on the configuration's Target tab but that appears to be disabled in Studio."" I believe we are not allowed to pass arbitrary arguments to the emulator. I could not find a duplicate issue, but if one exists, please mark this as such.",1 +"TIMOB-7412","01/25/2012 16:22:38","Android: V8/Rhino: Animation: Setting animation on a lightweight window makes the window color go transparent","Steps To Reproduce: 1. Run the attached code: {code} Ti.UI.setBackgroundColor('white'); var win = Ti.UI.createWindow({ backgroundColor: 'black' }); var fromColor = '#2d6e32'; var toColor = '#35883b'; var v = Ti.UI.createView({ width: '100dp', height: '100dp', backgroundColor: fromColor }); var b = Ti.UI.createButton({ title: 'Animate', bottom: '10dp', left: '10dp' }); b.addEventListener('click', function() { v.animate({ backgroundColor: toColor, duration: 500 }); }); var b1 = Ti.UI.createButton({ title: 'Reset', bottom: '10dp', right: '10dp' }); b1.addEventListener('click', function() { v.backgroundColor = toColor; v.backgroundColor = fromColor; }); var v1 = Ti.UI.createView({ width : '50dp', height: '50dp', backgroundColor: 'white' }); win.add(v); win.add(b); win.add(b1); win.add(v1); win.open(); {code} 2. Click Animate Actual Result: The window background color became transparent Expected Result: The window background color should stay black Note: Existed in 1.8.0.1 and works in 1.7.5",2 +"TIMOB-7605","01/25/2012 21:00:34","iOS: httpClient file transfers appear to be cached in 1.8.0.1","I'm writing a file-syncing app which requires transfer certain files multiple times into folders to then display the resulting html. This means that some files - like css, js, icon images, etc. - get transferred multiple times. This worked like a charm on 1.7.5. When I upgraded to 1.8.0.1, the SDK now only transfers the file once. The call to httpClient.send appears to work - no error gets thrown, all the callbacks fire as expected - but the actual file that is requested never gets saved where it is told to save. We're using the standard way of transferring files, where 'assetrowsresult' is the results from the database of the source and destination paths of files to be moved: c.open('GET', assetrowsresult.fieldByName('source')); c.file = Titanium.Filesystem.getFile(basepath(current_project) + assetrowsresult.fieldByName('dest')); c.send(); Again, this worked fine in 1.7.5 ... so something changed. I'd be happy just knowing how to turn the cache off for transfers if such a switch exists.",0 +"TIMOB-7424","01/26/2012 10:37:48","Android: Push Notification: Android 3.0+ is not getting notifications when the application has quit","Steps To Reproduce: 1. Run the attached application 2. Launch the application 3. Enable Push 4. Go to UrbanAirship and send a push notification to the APID 5. Force Quit the application 6. Send again Actual: The push is not received Expected: Should receive the push Note: Works on Nexus s (2.3.6)",2 +"TIMOB-7458","01/27/2012 16:35:15","Tooling: api.jsca is generated with invalid xml tags resulting in content assist disparities","Using content assist, in the studio editor, Ti.Media.videoPlayer.repeatMode and other sdk properties have incomplete content assist property descriptions. The api.jsca file in the sdk has invalid tags for these properties in 1.8.0.1 and 1.8.1. Screenshot attached. The xml tags were correct and the properties were properly described in content assist using sdk 1.7.5. Screenshot attached. Steps to Reproduce: 1. Open studio. 2. Create a new project. 3. Select sdk 1.8.0.1 or 1.8.1. 4. In the app.js file, type: {code:title=app.js} var videoPlayer = Ti.Media.createVideoPlayer(); videoPlayer {code} 5. Open content assist. If it is not open by pressing cntrl + space. 6. Next to videoPlayer, type .repeatMode (e.g., videoPlayer.repeatMode) 7. Click on the content assist description for the property. Expected Result: Property description should be fully populated with descriptive elements (i.e., other properties). Part of the description should read: 'Defaults to Titanium.Media.VIDEO_REPEAT_MODE_NONE.' Actual Result: There are holes in the description. Part of the description reads: 'Defaults to .'",1 +"TIMOB-7467","01/30/2012 10:14:16","iOS: Map Annotation Memory Leak","h4. PROBLEM DESCRIPTION User added and removed annotations from the map, it was releasing the TiMapAnnotationProxy but not the TiMapPinAnnotationView. It kept them ""Living"" and continued to add to their live bytes instead of moving the old ones into ""Transitory"". h4. ACTUAL BEHAVIOR TiMapPinAnnotationView is not being released. h4. EXPECTED BEHAVIOR TiMapPinAnnotationView should be released when not needed. h4. TEST CASE {code} var win = Ti.UI.createWindow({ title:'Map' }), map = Ti.Map.createView({ region:{ latitude:36, latitudeDelta:5, longitude:-93, longitudeDelta:5 }, toggled:false, userLocation:false }), toggleAnnos = function(e){ var lat = 31, lng = (e.source.toggled ? -98 : -89), annos = []; for(i=0;i<10;i++){ annos.push({latitude:lat,longitude:lng}); lat++; if(e.source.toggled){ lng++; }else{ lng--; } } e.source.removeAllAnnotations(); e.source.addAnnotations(annos); e.source.toggled = !e.source.toggled; }; win.add(map); win.open(); map.addEventListener('regionChanged',toggleAnnos); {code} h4. COMMUNITY DISCUSSION http://developer.appcelerator.com/question/131291/map-annotation-memory-leak ",8 +"TIMOB-7486","01/31/2012 15:08:53","iOS - on modal window orientation misplaces children","h3. The Problem: When the window changes orientation, if it's modal, it's children end up behind the nav bar. h3. Code Sample: {code} var win = Ti.UI.createWindow({ orientationModes:[ Titanium.UI.PORTRAIT, Titanium.UI.UPSIDE_PORTRAIT, Titanium.UI.LANDSCAPE_LEFT, Titanium.UI.LANDSCAPE_RIGHT ] }); var view = Ti.UI.createView({ backgroundColor:'white' }); var label = Ti.UI.createLabel({ top:0, height:10, text:'lalalalala' }); view.add(label); win.add(view); win.open({modal:true}); {code} h3. To Reproduce: Run the code above in app.js and rotate the device/simulator h3. Behavior: - What happens: View with the label with text ""lalalala"" ends up under the navbar and invisible to the user - What has to happen: View containing the label has to resize accordingly",0.5 +"TIMOB-7536","02/03/2012 10:32:28","when using titanium ""create"" from command line to create a new ios module it fails to correctly configure titanium.xcconfig file for OSX lion","when using titanium ""create"" from command line to create a new ios module it fails to correctly configure titanium.xcconfig The TITANIUM_SDK is incorrect for OSX lion it should have a ~ in front of the path.",1 +"TIMOB-7555","02/06/2012 14:26:55","iOS: Titanium.UI.Button: touchmove event fails to fire","Button touchmove event fails to fire. Steps to Reproduce: 1. Run code. {code:title=app.js} var win = Ti.UI.createWindow({backgroundColor:'white'}); var button = Ti.UI.createButton({width:'200',height:'200'}); button.addEventListener('touchmove',function(){ Ti.API.info('touchmove fired'); }); button.addEventListener('touchstart',function(){ Ti.API.info('touchstart fired'); }); button.addEventListener('touchend',function(){ Ti.API.info('touchend fired'); }); button.addEventListener('touchcancel',function(){ Ti.API.info('touchcancel fired'); }); button.addEventListener('click',function(){ Ti.API.info('click fired'); }); button.addEventListener('dblclick',function(){ Ti.API.info('dblclick fired'); }); win.add(button); win.open(); {code} 2. Press button, move, and release. Expected Result: Console should output three event types: 'touchstart', 'touchmove', 'touchend'. Actual Result: No 'touchmove' is printed.",0 +"TIMOB-7559","02/06/2012 16:36:11","iOS: CommonJS require: undeclared variable referenced from module fails to generate error","Undeclared variables referenced from a module fail to generate an error. Android does generate the error. Screenshot attached. The undeclared variable can then be used in further logic, such as adding it to a window. Screenshot attached. If an undeclared variable is used in the module itself, there is an error. If an undeclared variable is returned from an exports function-call, there is an error. If an undeclared variable is defined as a return value in an exports function, but the function is never called, there is no error. If an undeclared variable is returned from an exports function-call and assigned to a new variable outside the module, there is no error, and the variable can continue to be used. Steps to Reproduce: 1. Run Code (also attached): {code:title=app.js} var undeclaredVar = require('Module').getUndeclaredVar(); Ti.UI.createWindow().add(undeclaredVar); {code} {code:title=Module.js} exports.getUndeclaredVar = function() { return undeclaredVar; }; {code} Expected Result: Runtime error indicating undeclared variable. Actual Result: No runtime error.",2 +"TIMOB-7560","02/06/2012 16:52:12","Android: Invalid package names do not produce meaningful error messages.","If an invalid app id is created, Android compilation phase just gives a generic ""Error generating R.java from manifest"" error message. A meaningful error message should be displayed. Example invalid app ids: com com.123 1com.com",5 +"TIMOB-7562","02/06/2012 18:27:26","iOS: Titanium.UI.View: view with layout property set to horizontal or vertical does not display children","When the layout property of a View is set to 'vertical' or 'horizontal', children do not display. Works on Android. Tested on Views and Windows using Labels, TextFields, and Buttons. Steps to Reproduce: 1. Run Code: {code:title=app.js} var win = Ti.UI.createWindow({ backgroundColor:'red', layout:'horizontal' }); var left = Ti.UI.createLabel({ title:'Left', backgroundColor:'blue', color:'black', width:'50%', height:'100%' }); var right = Ti.UI.createLabel({ title:'Right', backgroundColor:'green', color:'black', width:'50%', height:'100%' }); win.add(left); win.add(right); win.open(); {code} Expected Result: There should be a blue bar and a green bar (two labels in a horizontal layout). Screenshot attached. Actual Result: Red background (only the window background). Screenshot attached.",0 +"TIMOB-7564","02/06/2012 18:46:44","iOS: user should be able to run the app on device directly inside the Studio","User should be able to run the app directly on real iOS device from inside the Titanium Studio. Current procedure involve creating a binary for iTunes and then use Xcode (set up with the correct provisioning profile and certificates) to actually run the app on the device, making it a long procedure.",5 +"TIMOB-8472","02/08/2012 13:29:18","Android: setting backgroundImage of TableViewRow to null or empty string crashes app","h6.Problem Setting the backgroundImage property of a TableViewRow to null crashes the app with a NullPointerException/force close. Setting backgroundImage to an empty string locks up the app (which will eventually crash if you keep clicking or try to back out). h6.Rationale This is a problem because we have the need to apply a background image to a row, and then at some point later remove that background image completely. h6.Tested on Droid Razr 2.3.5 Android 2.2 emulator h6.Runtime engines V8/Rhino h6.Reproduction steps 1. Drop the following app.js code into a new project - initially, the row has no background image (property no specified) 2. click the row once...a background image appears (and the caption changes) 3. click the row again...a Force Close messaage appears on the screen, and a NullPointerException appears in the console if you repeat the test with the ""1st test"" line commented out and the ""2nd test"" line uncommented, the app will freeze (nothing new appears in the console window) and then crash if you click the row again or try to ""back"" out. h6.Repro sequence {code} var win1 = Ti.UI.createWindow({ backgroundColor:'black' }); var TheListBox=Ti.UI.createTableView({width:'auto'}); var BIRow=Ti.UI.createTableViewRow({color:'white', title:'No background image...click to toggle'}); TheListBox.appendRow(BIRow); win1.open(); win1.add(TheListBox); BIRow.addEventListener('click',ToggleBI); function ToggleBI() { if (!BIRow.backgroundImage) { BIRow.backgroundImage='appicon.png'; BIRow.title='Titanium background image...click to toggle'; } else { BIRow.backgroundImage=null; // 1st test...NullPointerException //BIRow.backgroundImage=''; // 2nd test...lockup/freeze...crash on next click BIRow.title='No background image...click to toggle'; } } {code} h6.Console output {noformat} cation: (main) [34,34] Titanium 1.8.1 (2012/01/27 17:31 a24502a) 03-31 22:59:19.411 5847 5847 I TiApplication: (main) [52,86] Titanium Javascript runtime: v8 03-31 22:59:19.411 5847 5855 D dalvikvm: Trying to load lib /data/data/com.appcelerator.test/lib/libstlport_shared.so 0x4051cf58 03-31 22:59:19.411 5847 5855 D dalvikvm: Added shared lib /data/data/com.appcelerator.test/lib/libstlport_shared.so 0x4051cf58 03-31 22:59:19.411 5847 5855 D dalvikvm: No JNI_OnLoad found in /data/data/com.appcelerator.test/lib/libstlport_shared.so 0x4051cf58, skipping init 03-31 22:59:19.411 5847 5855 D dalvikvm: Trying to load lib /data/data/com.appcelerator.test/lib/libkroll-v8.so 0x4051cf58 03-31 22:59:19.419 5847 5855 D dalvikvm: Added shared lib /data/data/com.appcelerator.test/lib/libkroll-v8.so 0x4051cf58 03-31 22:59:19.442 5847 5847 W TiApplication: (main) [38,124] activity stack is emtpy, unable to get current activity 03-31 22:59:19.442 5847 5847 I TiRootActivity: (main) [0,0] checkpoint, on root activity create, savedInstanceState: null 03-31 22:59:19.513 5847 5847 W TiApplication: (main) [70,70] activity stack is emtpy, unable to get current activity 03-31 22:59:19.513 5847 5847 W TiApplication: (main) [1,71] activity stack is emtpy, unable to get current activity 03-31 22:59:19.513 5847 5847 W TiApplication: (main) [0,71] activity stack is emtpy, unable to get current activity 03-31 22:59:19.716 5847 5855 E TiApplication: (KrollRuntimeThread) [201,272] APP PROXY: ti.modules.titanium.app.AppModule@405ac7e0 03-31 22:59:19.864 5847 5847 D dalvikvm: GC_EXTERNAL_ALLOC freed 490K, 45% free 3304K/5959K, external 2741K/2773K, paused 36ms 03-31 22:59:19.911 5847 5847 I TiRootActivity: (main) [0,0] checkpoint, on root activity resume. activity = com.appcelerator.test._1bestpracticesActivity@40594d48 03-31 22:59:19.942 509 722 W InputManagerService: Starting input on non-focused client com.android.internal.view.IInputMethodClient$Stub$Proxy@4092bfd8 (uid=10035 pid=890) 03-31 22:59:19.950 509 801 I gralloc : Allocated 0x660072 size 6488161 03-31 22:59:19.997 509 604 I ActivityManager: Displayed com.appcelerator.test/._1bestpracticesActivity: +743ms 03-31 22:59:21.122 509 509 I gralloc : Allocated 0x660072 size 6488161 03-31 22:59:23.349 509 603 I AlarmManager: sending alarm Alarm{4067a338 type 0 com.android.vending} 03-31 22:59:23.771 1836 1838 D dalvikvm: GC_CONCURRENT freed 149K, 45% free 4022K/7239K, external 2357K/2773K, paused 1ms+1ms 03-31 22:59:23.825 1836 1836 D Finsky : [1] 5.onFinished: Installation state replication succeeded. 03-31 22:59:24.458 509 603 I AlarmManager: sending alarm Alarm{40bd1650 type 0 com.google.android.gsf} 03-31 22:59:24.481 897 4041 I EventLogService: Aggregate from 1333254564412 (log), 1333254564412 (data) 03-31 22:59:25.872 509 600 D BatteryTempPolicy: updateBatteryTemp temperature = 310, Threshhold = 3 03-31 22:59:25.880 258 495 E NetlinkListener: ignoring non-kernel netlink multicast message 03-31 22:59:25.880 256 283 E NetlinkListener: ignoring non-kernel netlink multicast message 03-31 22:59:25.880 254 291 E NetlinkListener: ignoring non-kernel netlink multicast message 03-31 22:59:25.880 258 584 E NetlinkListener: ignoring non-kernel netlink multicast message 03-31 22:59:25.911 664 664 D StatusBarPolicy: handleBatteryUpdate 03-31 22:59:30.997 890 890 D dalvikvm: GC_EXPLICIT freed 527K, 49% free 4499K/8775K, external 8803K/10851K, paused 76ms 03-31 22:59:36.005 2207 2207 D dalvikvm: GC_EXPLICIT freed 15K, 38% free 4178K/6663K, external 2357K/2773K, paused 75ms 03-31 22:59:40.989 2281 2281 D dalvikvm: GC_EXPLICIT freed 8K, 44% free 3173K/5575K, external 2357K/2773K, paused 57ms 03-31 22:59:46.005 2082 2082 D dalvikvm: GC_EXPLICIT freed 299K, 42% free 3443K/5895K, external 2357K/2773K, paused 72ms 03-31 22:59:49.552 5847 5886 W TiAnalyticsSvc: (Thread-13) [29641,29641] Analytics Service Started 03-31 22:59:49.575 5847 5886 I TiAnalyticsSvc: (Thread-13) [26,29667] Network unavailable, can't send analytics 03-31 22:59:49.575 5847 5886 W TiAnalyticsSvc: (Thread-13) [0,29667] Stopping Analytics Service 03-31 22:59:54.606 4351 4351 D dalvikvm: GC_EXPLICIT freed 11K, 42% free 3131K/5379K, external 2357K/2773K, paused 58ms 03-31 22:59:59.630 2191 2191 D dalvikvm: GC_EXPLICIT freed 163K, 47% free 4043K/7559K, external 2357K/2773K, paused 78ms 03-31 22:59:59.997 509 603 I AlarmManager: sending alarm Alarm{40d99778 type 1 android} 03-31 23:00:05.075 2216 2216 D dalvikvm: GC_EXPLICIT freed 17K, 44% free 3042K/5379K, external 2357K/2773K, paused 24ms 03-31 23:00:10.099 2226 2226 D dalvikvm: GC_EXPLICIT freed 6K, 44% free 3022K/5379K, external 2357K/2773K, paused 42ms 03-31 23:00:10.552 5847 5855 W TypeConverter: jsValueToJavaObject returning null 03-31 23:00:10.552 5847 5847 D AndroidRuntime: Shutting down VM 03-31 23:00:10.552 5847 5847 W dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x4001e560) 03-31 23:00:10.560 5847 5847 E TiApplication: (main) [20975,50642] Sending event: exception on thread: main msg:java.lang.NullPointerException; Titanium 1.8.1,2012/01/27 17:31,a24502a 03-31 23:00:10.560 5847 5847 E TiApplication: java.lang.NullPointerException 03-31 23:00:10.560 5847 5847 E TiApplication: at ti.modules.titanium.ui.widget.tableview.TiBaseTableViewItem.setBackgroundFromProxy(TiBaseTableViewItem.java:182) 03-31 23:00:10.560 5847 5847 E TiApplication: at ti.modules.titanium.ui.widget.tableview.TiTableViewRowProxyItem.setRowData(TiTableViewRowProxyItem.java:213) 03-31 23:00:10.560 5847 5847 E TiApplication: at ti.modules.titanium.ui.widget.tableview.TiTableViewRowProxyItem.setRowData(TiTableViewRowProxyItem.java:84) 03-31 23:00:10.560 5847 5847 E TiApplication: at ti.modules.titanium.ui.widget.tableview.TiTableView$TTVListAdapter.getView(TiTableView.java:210) 03-31 23:00:10.560 5847 5847 E TiApplication: at android.widget.AbsListView.obtainView(AbsListView.java:1435) 03-31 23:00:10.560 5847 5847 E TiApplication: at android.widget.ListView.makeAndAddView(ListView.java:1824) 03-31 23:00:10.560 5847 5847 E TiApplication: at android.widget.ListView.fillSpecific(ListView.java:1365) 03-31 23:00:10.560 5847 5847 E TiApplication: at android.widget.ListView.layoutChildren(ListView.java:1651) 03-31 23:00:10.560 5847 5847 E TiApplication: at android.widget.AbsListView.onLayout(AbsListView.java:1286) 03-31 23:00:10.560 5847 5847 E TiApplication: at android.view.View.layout(View.java:7184) 03-31 23:00:10.560 5847 5847 E TiApplication: at android.widget.FrameLayout.onLayout(FrameLayout.java:338) 03-31 23:00:10.560 5847 5847 E TiApplication: at android.view.View.layout(View.java:7184) 03-31 23:00:10.560 5847 5847 E TiApplication: at org.appcelerator.titanium.view.TiCompositeLayout.onLayout(TiCompositeLayout.java:382) 03-31 23:00:10.560 5847 5847 E TiApplication: at android.view.View.layout(View.java:7184) 03-31 23:00:10.560 5847 5847 E TiApplication: at org.appcelerator.titanium.view.TiCompositeLayout.onLayout(TiCompositeLayout.java:382) 03-31 23:00:10.560 5847 5847 E TiApplication: at android.view.View.layout(View.java:7184) 03-31 23:00:10.560 5847 5847 E TiApplication: at android.widget.FrameLayout.onLayout(FrameLayout.java:338) 03-31 23:00:10.560 5847 5847 E TiApplication: at android.view.View.layout(View.java:7184) 03-31 23:00:10.560 5847 5847 E TiApplication: at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1254) 03-31 23:00:10.560 5847 5847 E TiApplication: at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1130) 03-31 23:00:10.560 5847 5847 E TiApplication: at android.widget.LinearLayout.onLayout(LinearLayout.java:1047) 03-31 23:00:10.560 5847 5847 E TiApplication: at android.view.View.layout(View.java:7184) 03-31 23:00:10.560 5847 5847 E TiApplication: at android.widget.FrameLayout.onLayout(FrameLayout.java:338) 03-31 23:00:10.560 5847 5847 E TiApplication: at android.view.View.layout(View.java:7184) 03-31 23:00:10.560 5847 5847 E TiApplication: at android.view.ViewRoot.performTraversals(ViewRoot.java:1180) 03-31 23:00:10.560 5847 5847 E TiApplication: at android.view.ViewRoot.handleMessage(ViewRoot.java:1914) 03-31 23:00:10.560 5847 5847 E TiApplication: at android.os.Handler.dispatchMessage(Handler.java:99) 03-31 23:00:10.560 5847 5847 E TiApplication: at android.os.Looper.loop(Looper.java:130) 03-31 23:00:10.560 5847 5847 E TiApplication: at android.app.ActivityThread.main(ActivityThread.java:3859) 03-31 23:00:10.560 5847 5847 E TiApplication: at java.lang.reflect.Method.invokeNative(Native Method) 03-31 23:00:10.560 5847 5847 E TiApplication: at java.lang.reflect.Method.invoke(Method.java:507) 03-31 23:00:10.560 5847 5847 E TiApplication: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:840) 03-31 23:00:10.560 5847 5847 E TiApplication: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:598) 03-31 23:00:10.560 5847 5847 E TiApplication: at dalvik.system.NativeStart.main(Native Method) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: FATAL EXCEPTION: main 03-31 23:00:10.591 5847 5847 E AndroidRuntime: java.lang.NullPointerException 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at ti.modules.titanium.ui.widget.tableview.TiBaseTableViewItem.setBackgroundFromProxy(TiBaseTableViewItem.java:182) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at ti.modules.titanium.ui.widget.tableview.TiTableViewRowProxyItem.setRowData(TiTableViewRowProxyItem.java:213) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at ti.modules.titanium.ui.widget.tableview.TiTableViewRowProxyItem.setRowData(TiTableViewRowProxyItem.java:84) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at ti.modules.titanium.ui.widget.tableview.TiTableView$TTVListAdapter.getView(TiTableView.java:210) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at android.widget.AbsListView.obtainView(AbsListView.java:1435) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at android.widget.ListView.makeAndAddView(ListView.java:1824) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at android.widget.ListView.fillSpecific(ListView.java:1365) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at android.widget.ListView.layoutChildren(ListView.java:1651) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at android.widget.AbsListView.onLayout(AbsListView.java:1286) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at android.view.View.layout(View.java:7184) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at android.widget.FrameLayout.onLayout(FrameLayout.java:338) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at android.view.View.layout(View.java:7184) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at org.appcelerator.titanium.view.TiCompositeLayout.onLayout(TiCompositeLayout.java:382) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at android.view.View.layout(View.java:7184) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at org.appcelerator.titanium.view.TiCompositeLayout.onLayout(TiCompositeLayout.java:382) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at android.view.View.layout(View.java:7184) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at android.widget.FrameLayout.onLayout(FrameLayout.java:338) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at android.view.View.layout(View.java:7184) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1254) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1130) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at android.widget.LinearLayout.onLayout(LinearLayout.java:1047) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at android.view.View.layout(View.java:7184) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at android.widget.FrameLayout.onLayout(FrameLayout.java:338) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at android.view.View.layout(View.java:7184) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at android.view.ViewRoot.performTraversals(ViewRoot.java:1180) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at android.view.ViewRoot.handleMessage(ViewRoot.java:1914) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:99) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at android.os.Looper.loop(Looper.java:130) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:3859) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at java.lang.reflect.Method.invokeNative(Native Method) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:507) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:840) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:598) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at dalvik.system.NativeStart.main(Native Method) 03-31 23:00:10.599 509 783 W ActivityManager: Force finishing activity com.appcelerator.test/._1bestpracticesActivity 03-31 23:00:10.708 509 526 D dalvikvm: GC_EXTERNAL_ALLOC freed 1343K, 36% free 9055K/14023K, external 10065K/10188K, paused 85ms 03-31 23:00:10.724 509 526 W ApplicationContext: Unable to create files directory 03-31 23:00:10.747 509 526 I gralloc : Allocated 0x61663d64 size 2103800684 03-31 23:00:11.099 509 524 W ActivityManager: Activity pause timeout for HistoryRecord{40a2c3d8 com.appcelerator.test/._1bestpracticesActivity} 03-31 23:00:11.099 509 524 I ActivityManager: No longer want amep.games.af_final:remote (pid 4351): hidden #21 03-31 23:00:11.122 890 890 D ActivitityRenderTarget: onResume 03-31 23:00:11.177 890 5830 W IMGSRV : eglglue.c:778: InitContext: ignoring buffer type CBUF_TYPE_PDS_VERT_SECONDARY_PREGEN_BUFFER 03-31 23:00:11.192 509 515 I gralloc : Allocated 0x660072 size 6488161 03-31 23:00:11.294 509 873 I gralloc : Allocated 0x660072 size 6488161 03-31 23:00:11.349 509 722 I gralloc : Allocated 0x660072 size 6488161 03-31 23:00:11.356 509 820 W ActivityManager: Scheduling restart of crashed service amep.games.af_final/com.appenda.AppNotify in 5000ms 03-31 23:00:11.599 509 524 I ActivityManager: No longer want com.motorola.im.service (pid 4333): hidden #21 03-31 23:00:11.622 509 827 W ActivityManager: Scheduling restart of crashed service com.motorola.im/.service.RemoteImService in 14734ms 03-31 23:00:11.731 509 526 I gralloc : Allocated 0x61663d64 size 2103800684 {noformat} h6.API docs http://developer.appcelerator.com/apidoc/mobile/latest/Titanium.UI.TableViewRow.backgroundImage-property.html ",1 +"TIMOB-7584","02/08/2012 18:48:03","Android: opening a new window, background color is briefly displayed before objects are added to the screen","h2. Problem When opening a new window, the background color of the new window is displayed for a brief moment and then objects are drawn and added to the screen. This is happening from 1.8.0.1 - it's not reproducible on 1.7.5. Opening the new window on 1.8.0.1 with V8 is still overall faster than on 1.7.5 (around 4-5 times faster, something around 120ms against 500ms). h2. Steps to reproduce The behavior is noticeable especially on the emulator (since is less reactive). {code:lang=javascript|title=app.js} var win = Ti.UI.createWindow({ navBarHidden : true, backgroundColor : 'green', }); function createNewWin() { var win2 = Ti.UI.createWindow({ navBarHidden : true, backgroundColor : 'black', }); for( i = 0; i < 20; i++) { var view = Ti.UI.createView({ backgroundColor : 'blue', }); win2.add(view); } return win2; } var button = Ti.UI.createButton({ title : 'Open New Win', width : 150, height : 60, top : 20 }); win.add(button); button.addEventListener('click', function() { var win3 = createNewWin(); win3.open(); }); win.open(); {code} h2. Link Ticket related: http://support-admin.appcelerator.com/display/APP-175314",3 +"TIMOB-7586","02/09/2012 10:41:56","iOS: image saved to filesystem using toImage() loses it's transparency","h2. Problem Saving an image to the filesystem using toImage() method, does not keep the transparent property of the image h2. Steps to reproduce See attached code {code:lang=javascript|title=app.js} var window = Ti.UI.createWindow({ backgroundColor:'#ff0' }); var view = Ti.UI.createImageView({ image:'KS_nav_ui.png', // var view = Ti.UI.createView({ backgroundColor:'transparent', borderWidth:2, borderColor:'#f00', width:100, height:100, top:10 }); window.add(view); var image = Ti.Filesystem.getFile(Ti.Filesystem.applicationDataDirectory, 'tst.png'); image.write(view.toImage()); var img = Ti.UI.createImageView({ width:200, height:200, bottom:10, image:image.nativePath }); window.add(img); window.open(); {code} h2. Link Ticket : http://support-admin.appcelerator.com/display/APP-785915",1 +"TIMOB-8346","02/09/2012 13:46:29","iOS: ""open"" event fires multiple times at startup, plus whenever focused when using NavigationGroup","h2.Problem The ""open"" event of a window fires 3 times when first opened, then whenever the window re-receives focus (when navigating back to it using a NavigationGroup), the ""open"" event fires again. h2.Expected Result The ""open"" event should only fire once...when it is first opened, period. And it should not fire when the window re-receives focus. h2.Steps to Reproduce # drop the following app.js code into a new project # build with SDK 1.8.1 # run in the iPhone simulator. You will see: {code} [INFO] One moment, building ... [INFO] Titanium SDK version: 1.8.1 (01/27/12 17:31 a24502a) [INFO] iPhone Device family: iphone [INFO] iPhone SDK version: 5.0 [INFO] iPhone simulated device: iphone [INFO] Launching application in Simulator [INFO] Launched application in Simulator (3.78 seconds) [INFO] Found 5.0 patch installed [INFO] Application started [INFO] NavGroupFocusTest/1.0 (1.8.1.a24502a) [INFO] rootWin OPEN fired [INFO] rootWin OPEN fired [INFO] rootWin OPEN fired {code} # Say to yourself: ""Why did OPEN fire 3 times?!?!?!?!?!"" # click the ""open new window"" button and watch the console log. You will see: {code} [INFO] 2nd wind {code} # click the ""back"" button and watch the console log. You will see: {code} [INFO] rootWin FOCUSED [INFO] rootWin OPEN fired {code} # Say to yourself: ""Why did OPEN fire again?!?!?!?!?!"" Repeat steps 5, 6, and 7 and continue to get the same result until you're bored with this game. h2.Testcase {code:title=app.js} var rootWin = Ti.UI.createWindow(); rootWin.addEventListener('focus', function() { Ti.API.info(""rootWin FOCUSED""); }); rootWin.addEventListener('open', function() { Ti.API.info(""rootWin OPEN fired""); }); var btnOpenWin = Ti.UI.createButton({ title : ""open new window"", width : 200, height : 35 }); btnOpenWin.addEventListener('click', function() { var win2 = Ti.UI.createWindow(); ng.open(win2, {animated:true}); Ti.API.info(""2nd wind""); }); rootWin.add(btnOpenWin); ng = Ti.UI.iPhone.createNavigationGroup({window:rootWin}); var NavBase = Ti.UI.createWindow(); NavBase.add(ng); NavBase.open(); // this opens the ""root"" window, automatically {code} In a larger project, sometimes when you go ""back"" to the main window, no events fire at all (no focus, no open). I would expect the focus event to fire each time. Just something to keep in mind while you're looking into the code, as I haven't been successful in reproducing this in a small testcase. ",1 +"TIMOB-7607","02/09/2012 17:25:32","iOS: Status Bar disappears when video is closed in landscape/portrait mode","h5. Expected When the video is closed in landscape/portrait mode, Status bar should be visible. h5. Actual Currently its not visible. Below is attached the sample app.js, and screen shots to explain the issue. h5. Test Code {code} var win = Ti.UI.createWindow({ backgroundColor:'#fff', top: 0, left: 0, width: '100%', height: '100%', zIndex: 10, }); var bTSOStream = Ti.UI.createButton({ width: 150, height: 30, color: 'blue', title: 'Live-Stream', font: {fontSize:14,fontFamily:'Helvetica Neue'}, left: 0, top: 0, }); bTSOStream.addEventListener('click', function(e){ var wStream = Ti.UI.createWindow({ fullscreen: true, orientationModes: [Titanium.UI.PORTRAIT, Titanium.UI.LANDSCAPE_RIGHT, Titanium.UI.LANDSCAPE_LEFT], backgroundColor: '#000', }); wStream.open(); var vpStream = Ti.Media.createVideoPlayer({ contentURL: 'http://movies.apple.com/media/us/ipad/2010/tours/apple-ipad-video-us-20100127_r848-9cie.mov', backgroundColor: '#111', movieControlMode: Titanium.Media.VIDEO_CONTROL_DEFAULT, //scalingMode: Titanium.Media.VIDEO_SCALING_MODE_FILL , scalingMode: Titanium.Media.VIDEO_SCALING_ASPECT_FIT, fullscreen: true, }); var ignoreFullscreenEvent = false; vpStream.addEventListener('naturalSizeAvailable', function(e){ ignoreFullscreenEvent = true; }); vpStream.addEventListener('fullscreen', function(e){ if(!ignoreFullscreenEvent){ wStream.close(); } ignoreFullscreenEvent = false; }); wStream.add(vpStream); }); win.add(bTSOStream); win.open(); {code}",1 +"TIMOB-8100","02/10/2012 04:05:24","iOS: barImage hides nav buttons after window transition","In window with a navbar that has a barImage and nav buttons (such as a rightNavButton), if we go to a child window and then back the nav buttons will be hidden by the barImage (but are still there and react to the touch). STEPS TO REPRODUCE: * Put the app.js (code below and attached) and navbar.png (attached) in the Resources directory * Run the code in the iOS simulator * Click on the ""Open Window 2"" button * Click on the back button to return to window 1 The right nav button will now be hidden (although you can still click it) app.js example code follows. {code} var win1 = Ti.UI.createWindow({ title : 'Window 1', barImage : 'navbar.png' }); var navButton = Ti.UI.createButton({ title : 'rightNavButton' }); navButton.addEventListener('click', function(e) { Ti.UI.createAlertDialog({ message : 'nav button clicked' }).show(); }); win1.rightNavButton = navButton; win1.titleControl = Ti.UI.createLabel({text : 'Title Control'}); var button = Ti.UI.createButton({ width : 200, height : 50, title : 'Open Window 2' }); button.addEventListener('click', function(e) { tabGroup.activeTab.open(win2); }); win1.add(button); var win2 = Ti.UI.createWindow({ title : 'Window 2' }); var tab1 = Ti.UI.createTab({ title : 'Tab 1', window : win1 }); var tabGroup = Ti.UI.createTabGroup(); tabGroup.addTab(tab1); tabGroup.open(); {code} Possibly related to: http://developer.appcelerator.com/question/131672/rightnavbutton-and-leftnavbutton-not-displaying-in-181 ",2 +"TIMOB-8326","02/10/2012 07:39:52","Android: Regression: TableView no longer responds to touch events (touchstart, touchmove, touchend, touchcancel)","h2.Problem TableView does not respond to touch events (touchstart, touchmove, touchend, touchcancel). This is a regression, as this worked fine in 1.7.5 and the 1.8.0.v... continuous build from September. This also works fine in iOS. Only Android is affected. h2.Test Case # drop the following app.js code into a new project # build with SDK 1.8.1 # run on the Android 2.2 emulator # press and hold any row. *No touchstart event occurs.* # while still holding the row, move the mouse around a little. *No touchmove event occurs.* # let go of the row. *No touchend event occurs.* {code:title=app.js} var win1=Ti.UI.createWindow({ backgroundColor:'#fff', exitOnClose:true, layout:'vertical', navBarHidden:false, backgroundColor:'black' }); var TopLabel=Ti.UI.createLabel({text:'Last row will only be half visible when scrolled', color:'black', left:0, right:0, height:25, backgroundColor:'yellow'}); win1.add(TopLabel); var MyListbox=Ti.UI.createTableView({backgroundColor:'black'}); for (var i=1; (i <= 10); i++) MyListbox.appendRow(Ti.UI.createTableViewRow({title:'Row '+i})); Ti.API.info('adding EventListener for touchstart'); MyListbox.addEventListener('touchstart',TchStart); function TchStart(evt) { Ti.API.info('TchStart'); } Ti.API.info('adding EventListener for touchmove'); MyListbox.addEventListener('touchmove',TchMove); function TchMove(evt) { Ti.API.info('TchMove'); } Ti.API.info('adding EventListener for touchend'); MyListbox.addEventListener('touchend',TchEnd); function TchEnd(evt) { Ti.API.info('TchEnd'); } Ti.API.info('adding EventListener for touchcancel'); MyListbox.addEventListener('touchcancel',TchCancel); function TchCancel(evt) { Ti.API.info('TchCancel'); } Ti.API.info('adding EventListener for click'); MyListbox.addEventListener('click',LBClick); function LBClick(evt) { Ti.API.info('LBClick'); } win1.add(MyListbox); win1.open(); {code} ",3 +"TIMOB-7616","02/10/2012 14:12:28","iOS: Titanium.UI.WebView: iOS5: evalJS causes app freeze and deadlock warning","iOS 5.0 apps running SDK 1.9.0 beta freeze with deadlock warning: [WARN] Timing out waiting on main thread. Possibly a deadlock? in TiThreadPerformOnMainThread (TiBase.m:213) Regression. Works in 1.8.1. Steps to Reproduce: 1. Run WebViewTest project. Attached. Expected Result: App should display an alert indicating html javascript function call. Actual Result: App freeze with deadlock warning. Note: Test case exists in titanium_mobile_tests_internal/FeatureTest/WebView/WebViewModule => TIMOB 4885",0 +"TIMOB-7624","02/10/2012 18:56:37","Android: Ti.API - enable logging methods to accept either an array of strings or a string","h2. Problem To bring parity with iOS to the [Titanium.API|http://developer.appcelerator.com/apidoc/mobile/latest/Titanium.API-module] logging methods, enable them to accept arrays of strings in addition to the existing string arguments.",1 +"TIMOB-7627","02/13/2012 07:20:59","iOS: UI - Email/SMS Dialog does not change orientation properly","h3.Issue When you create a window and set win.orientationModes = [Titanium.UI.PORTRAIT]; or set it in Tiapp.xml. Then create an emailDialog or SMSDialog and open that window. If you proceed to rotate the device into LANDSCAPE the window itself rotates into LANDSCAPE but the statusbar and keyboard remain in PORTRAIT. h6.Expected behavior The keyboard and statusBar rotate accordingly. Used to work in 1.7.x - as seen in the screenshots. h6.Tested on iPhone 4 iOS simulator 5 TiSDK 1.7 > OK TiSDK 1.8 > Fail TiSDK 1.9 > Fail h6.Steps to reproduce 1) Run code below 2) Click ""Email"" button 3) Select a field from Email dialog - the keyboard shows up. 4) Rotate device 5) Misbehavior appears suddenly. h6.Repro sequence {code:title=app.js} // this sets the background color of the master UIView (when there are no windows/tab groups on it) Titanium.UI.setBackgroundColor('#000'); // create tab group var tabGroup = Titanium.UI.createTabGroup(); // // create base UI tab and root window // var win1 = Titanium.UI.createWindow({ title:'Tab 1', backgroundColor:'#fff' }); var tab1 = Titanium.UI.createTab({ icon:'KS_nav_views.png', title:'Tab 1', window:win1 }); var label1 = Titanium.UI.createLabel({ color:'#999', text:'I am Window 1', font:{fontSize:20,fontFamily:'Helvetica Neue'}, textAlign:'center', width:'auto' }); var button = Ti.UI.createButton({ title:'Email', height:40 }); button.addEventListener('click', function(){ var emailDialog = Ti.UI.createEmailDialog(); emailDialog.open(); }); win1.add(label1); win1.add(button); // // create controls tab and root window // var win2 = Titanium.UI.createWindow({ title:'Tab 2', backgroundColor:'#fff' }); var tab2 = Titanium.UI.createTab({ icon:'KS_nav_ui.png', title:'Tab 2', window:win2 }); var label2 = Titanium.UI.createLabel({ color:'#999', text:'I am Window 2', font:{fontSize:20,fontFamily:'Helvetica Neue'}, textAlign:'center', width:'auto' }); win2.add(label2); // // add tabs // tabGroup.addTab(tab1); tabGroup.addTab(tab2); // open tab group tabGroup.open(); {code} h6.Additional info If the window is locked doesn't seems to work either. Locked the orientation on iOS: {code:title=Tiapp.xml} Ti.UI.PORTRAIT Ti.UI.PORTRAIT Ti.UI.UPSIDE_PORTRAIT Ti.UI.LANDSCAPE_LEFT Ti.UI.LANDSCAPE_RIGHT {code}",1 +"TIMOB-7642","02/13/2012 19:07:37","iOS: Memory Leak when local html file is used in a WebView","Memory is not being released when a webview, with a local HTML file, is added to a window and then removed from it. But this does not happen when a remote URL is used. Below is the sample code and the local HTML file has been attached. *Sample Code* {noformat} var win = Ti.UI.createWindow({ backgroundColor : 'white' }); var webview = null; var btnAdd = Ti.UI.createButton({ title : 'Add', top : 0, left : 0, height : 50, width : 100 }); btnAdd.addEventListener('click', function() { webview = Ti.UI.createWebView({ url : 'local_webview.html', // url : 'http://www.google.com', height : 200, bottom : 10 }); win.add(webview); }); var btnRemove = Ti.UI.createButton({ title : 'Remove', top : 0, right : 0, height : 50, width : 100 }); btnRemove.addEventListener('click', function() { win.remove(webview); webview = null; }); win.add(btnAdd); win.add(btnRemove); win.open(); {noformat} *STEPS TO REPRODUCE* - Drop the above sample code into app.js and copy the attached 'local_webview.html' to Resources folder. - Start the application and open Instruments to profile it. - Click the 'Add' button and then the 'Remove' button. - Search for 'proxy' in instruments and it can be seen that webview proxies are not released even if memory warnings are simulated. *EXPECTED BEHAVIOR* Proxies related to webview should be released. *OBSERVED BEHAVIOR* Memory is not being freed. *OTHER OBSERVATIONS* Memory is being freed when a remote URL (uncomment the line with google.com and comment out the line with local_webview.html) is used.",2 +"TIMOB-7643","02/14/2012 09:37:28","Android: Implement the UI Composite Layout Behavior Spec","Spec: https://wiki.appcelerator.org/display/spe/UI+Composite+Layout+Behavior+Spec Detailed QE Test Case: https://wiki.appcelerator.org/display/tp/UI+Composite+Layout+Behavior+Test+Case",5 +"TIMOB-7644","02/14/2012 10:08:01","iOS: Memory is not being released when a tab is removed from tabGroup","Memory is not being released when a tab is removed from a tabGroup on iOS using 'removeTab'. *Sample Code* {noformat} // create tab group var tabGroup = Titanium.UI.createTabGroup(); // create base UI tab and root window var win1 = Titanium.UI.createWindow({ title:'Tab 1', backgroundColor:'#fff' }); var tab1 = Titanium.UI.createTab({ icon:'KS_nav_views.png', title:'Tab 1', window:win1 }); var label1 = Titanium.UI.createLabel({ color:'#999', text:'Remove Tab1', font:{fontSize:20,fontFamily:'Helvetica Neue'}, textAlign:'center', width:'auto' }); label1.addEventListener('click', function() { tabGroup.removeTab(tab1); label1 = win1 = tab1 = null; }); win1.add(label1); // create controls tab and root window var win2 = Titanium.UI.createWindow({ title:'Tab 2', backgroundColor:'#fff' }); var tab2 = Titanium.UI.createTab({ icon:'KS_nav_ui.png', title:'Tab 2', window:win2 }); var label2 = Titanium.UI.createLabel({ color:'#999', text:'I am Window 2', font:{fontSize:20,fontFamily:'Helvetica Neue'}, textAlign:'center', width:'auto' }); win2.add(label2); // add tabs tabGroup.addTab(tab1); tabGroup.addTab(tab2); // open tab group tabGroup.open(); {noformat} *STEPS TO REPRODUCE* - Drop the above sample code into app.js. - Start the application and open Instruments to profile it. - Click the 'Remove Tab1' label. - Search for 'proxy' in instruments and it can be seen that tab proxy(along with window and label proxies inside tab1) are not released even if memory warnings are simulated. *EXPECTED BEHAVIOR* Proxies related to tab and elements inside it should be released. *OBSERVED BEHAVIOR* Memory is not being freed.",0.5 +"TIMOB-7645","02/14/2012 10:32:31","Tooling: Update SDK version number to 2.0","Titanium Mobile is still reporting the SDK version as 1.9. Studio is now restricting UI elements for ACS based on an anticipated version # of 2.0. Until the SDK version # is updated, the UI elements will not appear.",0 +"TIMOB-7652","02/14/2012 12:20:54","Tooling: Add ""clean"" option to titanium build scripts","Based on ticket TISTUD-1180, it seems odd that Titanium Studio knows how to ""clean"" a build, especially since it doesn't know how to do the build itself. From here: https://wiki.appcelerator.org/display/guides/Titanium+Command+Line+Interface, it seems that a ""titanium clean --platform=p1,p2"" command (or if omitted, cleans all platforms) would be good, as then Studio does not need to internalize a very platform-specific function.",1 +"TIMOB-7657","02/14/2012 16:37:39","Android: Permissions failure in android.calendar Drillbit test","Looks like the android.calendar test recently started failing due to missing permissions, log: {code} Permission Denial: opening provider com.android.providers.calendar.CalendarProvider2 from ProcessRecord{423b2048 20514:org.appcelerator.titanium.testharness/10082} (pid=20514, uid=10082) requires android.permission.READ_CALENDAR or android.permission.WRITE_CALENDAR {code}",1 +"TIMOB-7660","02/14/2012 20:47:40","iOS: Moving rows between sections & hard crash","Moving rows between sections causing crashes. See attached examples. Repro steps at the top of each attached file. Some other tickets referencing this issue: https://jira.appcelerator.org/browse/TIMOB-2655 https://jira.appcelerator.org/browse/TIMOB-2117 https://jira.appcelerator.org/browse/TIMOB-5430 Let me know if there's any other info I can provide.",1 +"TIMOB-7659","02/15/2012 00:37:13","iOS: backgroundSelectedImage does not scale in iPod 2nd gen","The backgroundSelectedImage property doesn't scale in iPod 2nd gen. You can only see a cropped image. The image scales fine in iPod 3rd gen. h4. Repro Steps 1. Run the below code. 2. In iPod 2nd gen the images will not scale {code} var win=Ti.UI.createWindow({ backgroundColor: 'white' }); var button = Titanium.UI.createButton({ backgroundImage:'appsS.png', backgroundSelectedImage:'appsP.png', top: Titanium.Platform.displayCaps.platformHeight*0.5, width: Titanium.Platform.displayCaps.platformHeight * 0.13, height: Titanium.Platform.displayCaps.platformHeight * 0.16 }); button.addEventListener('click',function(e){ Titanium.API.info(""You clicked the button""); }); win.add(button); win.open(); {code}",1 +"TIMOB-7661","02/15/2012 10:16:44","Coverage: Fix error in coverage generation script","Currently the coverage.py script is failing whenever it is run without arguments, which impedes us from automating and getting metrics about API docs and the APIs themselves.",0.5 +"TIMOB-7700","02/16/2012 17:16:00","Android: Enable searchBar to animate cancel button","From the original iOS issue: When a searchBar is NOT attached to a tableView, instead attached to a view on the window, the cancel button isn't animated. Nor does there seem to be a property to enable it. The cancel button IS animated when a searchBar is attached to a tableView. iOS now has an optional argument in setShowCancel, of setShowCancel(BOOL,{animated:true}) wherein the cancel button is animated in its hiding. If Android offers something similar, we probably should support it for parity's sake.",1 +"TIMOB-7786","02/22/2012 20:35:03","Android: Typos in Ti.Codec exception messages","In decodeNumber(), the exception code has mistakenly said ""encodeNumber"" instead of ""decodeNumber"". Also, the ""source"" parameter is referred to as ""src"" instead of ""source"".",1 +"TIMOB-8293","02/24/2012 02:51:35","iOS: Subsequently setting the html property of a webview does not show the changed html but shows blank content","h2. Problem In our app we create one instance of Ti.UI.WebView and reuse it for showing html content which is stored in a sql db. As the user navigates to different entries within a messages list, the new selected content is pushed into the webview by asigning the value to the html property of the webview. The first time the value is set, the content shows up as expected. If the value is set the second time the webview shows up empty. h2. Test case Create a fresh mobile project and replace the default app.js with the following code: {code:lang=javascript|title=app.js} // this sets the background color of the master UIView (when there are no windows/tab groups on it) Titanium.UI.setBackgroundColor('#000'); // create tab group var tabGroup = Titanium.UI.createTabGroup(); // // create base UI tab and root window // var win1 = Titanium.UI.createWindow({ title:'Tab 1', backgroundColor:'#fff' }); var tab1 = Titanium.UI.createTab({ icon:'KS_nav_views.png', title:'Tab 1', window:win1 }); var button1 = Titanium.UI.createButton({ title:'open webview window', width:220, height:40 }); win1.add(button1); var winwebview = Titanium.UI.createWindow({ title:'Window with webview', backgroundColor:'#fff' }); var webview = Titanium.UI.createWebView({ }); winwebview.add(webview); var counter = 0; button1.addEventListener('click',function(e) { counter++; webview.html = '

Counter is: ' + counter + '

'; tab1.open(winwebview,{animated:true}); }); // // create controls tab and root window // var win2 = Titanium.UI.createWindow({ title:'Tab 2', backgroundColor:'#fff' }); var tab2 = Titanium.UI.createTab({ icon:'KS_nav_ui.png', title:'Tab 2', window:win2 }); var label2 = Titanium.UI.createLabel({ color:'#999', text:'I am Window 2', font:{fontSize:20,fontFamily:'Helvetica Neue'}, textAlign:'center', width:'auto' }); win2.add(label2); // // add tabs // tabGroup.addTab(tab1); tabGroup.addTab(tab2); // open tab group tabGroup.open(); {code} # Build an run the app in simulator. # Tap on the button ""open webview window"". # The webview shows the line ""Counter is: 1"". # Navigate back to Tab 1 and tap again on the button ""open webview window"". # The webview should show the line ""Counter is: 2"", but the webview shows up empty. With Titaniums SDK 1.8.0.1 and 1.8.1 this works as expected. ",1 +"TIMOB-7806","02/24/2012 13:44:25","Tooling: Bundle ACS (and potentially MQTT) module binaries with the MobileSDK ","We need to bundle the new ACS module alongside the MobileSDK. Android may also require a second MQTT module that the ACS module will depend on. A brief overview for how this should work: * The ACS (and MQTT) modules will be provided as zip binaries by the Modules team, preferably living under something like support/common * {{site_scons/package.py}} will need to be updated so those zips are extracted and live in the ""modules"" top level directory of the MobileSDK zip. This will ensure that when the MobileSDK zip is extracted, the modules are installed in the system directory as well h3. Testing 1. Download the two ti.* modules attached to this ticket (ignore bogus.zip). 2. Copy these two zips into titanium_mobile/support/module/packaged 3. Run scons to build the SDK. 4. Extract the SDK zip in dist/ and verify the file structure in modules/ matches as described in this ticket (see comments). ",0.5 +"TIMOB-7816","02/25/2012 19:37:42","Android: Ignore files that start with ._","On a Mac, some editors will generate a ._ file. When you compile an Android app, the android/compiler.py's make_function_from_file() function will error saying: {code} UnicodeDecodeError: 'utf8' codec can't decode byte 0xb0 in position 37: invalid start byte {code} Just need to ignore ._ files.",3 +"TIMOB-7824","02/27/2012 11:20:35","iOS: Autoupdate plist with custom font info","Currently iOS requires developers using custom fonts to manually update the Info.plist generated during a project build (or have a custom Info.plist). We should be able to automate this process rather than require it to be done by hand. h4. Testing ---- Create a project with custom fonts and build without updating the Info.plist, to see if the font loads.",5 +"TIMOB-7833","02/27/2012 19:16:16","Tooling: Add support for a ""common"" CommonJS module installation folder","With our current module system, modules must either be installed into a project or in the system Titanium folder. In both cases, modules are platform-specific compiled binaries (a static lib for iOS, shared lib for Android). It would be nice to allow pure Javascript / CommonJS modules in a common place that could simply be distributed as JS files, for example a {{common}} or {{commonjs}} folder under the system Titanium directory that would be analogous to today's {{iphone}} and {{android}} directories.",1 +"TIMOB-7862","03/02/2012 07:56:43","iOS: UIPopover background color","Previous to 5.0 there was no way to customize the UIPopover background color. From reading the docs and around the web since 5.0 people have been doing it. References: https://developer.apple.com/library/ios/#documentation/uikit/reference/UIPopoverController_class/Reference/Reference.html#//apple_ref/occ/instp/UIPopoverController/popoverBackgroundViewClass https://developer.apple.com/library/ios/#documentation/uikit/reference/UIPopoverBackgroundView_class/Reference/Reference.html#//apple_ref/occ/cl/UIPopoverBackgroundView http://stackoverflow.com/questions/5974439/customizing-the-uipopovercontroller-view-background-and-border-color http://stackoverflow.com/questions/8490261/change-color-navigation-controller-in-a-popover",1 +"TIMOB-7865","03/02/2012 11:45:48","Android: XML - On V8, parsing xml multiple times crashes the phone","Details: When running the app.js in SDK build 2.0.0.v20120302093154 for V8, the app will eventually crash and GC will be continuously called. See attachment 2.0_logcat.txt. And when running the app.js in SDK build 1.8.2 for V8, I get a out of memory exception. See attachment 1.8.2_logcat.txt. However, the app.js does not crash when running on Rhino for both builds. Steps to reproduce: 1. Create new project. 2. Replace app.js with attached app.js. 3. Run app. 4. Press 'load' until app crashes. Actual: App crashes. See attachments. Expected: The app should not crash.",0.5 +"TIMOB-7897","03/06/2012 13:50:48","Android: Memory leak by windows not properly cleaning up after close.","Windows appear to be leaking memory by not properly cleaning up after they have been closed. This only affects ""heavy"" windows that have their own activity. h3. Test Case: Opening a window and adding many child views. Run the application and click the button to open a window. Wait for an alert dialog to popup telling you its okay to back out now. Hit the back button to close out the window. Repeat this process. Expected: Memory usage should peak and remain steady. Actual: Memory usages constantly rises until out of memory crash occurs. {code:javascript} function mainViews() { var newWin = Ti.UI.createWindow({ navBarHidden: true }); Ti.API.info('****** mainViews function has started ******'); var views =[]; var view = null; for (var i=0; i < 500; i++) { view = Ti.UI.createView(); views.push(view); newWin.add(view); } newWin.open(); alert(""You may click back now.""); Ti.API.info('Titanium views created and added to array'); Ti.API.info('****** mainViews function has stopped ******'); } var win = Ti.UI.createWindow({ backgroundColor: ""white"" }); var button = Ti.UI.createButton({ title: ""create 5k views"" }); button.addEventListener(""click"", function(e) { mainViews(); Ti.API.info('Available memory: ' + Ti.Platform.availableMemory); }); win.add(button); win.open(); {code}",1 +"TIMOB-7948","03/09/2012 11:15:52","Android: Invalid column visibility when querying events in Ti.Android.Calendar","Here is the sample app from our Calendar TDoc that shows the error. The error seems to happen when {{getEventsInYear}} is called {code} var calendars = []; var selectedCalendarName; var selectedCalendarId; var pickerData = []; var win = Ti.UI.createWindow({ backgroundColor: 'white', exitOnClose: true, fullscreen: false, layout: 'vertical', title: 'Calendar Demo' }); var scrollView = Ti.UI.createScrollView({ backgroundColor: '#eee', height: 500, top: 20 }); var label = Ti.UI.createLabel({ backgroundColor: 'white', text: 'Click on the button to display the events for the selected calendar', textAlign: Ti.UI.TEXT_ALIGNMENT_CENTER, top: 20 }); scrollView.add(label); var selectableCalendars = Ti.Android.Calendar.selectableCalendars; for (var i = 0, ilen = selectableCalendars.length; i < ilen; i++) { calendars.push({ name: selectableCalendars[i].name, id: selectableCalendars[i].id }); pickerData.push( Ti.UI.createPickerRow({ title: calendars[i].name }) ); if(i === 0){ selectedCalendarName = selectableCalendars[i].name; selectedCalendarId = selectableCalendars[i].id; } } var selectableCalendars = null; if(!calendars.length){ label.text = 'No calendars available. Select at least one in the native calendar before using this app'; } else { label.text = 'Click button to view calendar events'; var picker = Ti.UI.createPicker({ top:20 }); picker.add(pickerData); win.add(picker); picker.addEventListener('change', function(e){ for (var i = 0, ilen = calendars.length; i < ilen; i++) { if(calendars[i].name === e.row.title){ selectedCalendarName = calendars[i].name; selectedCalendarId = calendars[i].id; } } }); var button = Ti.UI.createButton({ title: 'View events', top: 20 }); win.add(button); button.addEventListener('click', function(e){ label.text = 'Generating...'; var currentYear = new Date().getFullYear(); var consoleString = ''; function print(s) { if (consoleString.length) { consoleString = consoleString + '\n'; } consoleString = consoleString + s; } var calendar = Ti.Android.Calendar.getCalendarById(selectedCalendarId); function printReminder(r) { var typetext = '[method unknown]'; if (r.method == Ti.Android.Calendar.METHOD_EMAIL) { typetext = 'Email'; } else if (r.method == Ti.Android.Calendar.METHOD_SMS) { typetext = 'SMS'; } else if (r.method == Ti.Android.Calendar.METHOD_ALERT) { typetext = 'Alert'; } else if (r.method == Ti.Android.Calendar.METHOD_DEFAULT) { typetext = '[default reminder method]'; } print(typetext + ' reminder to be sent ' + r.minutes + ' minutes before the event'); } function printAlert(a) { print('Alert id ' + a.id + ' begin ' + a.begin + '; end ' + a.end + '; alarmTime ' + a.alarmTime + '; minutes ' + a.minutes); } function printEvent(event) { if (event.allDay) { print('Event: ' + event.title + '; ' + event.begin.toLocaleDateString() + ' (all day)'); } else { print('Event: ' + event.title + '; ' + event.begin.toLocaleDateString() + ' ' + event.begin.toLocaleTimeString()+ '-' + event.end.toLocaleTimeString()); } var reminders = event.reminders; if (reminders && reminders.length) { print('There is/are ' + reminders.length + ' reminder(s)'); for (var i = 0; i < reminders.length; i++) { printReminder(reminders[i]); } } print('hasAlarm? ' + event.hasAlarm); var alerts = event.alerts; if (alerts && alerts.length) { for (var i = 0; i < alerts.length; i++) { printAlert(alerts[i]); } } var status = event.status; if (status == Ti.Android.Calendar.STATUS_TENTATIVE) { print('This event is tentative'); } if (status == Ti.Android.Calendar.STATUS_CONFIRMED) { print('This event is confirmed'); } if (status == Ti.Android.Calendar.STATUS_CANCELED) { print('This event was canceled'); } } var events = calendar.getEventsInYear(currentYear); if (events && events.length) { print(events.length + ' event(s) in ' + currentYear); print(''); for (var i = 0; i < events.length; i++) { printEvent(events[i]); print(''); } } else { print('No events'); } label.text = consoleString; }); } win.add(scrollView); win.open(); {code} Also make sure you add READ_CALENDAR and WRITE_CALENDAR permissions to your tiapp.xml: {code} {code} And finally, here is the trace: {code} /CursorWrapperInner(31255): Cursor finalized without prior close() E/DatabaseUtils(31274): Writing exception to parcel E/DatabaseUtils(31274): java.lang.IllegalArgumentException: Invalid column visibility E/DatabaseUtils(31274): at android.database.sqlite.SQLiteQueryBuilder.computeProjection(SQLiteQueryBuilder.java:588) E/DatabaseUtils(31274): at android.database.sqlite.SQLiteQueryBuilder.buildQuery(SQLiteQueryBuilder.java:403) E/DatabaseUtils(31274): at android.database.sqlite.SQLiteQueryBuilder.query(SQLiteQueryBuilder.java:347) E/DatabaseUtils(31274): at android.database.sqlite.SQLiteQueryBuilder.query(SQLiteQueryBuilder.java:291) E/DatabaseUtils(31274): at com.android.providers.calendar.CalendarProvider2.handleInstanceQuery(CalendarProvider2.java:1015) E/DatabaseUtils(31274): at com.android.providers.calendar.CalendarProvider2.query(CalendarProvider2.java:840) E/DatabaseUtils(31274): at android.content.ContentProvider$Transport.query(ContentProvider.java:178) E/DatabaseUtils(31274): at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:112) E/DatabaseUtils(31274): at android.os.Binder.execTransact(Binder.java:338) E/DatabaseUtils(31274): at dalvik.system.NativeStart.run(Native Method) E/TiJSError(31255): (main) [141129,172202] ----- Titanium Javascript Runtime Error ----- E/TiJSError(31255): (main) [0,172202] - In pullRequests/1591.js:135,27 E/TiJSError(31255): (main) [0,172202] - Message: Uncaught Error: Invalid column visibility E/TiJSError(31255): (main) [0,172202] - Source: var events = calendar.getEventsInYear(currentYear); E/V8Exception(31255): Exception occurred at pullRequests/1591.js:135: Uncaught Error: Invalid column visibility {code}",1 +"TIMOB-7967","03/12/2012 20:49:12","Android: Replace Node.text with Node.textContent","For MobileWeb parity in 2.0, we need to deprecate the current {{Node.text}} property in our XML API, and rename it to {{textContent}}. We won't be fully implementing {{textContent}} from the DOM3 spec as it requires read-write access, and the traversal rules are slightly different than our current implementation. This is mainly for source level equivalence, until we have time to implement it properly.",1 +"TIMOB-7968","03/12/2012 20:50:28","iOS: Replace Node.text with Node.textContent","For MobileWeb parity in 2.0, we need to deprecate the current {{Node.text}} property in our XML API, and rename it to {{textContent}}. We won't be fully implementing {{textContent}} from the DOM3 spec as it requires read-write access, and the traversal rules are slightly different than our current implementation. This is mainly for source level equivalence, until we have time to implement it properly.",1 +"TIMOB-8077","03/14/2012 07:03:24","iOS: TableView - setContentInsets not working correctly, values assigned are not always respected","When using many or complex rows in a table view, in connection with a pull to refresh UI, the table does not always stay stuck down (with things like a reloading message showing). To reproduce, do the following: - Run the following code on device (simulator works fine) - Scroll down the table a bit. - scroll back up and try to do a pull to refresh a few times. The result: The table will not always stay ""pulled down"" by 60. sometimes it will, but more often it will be around 5. If however you pull down and hold the table down for about a second before releasing, it seems to work correctly. The code to re-create this issue is in the kitchen sink, I just am having it run with more rows to make the issue more clear... the issue is also clear when using more complex row layouts. {code} var win = Ti.UI.createWindow(); function formatDate() { var date = new Date(); var datestr = date.getMonth()+'/'+date.getDate()+'/'+date.getFullYear(); if (date.getHours()>=12) { datestr+=' '+(date.getHours()==12 ? date.getHours() : date.getHours()-12)+':'+date.getMinutes()+' PM'; } else { datestr+=' '+date.getHours()+':'+date.getMinutes()+' AM'; } return datestr; } var data = []; for(i=0; i<600; i++) { data.push({title:""Row ""+i}); } var lastRow = 4; var tableView = Ti.UI.createTableView({ data: data }); win.add(tableView); var border = Ti.UI.createView({ backgroundColor:""#576c89"", height:2, bottom:0 }); var tableHeader = Ti.UI.createView({ backgroundColor:""#e2e7ed"", width:320, height:60 }); // fake it til ya make it.. create a 2 pixel // bottom border tableHeader.add(border); var arrow = Ti.UI.createView({ backgroundImage:""../images/whiteArrow.png"", width:23, height:60, bottom:10, left:20 }); var statusLabel = Ti.UI.createLabel({ text:""Pull to reload"", left:55, width:200, bottom:30, height:""auto"", color:""#576c89"", textAlign:""center"", font:{fontSize:13,fontWeight:""bold""}, shadowColor:""#999"", shadowOffset:{x:0,y:1} }); var lastUpdatedLabel = Ti.UI.createLabel({ text:""Last Updated: ""+formatDate(), left:55, width:200, bottom:15, height:""auto"", color:""#576c89"", textAlign:""center"", font:{fontSize:12}, shadowColor:""#999"", shadowOffset:{x:0,y:1} }); var actInd = Titanium.UI.createActivityIndicator({ left:20, bottom:13, width:30, height:30 }); tableHeader.add(arrow); tableHeader.add(statusLabel); tableHeader.add(lastUpdatedLabel); tableHeader.add(actInd); tableView.headerPullView = tableHeader; var pulling = false; var reloading = false; function beginReloading() { // just mock out the reload setTimeout(endReloading,2000); } function endReloading() { // simulate loading for (var c=lastRow;c -65.0 && offset < 0) { pulling = false; var t = Ti.UI.create2DMatrix(); arrow.animate({transform:t,duration:180}); statusLabel.text = ""Pull down to refresh...""; } }); tableView.addEventListener('scrollEnd',function(e) { if (pulling && !reloading && e.contentOffset.y <= -65.0) { reloading = true; pulling = false; arrow.hide(); actInd.show(); statusLabel.text = ""Reloading...""; tableView.setContentInsets({top:60},{animated:true}); arrow.transform=Ti.UI.create2DMatrix(); beginReloading(); } }); win.open(); {code}",2 +"TIMOB-7987","03/14/2012 09:49:09","MobileWeb : Gradients - Various browsers support gradient backgrounds while others do not (e.g. Safari on iOS >= 5.0 does while Safari on iOS < 5.0 does not)","*Note this may not be a Titanium specific issue because obviously not all browsers support the same features* Steps to reproduce 1. Launch the sample app provided once on an iOS device with OS >= 5.0 and once on iOS device < 5.0 Actual result: Gradient backgrounds are shown on the buttons in iOS 5.0+, while they are not in iOS < 5.0 (Also not on Galaxy Tab 10.1 OS 3.0) Expected result: Gradient backgrounds are shown in both browsers",0 +"TIMOB-7995","03/14/2012 10:57:20","MobileWeb: Button: button selection only highlights the text and not the button","Steps to Reproduce: 1. Run the Button Module test TIMOB-6644 2. Click on the No image button Actual: Selection only highlights the text Expected: Should highlight the button",3 +"TIMOB-8048","03/15/2012 19:40:44","Android: removeEventListener does not work for the CI Builds","removeEventListener does not work on android, when used to remove and eventlistener on 'focus' event. Run the code below. Do the following: open app alert comes up - clear it click on Win 2's tab click on Win 1's tab Observed behavior: alert comes up again (the event listener wasn't removed during the call to onFocus ()). Expected behavior: the second alert should not come up (the event listener should have been removed during the call to onFocus()) Thinking that maybe it was because I was calling removeEventListener() from within the event listener function, I also added a button that should remove the event listener from the window. It doesn't work either. {code} var tabGroup = Ti.UI.createTabGroup(); var win1 = Ti.UI.createWindow({ backgroundColor: '#fff', title: 'Win 1' }); tabGroup.addTab(Ti.UI.createTab({ window: win1, title: win1.title })); var win2 = Ti.UI.createWindow({ backgroundColor: '#666', title: 'Win 2' }); tabGroup.addTab(Ti.UI.createTab({ window: win2, title: win2.title })); var onFocus = function () { alert('[focus] size: ' + win1.size.width + ', ' + win1.size.height); win1.removeEventListener ('focus', onFocus); } win1.addEventListener('focus', onFocus); var btn1 = Titanium.UI.createButton({ width: 200, height: 50, title: 'Click me', }); btn1.addEventListener('click', function(e) { win1.removeEventListener ('focus', onFocus); }); win1.add(btn1); tabGroup.open(); {code} ",2 +"TIMOB-8505","03/16/2012 10:22:16","Android: Module build.xml no longer compiles C++ source code in the ""jni"" directory","Marshall's post on using native libraries in an Android module (http://developer.appcelerator.com/blog/2011/01/titanium-and-the-android-ndk.html) states that you need to place C++ source files in the jni directory of the module project and they will be compiled into .so files and included in the module. This is not the case in version 1.8.2 of the SDK -- the build.xml file under TITANIUM_HOME/mobilesdk/osx/1.8.2/modules/android never looks in that directory. To get the described behavior, the following targets can be added to the module's build.xml file: {code:xml} {code} Ideally, these targets would be part of the SDK's build.xml. In the meantime, it would be good to update the blog post to indicate that it is out of date.",1 +"TIMOB-8066","03/16/2012 14:51:42","Android: xhdpi density folder for extra large screens is not working ","Adding res-notlong-port-xhdpi"" and other related xhdpi folders to android -> images folder does not work as the image is not taken from those folders. As per the Android Developer website, I tried to create a 640 x 960 resolution avd to test this issue for xhdpi. To test: 1. Create an AVD for 640 x 960 resolution for titanium to run on. (This link explains the resolution needed for different densities: http://developer.android.com/guide/practices/screens_support.html) *You might have to edit the already created AVD to appropriate resolution since Titanium creates a new AVD by itself (unless there is another way)* 2. Create any default app with res-long-port-xhdpi, res-long-land-xhdpi, res-notlong-port-xhdpi, res-notlong-land-xhdpi folders under android and add differen images to these folder to differentiate easily. (See Screenshot for the folder structure) 3. Run the app with the desired AVD. The starting screen image that appears is not of xhdpi but of mdpi folder. Please clarify about this issue. *Note: You would also need to set the tool-api-level and some other properties as below since the xhdpi has been added to android after api level 8.* {noformat} 8 {noformat} ",2 +"TIMOB-8076","03/19/2012 09:19:04","Android: V8: GC lag can cause crash on older devices","On older devices like Droid 2, GC lag cause result in a crash when: 1) alot of object are created resulting in high memory allocation on the java side 2) said objects are available for cleanup (no reference maintained in JS) 3) GC has not scanned yet due to the memory overhead on the V8 side not causing enough pressure on the GC We need a way to notify V8 that we are running low on memory so that a GC occurs sooner than V8 would normally do on it's own. A ticket has been linked that provides a fail case for this issue (original test case in ticket - not the one attached in the comments)",5 +"TIMOB-8094","03/19/2012 17:18:52","Android: App crashes on the device while uploading images, Memory issues","The app uses camera to click pictures, and upload to their server. Before uploading they perform image compression and resizing. Ti.imagefactory module is used for these purposes. The pictures are high resolution images, taken by a 8MP camera on the Motorola Droid X. The issue arises, when he uploads more than 1 image or multiple similar images or displaying the image in imageview. He gets ""Unable to load bitmap.Not enough memory.bitmap size exceeds VM budget."" error on the device. You can see the crash log here {code}03-19 10:32:54.837: E/dalvikvm-heap(3474): 5752604-byte external allocation too large for this process. 03-19 10:32:54.916: E/GraphicsJNI(3474): VM won't let us allocate 5752604 bytes 03-19 10:32:54.916: D/dalvikvm(3474): GC_FOR_MALLOC freed 0K, 47% free 9431K/17479K, external 11586K/13634K, paused 73ms 03-19 10:32:54.923: E/TiDrawableReference(3474): (main) [1277,430400] Unable to load bitmap. Not enough memory: bitmap size exceeds VM budget 03-19 10:32:54.923: E/TiDrawableReference(3474): java.lang.OutOfMemoryError: bitmap size exceeds VM budget 03-19 10:32:54.923: E/TiDrawableReference(3474): at android.graphics.Bitmap.nativeCreate(Native Method) 03-19 10:32:54.923: E/TiDrawableReference(3474): at android.graphics.Bitmap.createBitmap(Bitmap.java:507) 03-19 10:32:54.923: E/TiDrawableReference(3474): at android.graphics.Bitmap.createBitmap(Bitmap.java:474) 03-19 10:32:54.923: E/TiDrawableReference(3474): at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:379) 03-19 10:32:54.923: E/TiDrawableReference(3474): at org.appcelerator.titanium.view.TiDrawableReference.getBitmap(TiDrawableReference.java:558) 03-19 10:32:54.923: E/TiDrawableReference(3474): at ti.modules.titanium.ui.widget.TiUIImageView.setImage(TiUIImageView.java:736) 03-19 10:32:54.923: E/TiDrawableReference(3474): at ti.modules.titanium.ui.widget.TiUIImageView.processProperties(TiUIImageView.java:849) 03-19 10:32:54.923: E/TiDrawableReference(3474): at org.appcelerator.kroll.KrollProxy.setModelListener(KrollProxy.java:641) 03-19 10:32:54.923: E/TiDrawableReference(3474): at org.appcelerator.titanium.proxy.TiViewProxy.realizeViews(TiViewProxy.java:464) 03-19 10:32:54.923: E/TiDrawableReference(3474): at org.appcelerator.titanium.proxy.TiViewProxy.handleGetView(TiViewProxy.java:456) 03-19 10:32:54.923: E/TiDrawableReference(3474): at org.appcelerator.titanium.proxy.TiViewProxy.getOrCreateView(TiViewProxy.java:434) 03-19 10:32:54.923: E/TiDrawableReference(3474): at org.appcelerator.titanium.proxy.TiViewProxy.handleToImage(TiViewProxy.java:716) 03-19 10:32:54.923: E/TiDrawableReference(3474): at org.appcelerator.titanium.proxy.TiViewProxy.handleMessage(TiViewProxy.java:303) 03-19 10:32:54.923: E/TiDrawableReference(3474): at android.os.Handler.dispatchMessage(Handler.java:95) 03-19 10:32:54.923: E/TiDrawableReference(3474): at org.appcelerator.kroll.common.TiMessenger.dispatchMessage(TiMessenger.java:318) 03-19 10:32:54.923: E/TiDrawableReference(3474): at org.appcelerator.kroll.common.TiMessenger.dispatchPendingMessages(TiMessenger.java:303) 03-19 10:32:54.923: E/TiDrawableReference(3474): at org.appcelerator.kroll.common.TiMessenger$2.getResult(TiMessenger.java:188) 03-19 10:32:54.923: E/TiDrawableReference(3474): at org.appcelerator.kroll.common.TiMessenger.sendBlockingMessage(TiMessenger.java:215) 03-19 10:32:54.923: E/TiDrawableReference(3474): at org.appcelerator.kroll.common.TiMessenger.sendBlockingRuntimeMessage(TiMessenger.java:143) 03-19 10:32:54.923: E/TiDrawableReference(3474): at org.appcelerator.kroll.KrollProxy.fireSyncEvent(KrollProxy.java:417) 03-19 10:32:54.923: E/TiDrawableReference(3474): at org.appcelerator.titanium.TiBaseActivity.onRestart(TiBaseActivity.java:830) 03-19 10:32:54.923: E/TiDrawableReference(3474): at android.app.Instrumentation.callActivityOnRestart(Instrumentation.java:1139) 03-19 10:32:54.923: E/TiDrawableReference(3474): at android.app.Activity.performRestart(Activity.java:3865) 03-19 10:32:54.923: E/TiDrawableReference(3474): at android.app.Activity.performResume(Activity.java:3876) 03-19 10:32:54.923: E/TiDrawableReference(3474): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2191) 03-19 10:32:54.923: E/TiDrawableReference(3474): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2228) 03-19 10:32:54.923: E/TiDrawableReference(3474): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:994) 03-19 10:32:54.923: E/TiDrawableReference(3474): at android.os.Handler.dispatchMessage(Handler.java:99) 03-19 10:32:54.923: E/TiDrawableReference(3474): at android.os.Looper.loop(Looper.java:123) 03-19 10:32:54.923: E/TiDrawableReference(3474): at android.app.ActivityThread.main(ActivityThread.java:3806) 03-19 10:32:54.923: E/TiDrawableReference(3474): at java.lang.reflect.Method.invokeNative(Native Method) 03-19 10:32:54.923: E/TiDrawableReference(3474): at java.lang.reflect.Method.invoke(Method.java:507) 03-19 10:32:54.923: E/TiDrawableReference(3474): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 03-19 10:32:54.923: E/TiDrawableReference(3474): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 03-19 10:32:54.923: E/TiDrawableReference(3474): at dalvik.system.NativeStart.main(Native Method) 03-19 10:32:54.923: I/TiUIHelper(3474): (main) [8,430408] view does not have parent, calling layout {code} Created sample apps, using the ti.imagefactory module, but could not reproduce this issue. Also tested the code on Motorola Droid3, LG OptimusV but still could not reproduce the issue. ",3 +"TIMOB-8113","03/20/2012 11:25:42","Android: Ti.UI.WebView doesn't seem to load pages that try to open a new window","*Code* * app.js {code} var win = Ti.UI.createWindow(); var webview = Titanium.UI.createWebView({ url: 'index.html' }); win.add(webview); win.open(); {code} * index.html {code} Click to load Google in a new window.

Click to load Google in the same window. {code} *Expected behavior* When you click on either of the two links, it should load up Google. *Actual behavior* What actually happens, is that the first link doesn't seem to do anything, only the second one seems to work. *Notes* -Only tested on a HTC Sensation and Samsung Galaxy S2, both giving me the same result. -Same result, whether I use the Rhino or V8 engine. -When testing the same code on the iOS simulator, both links seem to work fine. -The issue is 'target=""_blank""' without this, it seems to work fine. -HD ticket: http://support-admin.appcelerator.com/display/APP-257637",3 +"TIMOB-8127","03/20/2012 15:31:37","iOS: You can't call the Facebook Authorization from a Dialog (not even with app events)","h4. Problem Description Customer adds a Facebook.authorize(); from an app, without any results. h4. Actual Results The function never goes and logs into facebook. h4. Expected results The app should be able to login into fb h4. Test Case 1. Create a new mobile project 2. Add the code in the example to a button 3. Run it {code} wishToShareViaFacebook.addEventListener('click', function(e){ if (e.index == 0) { if (Titanium.Facebook.loggedIn) { var data = { link: ""www.jokwear.com"", name: ""Great Apparel, Great Message"", message: ""Check out JokWear!"", caption: ""Follow your favourite athletes, support other athletes"", picture: ""http://jokwear.com/images/joklogo.gif"", description: ""JokWear is a clothing brand that not only touts excellent fabric but also a social movement that you can achieve anything you set your mind to."", test: [ {foo:'Encoding test', bar:'Durp durp'}, 'test' ] }; Titanium.Facebook.requestWithGraphPath('me/feed', data, 'POST', showRequestResult); } else { Titanium.Facebook.authorize(); } } }); {code} h4. Extra info There is a bug where platform didn't want to launch the FB authorize from a dialog, since it's bad practice to get a dialog from a dialog. So, we recommended the customer to add an app event catching this, closing the dialog and then adding the other dialog. It's not runnning. The customer creates a small function doing a setTimeout, and that way, the function it's called properly within the if. ",1 +"TIMOB-8136","03/20/2012 22:38:08","iOS: Coverflow - @2x images don't have a very clear retina display","h6.Issue Images in the carrousel don't have a very clear retina display. It does show the @2x image but there's not much difference in the quality of the image. h6.Tested on iPhone 4 iOS simulator retina h6.Current behavior Same image is shown both in the coverflow and in an imageview, the rendered final image shows differently. h6.Steps to reproduce Import Resources.zip into a Studio project. Attached ZIP. ",2 +"TIMOB-8158","03/21/2012 10:58:13","iOS: Ti.UI.iPad.DocumentViewer add a property to reference the 'done' button","There doesn't seem to be a way to reference the 'done' button of a Ti.UI.iPad.DocumentViewer object. In other words, the customer would like to be able to call the 'done' button programmatically, something like DocumentViewer.close(); Currently there is no way of doing this. HD ticket: http://support-admin.appcelerator.com/display/APP-658343",0 +"TIMOB-8173","03/21/2012 18:46:22","iOS: Rejection for use of deprecated UDID property","We have had reports of two Apple rejections today for Titanium apps submitted for clients using an older 2.0 CI build and 1.8.2. The rejection is based on the use of deprecated UDID property. Was confirmed by a Titanium developer with at least one other native dev who got rejected: https://twitter.com/#!/steipete/status/182640647113687040 This seems to be a very recent occurrence, so little data is available at this time. This will require investigation and validation, along with a measured approach at dealing with moving totally over to the new UDID generation mechanism.",2 +"TIMOB-8185","03/22/2012 10:47:49","iOS: TextField loses focus if resized","h2. Problem TextField in a TableViewRow loses focus if it has been resized after being focused h2. Code and steps to reproduce {code:lang=javascript|title=app.js} var win = Ti.UI.createWindow({ title:'pippo', backgroundColor:'white' }); function addRow(addTextArea) { var row = Ti.UI.createTableViewRow({height:200}); var $tTF = Ti.UI.createTextField({ height: 30, top : 30, width: 100, borderStyle:Titanium.UI.INPUT_BORDERSTYLE_ROUNDED }); $tTF.addEventListener('focus',function(_e){ Ti.API.error(""focus ""+_e.source.height); Ti.API.error(_e); _e.source.animate({height: _e.source.height*2}); }); row.add($tTF); row.selectionStyle = Ti.UI.iPhone.TableViewCellSelectionStyle.NONE; row.className = 'control'; return row; } // create table view data object var data = []; for (var x=0;x<1;x++) { if (x==1){ data[x] = addRow(true); } else { data[x] = addRow(); } } var tableView = Ti.UI.createTableView({ data:data, style: Titanium.UI.iPhone.TableViewStyle.GROUPED }); win.addEventListener('focus', function() { Ti.API.info('window focus fired'); }); win.add(tableView); win.open(); {code} To reproduce: - Run the app and click the textField: textField is animated increasing in height. Result: focus on textField is lost. h2. Additional notes Ticket associated: http://support-admin.appcelerator.com/display/APP-995689/conversation/read_all",5 +"TIMOB-8231","03/23/2012 11:59:05","TiAPI: investigate addition of action bar","Investigate the addition of the action bar feature that was introduced by Android. Can this be done in a cross platform way (should it be platform specific)? Where should this live namespace wise, what should the feature set be, etc.",5 +"TIMOB-8241","03/23/2012 12:23:31","Core: Define Java coding standards","Define a document that outlines all Java coding standards any Java written for Appcelerator (internal or community contributions) should adhere to. This should represent more than syntax, but general design approaches and process flow. This document will be focused on language only. Platform Specific information will be contained inside another document.",5 +"TIMOB-8243","03/23/2012 12:34:01","Android: ScrollView - If a view is added to a scrollview, the view will not fill the screen","Steps to reproduce: 1. Run the following code on Android: {code} //Create a Ti.UI.View with scroll view and do not put any content var win = Ti.UI.createWindow(); win.backgroundColor = 'white'; var label = Ti.UI.createLabel({ text: 'View Size is: ', top: 20, left: 10, height: Ti.UI.SIZE, width: Ti.UI.SIZE, color: 'black' }); var scrollView = Titanium.UI.createScrollView({ contentHeight:'auto', contentWidth:'auto', showVerticalScrollIndicator:true, showHorizontalScrollIndicator:true }); var view = Ti.UI.createView(); var view2 = Ti.UI.createView({ backgroundColor:'red' }) scrollView.add(view2); win.addEventListener('postlayout', function layoutHandler(e) { win.removeEventListener('postlayout', layoutHandler); label.text = 'ScrollView\'s height and width: ' + scrollView.size.height + 'x' + scrollView.size.width + '\n' + 'Screen\'s height and width: ' + win.size.height + 'x' + win.size.width; win.addEventListener('postlayout', layoutHandler); }); win.add(scrollView); win.add(view); view.add(label); win.open(); {code} Actual: A white view appears. Expected: A red view should fill the screen similarly to iOS. See attachments",2 +"TIMOB-8301","03/25/2012 18:29:45","Android: Unable to create mapview","The user is having a tabbedview application. And he is trying to access mapview, by calling the Ti.map.createview. I dont have the complete code sample, but the mapview snippet, and the crash log. Here is the code {code} to setup tabs: app.tabs.stores = Ti.UI.createTab({ title:'Stores', icon:'/images/nav_icons/stores.png', tabIndex:nextTabIndex++ }); app.tabs.stores.window = gs.presenter.createStoreLocator(app.tabs.stores,{hideTabs:false}).window; tabGroup.addTab(app.tabs.stores); later, in the presenter: MapView = Ti.Map.createView({ regionFit:true, userLocation:false, visible:false }); mapView = MapView; mapView.left = 321; mapView.top = 45; // 44 (search) mapView.height = viewHeight; mapView.width = gs.ui.screenWidth; mapView.addEventListener('regionChanged', regionChanged); mapView.addEventListener('click', annotationClick); window.add(mapView); {code} i have attached the crash log.",2 +"TIMOB-8302","03/25/2012 19:11:43","Android: official support for Holo Themes ","h2. Request description Customer is asking for supporting officially Holo Themes: http://developer.android.com/design/style/themes.html h2. Additional notes Ticket request: http://support-admin.appcelerator.com/display/APP-839258 ",5 +"TIMOB-8303","03/26/2012 09:28:50","iOS: Text Field/Area needs hasText method","h2. Problem TextField and TextArea hasText() method not functioning. h2. Test Case {code:lang=javascript|title=app.js} var win = Ti.UI.createWindow({ backgroundColor : 'white', exitOnClose : true, fullscreen : false, layout : 'vertical', title : 'hasText Demo' });   var textField = Ti.UI.createTextField({     color: '#336699',     backgroundColor:'#eee',     top: 10, left: 10,     width: 250, height: 60,     borderStyle: Ti.UI.INPUT_BORDERSTYLE_ROUNDED }); win.add(textField);   var textArea = Ti.UI.createTextArea({     borderStyle: Ti.UI.INPUT_BORDERSTYLE_ROUNDED,     backgroundColor:'#eee',     color: '#336699',     top: 10, left: 10,     width: 250, height: 200 }); win.add(textArea);     win.open();   textField.addEventListener('change', function(e){     Ti.API.info('hasText? ' + e.source.hasText()); });   textArea.addEventListener('change', function(e){     Ti.API.info('hasText? ' + e.source.hasText()); }); {code}",0.5 +"TIMOB-8306","03/26/2012 12:20:43","Android: Upgrade V8 to 3.9.24","We should upgrade to a newer version of V8. One of the main new features that has been implemented is incremental GC. This also exposes some additional API that can help us better tune the GC. Targeting V8 version 3.9.24 (3.9 stable branch).",3 +"TIMOB-8308","03/26/2012 12:40:01","Android: Javascript array [] seems to have some inconsistence behavior compared to iOS","*Code* Attached with this ticket. *Expected behavior* When you tap on the button, DDMS should show the following in the output: {code} [INFO] print_object > [object Object] [INFO] object data: [object Object] [INFO] object data.screen_name: bhushan,bhaskar,deore [INFO] object data.screen_name[0]: bhushan {code} *Actual behavior* What it actually prints out is the following: {code} INFO/TiAPI(4756): print_object > {screen_name=[Ljava.lang.Object;@40576ad0, idea_title=[Ljava.lang.Object;@40576b18} INFO/TiAPI(4756): object data: [object Object] INFO/TiAPI(4756): object data.screen_name: undefined {code} *Notes* -As you can see, it doesn't even print out 'object data.screen_name[0]', since the array itself seems to be 'undefined'. -The expected behavior is what I get from the iOS simulator's output. -Only tested on the iOS simulator and HTC Sensation 4G running 2.3.x. -Marked as a parity issue, not sure if this is correct, please edit the ticket as appropriate. -HD ticket: http://support-admin.appcelerator.com/display/APP-927227",1 +"TIMOB-8314","03/26/2012 16:26:27","iOS: Close event is not firing when closing a window","h4. Problem description I have a NavigationGroup, and two windows. Intermittently, when the second window is closed, the first window goes comatose (won't respond to any clicks). h4. Actual results the window is not throwing the close event when closing. h4. Expected results the window should throw the close event when closing h4. Test case 1. Create a mobile project 2. Add this three files {code:title=app.js|borderStyle=solid} var FirstWindow=Ti.UI.createWindow({ url:'MOMain.js', layout:'vertical', navBarHidden:false }); Ti.App.NavGroup=Ti.UI.iPhone.createNavigationGroup({window:FirstWindow}); var NavBase=Ti.UI.createWindow(); NavBase.add(Ti.App.NavGroup); NavBase.open(); // this opens the ""root"" window, which is FirstWindow, automatically {code} {code:title=MOMain.js|borderStyle=solid} var MainWin=Ti.UI.currentWindow; function OnFocus(evt) { if (evt.source == MainWin) { Ti.App.CurrentWindow=MainWin; } } MainWin.title='Here is something'; Ti.App.CurrentWindow=MainWin; MainWin.addEventListener('focus',OnFocus); function SetupButtonClick() { var SecondWin=Ti.UI.createWindow({ url:'MOSetup.js', layout:'vertical', navBarHidden:false }); Ti.App.NavGroup.open(SecondWin,{animated:true}); } var SetupButton=Ti.UI.createButton({width:200, height:100, title:'Hit Me'}); SetupButton.addEventListener('click',SetupButtonClick); MainWin.add(SetupButton); {code} {code:title=MOMain.js|borderStyle=solid} var Win2=Ti.UI.currentWindow; function HandleiPhoneCloseEvent() { if (Ti.App.DevelopmentMode) Ti.API.info('# Window HandleiPhoneCloseEvent fired'); Win2.removeEventListener('close',HandleiPhoneCloseEvent); Win2=null; // attempt to release the window's memory } Win2.title='Window 2'; Ti.App.CurrentWindow=Win2; Win2.addEventListener('close',HandleiPhoneCloseEvent); // catches the iPhone NavGroup back button close {code} 3. Run the app 4. Click on the ""Hit Me"" button 5. Click the navgroup's back button 6. Try to click on the ""Hit Me"" button again h4. Extra info This seems to be timing dependent, so you may have to repeat the 2 clicks several times. I can make it happen in under 30 seconds...usually within 5 seconds. My best reproduction comes by waiting 2.5 seconds before clicking the back button. If you have trouble reproducing this, vary the time between seeing the second window and clicking the back button (faster and then slower). After some investigation, I can see that the 'close' event of the second window never fires when the problem occurs (neither does the focus event of the first window). This seems to point to a serious flaw. In a larger app, the failure occurs 80% of the time. Our app is totally dead in the water because of this, and we need to release it soon. Can you please take a look into this? Please note that I've reduced this down about as far as possible, while still demonstrating the error. Removing any of the references to Ti.App or removing any of the event listeners hides the problem, but all of my apps are dependent on these.",3 +"TIMOB-8362","03/27/2012 13:08:24","Android: Ti.UI.createScrollView sizing incorrectly in a vertical layout","h2.Problem Setting Ti.UI.createScrollView.height to Ti.UI.SIZE causes the scrollView to take up the entire screen. If navBarHidden:true is set in app.js, a scrollView whose contents are minor will now scroll. This did not occur in Android 2.2. h2.Steps to Reproduce # Make a project with the below app.js. # Run in Android 4.0 emulator You will see that most of the screen (excluding the custom navbar) is red. If you click and drag, you will see it scroll even though the components are very minor. One other point of interest, I added a label at the bottom of the window, but it is not visible since the scrollview wants to take up the entire parent. {code:title=Bar.java|borderStyle=solid} var win = Ti.UI.createWindow({ backgroundColor: '#7B6700', exitOnClose:true, layout:'vertical', navBarHidden:true }); var NavBarView = Ti.UI.createView({height: '25dp', top:0, backgroundColor: 'green', width:'100%'}); var View1 = Ti.UI.createScrollView({left:'3dp', right:'3dp', height: Ti.UI.SIZE, showVerticalScrollIndicator:true, scrollType:'vertical', layout:'vertical', backgroundColor: 'red', showHorizontalScrollIndicator:false, touchEnabled: true }); var button = Ti.UI.createButton({title: 'Click', width: '100dp', height: '50dp' }); button.addEventListener('click', ButtonClick); function ButtonClick(e) { Ti.API.info('View1 height: ' + View1.size.height); } Label1 = Ti.UI.createLabel({text:'Label 1'}); View1.add(button); win.add(NavBarView); win.add(View1); win.add(Label1); win.open(); {code}",3 +"TIMOB-8332","03/27/2012 14:14:58","Android: tableView textField focus is lost while typing","h2. Problem description TableView textField loses focus when typing in. h2. Steps to reproduce Create a tableView and a tableViewRow with a textField. Click on the textField and start typing some text Result: after the first character, focus on the textField is lost. {code:lang=javascript|name=app.js} var win = Ti.UI.createWindow({ backgroundColor:'black' }); var data = []; var tableview; var row = Ti.UI.createTableViewRow({ clickName: 'row' }); var textfield = Titanium.UI.createTextField({ width: '80%', height: 80, color: '#000', returnKeyType: Titanium.UI.RETURNKEY_DONE, enableReturnKey: true, keyboardType: Titanium.UI.KEYBOARD_ASCII, autocorrect: false, hintText: 'Enter text Field', textAlign: 'left', clearOnEdit: false, borderStyle: Titanium.UI.INPUT_BORDERSTYLE_ROUNDED, clearButtonMode: Titanium.UI.INPUT_BUTTONMODE_ONFOCUS, leftButtonMode: Titanium.UI.INPUT_BUTTONMODE_ALWAYS }); textfield.font = { fontSize: '15sp', fontFamily: 'Arial' }; textfield.autocorrect = true; textfield.borderStyle = Titanium.UI.INPUT_BORDERSTYLE_NONE; row.add(textfield); data = [row]; tableview = Titanium.UI.createTableView({ data: data, rowBackgroundColor: 'white', }); win.add(tableview); win.open(); {code} h2. Additional notes Ticket associated: http://support-admin.appcelerator.com/display/APP-682796",3 +"TIMOB-8342","03/27/2012 21:47:28","Android: keyDispatchingTimedOut when trying to resume an app from background to foreground","*Code* I personally would say majority of Titanium Android apps, but for this ticket, please try it with the KitchenSink app. *Expected behavior* When you put an app into the background, and bring it back into the foreground, it should work perfectly fine. *Actual behavior* The app seems to show a black background for 1-2 seconds and then restarts. *Steps to reproduce* I can reproduce this issue 3 out of 5 times, by doing the following: *1.* If you have the KitchenSink app open in memory from before, kill it. We want to make sure we start from a clean slate. *2.* Make sure you have your USB cable connected to your laptop and phone. *3.* Run the KitchenSink app, wait for it to load and press the home button (don't press the back button, but instead the home button!) *4.* Run a few other apps in the background, I ran 'Gmail', 'Contacts', 'Internet', 'Peep', 'Places', 'Stocks' and 'Market'. It's important that you press the home button and NOT the back button! (NOTE if it doesn't work for you the first time, try opening more or even less apps, it might make a difference, depending on the device's specs). *5.* Once you have some apps running in the background, make sure you are back on the main home screen. *6.* Press the power button (lock your screen, turn the screen off, but don't power the device off!) *7.* Unplug the USB cable. *8.* Unlock your phone. *9.* Press on the KitchenSink app icon. *10.* Expect to see a black background for a second or two and then it will restart the app. *11.* If you don't, repeat from step 1. *Notes* -Different apps behave differently. The KitchenSink app, for example, seems to show a black background for 1-2 seconds and then restart the whole app. Other apps, such as Mister (from Google Play), actually shows a black screen and never continues to do anything else. The Jiffy Lube app, restarts and has the loading screen image visible as the background border. -KitchenSink was packaged with a 2.0 CI build. -Mister on Google Play is packaged with a 1.9.0.v20120209110134 build. -Jiffy Lube on Google Play is packaged with the 1.8.2 build. -If it doesn't work the first time, please keep trying for a while. Sometimes it takes a few tries, before you can reproduce this issue. Also try to restart your device, so all other apps are unloaded from memory. Try to open a few more apps, or maybe even less apps, it should eventually be reproducible. -Only tested on a HTC Sensation 4G, running Android 2.3.x.",1 +"TIMOB-8368","03/28/2012 16:17:42","iOS: soft keyboard behavior during orientation change is now different across handheld devices","Description: While writing bug TIMOB-8363 we checked the behavior of this iOS feature on a variety of devices and found new behavior but unique in all of them. For the 4.0.2 device, the keyboard is not rendered correctly during rotation (see TIMOB 8363) On 4.3.5 when starting with the soft keyboard on screen, on orientation change, the keyboard animates off-screen then is redrawn after the UI has handled the orientation change. This occurred on both portrait to landscape and landscape to portrait orientation changes. On iPod 5.1 the same behavior like on iPod 4.3.5, but this occurs only when making a portrait to landscape orientation change. For landscape to portrait orientation changes, the soft keyboard does not leave the screen during the orientation change, it simply rotates with the other UI elements. Steps to reproduce: 1) Using SDK 2.0.0.v20120328000206 build and install KS 2) Bring up the soft KB 3) Rotate the device Result: All devices show unique behavior, but in general there is a KB redraw. The older behavior was that the KB stayed on screen and rotated with the UI. Expected: The KB stays on screen and rotates with the UI. Notes: Does not occur with 1.8.2",1 +"TIMOB-8383","03/28/2012 17:47:11","iOS: Feature to add a property to detect if keyboard is being displayed or not","It has been requested to add a new feature to check if soft keyboard on the device is displayed or not. ",1 +"TIMOB-8414","03/29/2012 11:37:16","Android: Debugger - On V8, JNIUtil error messages appear when debugging with breakpoints","Steps to reproduce: 1. Unzip and import attachment 2. From https://wiki.appcelerator.org/display/tp/Debugger+Test+Plan, execute test case 1013 Actual: After step 9, the following error messages appear: {code} E/JNIUtil ( 398): !!! Unable to convert unknown Java object class 'org.appcelerator.kroll.KrollRuntime$1' to Js value !!! E/JNIUtil ( 398): !!! Unable to convert unknown Java object class 'org.appcelerator.kroll.KrollRuntime$1' to Js value !!! E/JNIUtil ( 398): !!! Unable to convert unknown Java object class 'org.appcelerator.kroll.KrollRuntime$1' to Js value !!! {code} Even though these error messages appear, it does not seem to affect the debugger i.e. the debugger does not terminate and I am still getting expected results from the debugger test plan. Expected: Error messages should not appear. Note: * The error messages do not appear in 1.8.2 * Only tested in v8. Did not test in rhino. * The error messages appear only when using breakpoints.",0.5 +"TIMOB-8417","03/29/2012 12:17:54","iOS: Textfield in a scrollview scrolls if bluetooth keyboard is connected to iPad","h3. Code h1. Please test on the iPad device {noformat} var win = Ti.UI.createWindow({ backgroundColor:'white' }); var field = Ti.UI.createTextField({ hintText: 'password', color:'#666', width:'94%', left: '3%', top: 140, width: '50%', height: 45, borderRadius:0, borderStyle:Titanium.UI.INPUT_BORDERSTYLE_BEZEL, passwordMask: true }); var scroll = Ti.UI.createScrollView({ left: 11, top: 12, width: 433, height: 390, contentHeight:'auto', contentWidth: 'auto', }); scroll.add(field); win.add(scroll); win.open(); {noformat} h3. Expected Behavior Clicking on the textField should not scroll it up when a bluetooth keyboard is connected to the iPad. h3. Actual Behavior On connecting the keyboard and clicking on the textfield, the textfield scrolls up as if the soft keyboard is present.",1 +"TIMOB-8418","03/29/2012 12:35:59","iOS: AudioPlayer is failing for some mp3, even if are in a supported format/encoding.","h4. Problem Description This doesn't seem to work for me, the mp3 plays fine via a web browser though. The code is correct so internally it doesn't like the file format. Is there a reason for this or something I can do (including encoding the audio differently) so that it's compatible. 90% of the audio files I encode all work, it's only a small number that don't and they are encoded the same way always. Replacing the audio file with something else works fine. This is the last stumbling block to release my app. h4. Actual Results One file it's working, one it's not. EVen if they are encoded in the same way. h4. Expected results Similar encoded mp3 files should play just fine h4. Test Case 1. Create a new mobile Project 2. Add this code {code} var win = Ti.UI.createWindow(); var vurl = ""http://www.voxsci.com/turtle2.mp3""; Ti.API.info(vurl); var streamer = Titanium.Media.createAudioPlayer({ allowBackground: true, url:vurl, preload:true }); streamer.start(); Ti.API.info(""Audio started""); win.open(); {code} 3. If you change the vurl to ""http://www.voxsci.com/turtle1.mp3"", it will work just fine. h4. Extra info I checked the files, they are similar: Mono, 44100hz, 32 bits float and they work in browser and audacity. ",2 +"TIMOB-9153","03/29/2012 14:37:17","Android: Deployment: Android Emulator intermittently fails to launch app after timed out","Emulator launches and fails to load app with timed out log: [INFO] logfile = /Users/dhyde/Documents/Titanium Studio 2.0.0 Workspace/NewProject/build.log [INFO] Building NewProject for Android ... one moment [INFO] Titanium SDK version: 2.0.0 (03/28/12 18:32 7c5487f) [ERROR] Timed out waiting for emulator to be ready, you may need to close the emulator and try again Steps to Reproduce: 1. Create project, launch on emulator. Expected Result: App should launch. Actual Result: Intermittently app does not install. Timed out error.",2 +"TIMOB-8425","03/29/2012 14:53:48","iOS: Textfield in scrollview does not slide back to original position on blur","h3. Code Test this code in landscape orientation {noformat} var win = Ti.UI.createWindow({ backgroundColor:'white' }); var formboxLeft = Ti.UI.createView({ backgroundImage:'bg-white-box--with-shadow.png', left: 20, top: 265, width: 460, height: 420, }); var field = Ti.UI.createTextField({ hintText: 'password', color:'#666', width:'94%', left: '3%', top: 140, width: '50%', height: 45, borderRadius:0, borderStyle:Titanium.UI.INPUT_BORDERSTYLE_BEZEL, passwordMask: true }); var scroll = Ti.UI.createScrollView({ left: 11, top: 12, width: 433, height: 390, contentHeight:'auto', contentWidth: 'auto', }); scroll.add(field); formboxLeft.add(scroll); win.add(formboxLeft); win.open(); {noformat} h3. Expected Behavior Clicking on the textfield should bring up the keyboard and on textfield blur (keyboard down), the textfield should scroll back to original position h3. Actual Behavior Textfield does not scroll back to original position and there is a gap that can be seen between the textfield and the border of the scrollview.",1 +"TIMOB-8428","03/29/2012 16:23:11","iOS: Project does not rebuild when new modules are added to tiapp.xml","Noted by Jeff H during a demo. Note that these steps _do_ appear to work for me, so I'm not sure if this was fixed already, or if there is a nuance I'm missing in the reproduction case. # Build an iOS project # Edit app.js to require the module # Add a new module to the project and edit the tiapp.xml manually to add the module # Rebuild the project. The app fails to run because it can't find the module. Doing a ""Project > Clean"" fixes it. In speaking with Steven, it appears that platform needs to keep track of the last time the tiapp.xml was touched to know if it needs to do a rebuild.",5 +"TIMOB-8431","03/29/2012 17:50:21","iOS: 4.3: KitchenSink: Base UI > Views > Map View: mapview annotation view does not appear","When KitchenSink > UI > Views > Map View is run, the annotation view (white box with title and subtitle) is not displayed on mapview load. However, clicking the annotation pin will correctly display the annotation view. Otherwise, the annotation view correctly displays on mapview load on the iPad3 5.1 and iPad/iPhone Simulator 5.0. This is a regression, as it works on iPad/iPhone Simulator 4.3 using SDK 1.8.2. This is not directly related to https://jira.appcelerator.org/browse/TIMOB-5305, as the bug is fixed on the iPad 4.3 device and simulator. Steps to Reproduce: 1. Run KitchenSink > UI > Views > Map View on iOS. Expected Result: Annotation view should be visible. Actual Result: Annotation view not visible.",1 +"TIMOB-8437","03/30/2012 08:14:28","Android: TextField layout bug on tablet","h6.Issue When using the texfield on android tablet in the following way, the background of the textfield and its cursor becomes invisible. Modal property true should cause the issue. h6.Tested on Droid Razr 2.3.5 > non affected Asus Transformer Tf101 with honeycomb(3.1) > affected h6.Repro sequence {code} /** * @author Carlo Blanco Benitez */ var win = Ti.UI.createWindow({ backgroundImage:'guide_fond_notice.png',//backgroundImage attached navBarHidden:true, exitOnClose:true, //modal:true,//having modal enabled backgroundColor:'black', top:'0dp', left:'0dp', right:'0dp', bottom:'0dp' }); var wrapper = Ti.UI.createView({ top:'0dp', left:'0dp', right:'0dp', bottom:'0dp' }); win.add(wrapper); var textField = Ti.UI.createTextField({ color:'black', width:'100dp', height:'50dp', returnKeyType: Titanium.UI.RETURNKEY_SEARCH, autocorrect:false }); wrapper.add(textField); win.open(); {code} ",3 +"TIMOB-8439","03/30/2012 10:05:24","Android: Unable to get any results when pulling events by date range","h6.Issue Exception is thrown as Android is unable to get any results when pulling events by date range h6.Tested on sdk-version: 2.1.0.v20120329000337 h6.Runtime engines Same thing happens with V8 and Rhino. h6.Device Galaxy Tab 7 Plus model GT-P6210 Android version 3.2 Kernel 2.6.36-P6210UEKJC-CL567728 se.infra@SEI-20 #3 h6.Repro sequence {code} // this sets the background color of the master UIView (when there are no windows/tab groups on it) Titanium.UI.setBackgroundColor('#000'); var win = Titanium.UI.createWindow({ title:'Calendar', backgroundColor:'#fff' }); win.open(); var startDate = new Date(); startDate.setFullYear(startDate.getFullYear()-1,0,1); Ti.API.info('startDate: '+startDate); var endDate = new Date(); endDate.setFullYear(endDate.getFullYear()+1,0,1); Ti.API.info('endDate: '+endDate); function showCalendars(calendars) { for (var i = 0; i < calendars.length; i++) { Ti.API.info(calendars[i].name); Ti.API.info(JSON.stringify(calendars[i])); } } Ti.API.info('ALL CALENDARS:'); showCalendars(Ti.Android.Calendar.allCalendars); Ti.API.info('SELECTABLE CALENDARS:'); showCalendars(Ti.Android.Calendar.selectableCalendars); var out = []; Ti.API.info('TRY TO GET EVENTS IN ALL CALENDARS:'); var calendars = Ti.Android.Calendar.allCalendars Ti.API.info(JSON.stringify(calendars)); for (var i=0; i < calendars.length; i++) { Ti.API.info(JSON.stringify(calendars[i])); try { var cal_events = calendars[i].getEventsBetweenDates(startDate,endDate); for (var j=0; j < cal_events.length; j++) { out.push(cal_events[j]); }; } catch(err) { Ti.API.error(""ERROR ""+err); } }; Ti.API.info('TRY TO GET EVENTS IN SELECTABLE CALENDARS:'); var calendars = Ti.Android.Calendar.selectableCalendars Ti.API.info(JSON.stringify(calendars)); for (var i=0; i < calendars.length; i++) { Ti.API.info(JSON.stringify(calendars[i])); try { var cal_events = calendars[i].getEventsBetweenDates(startDate,endDate); for (var j=0; j < cal_events.length; j++) { out.push(cal_events[j]); }; } catch(err) { Ti.API.error(""ERROR ""+err); } }; Ti.API.info('ALL THE EVENTS:'); Ti.API.info(JSON.stringify(out)); {code} h6.Console output {code} 03-30 10:49:38.935: I/TiApplication(23751): (main) [98,98] Titanium 2.1.0 (2012/03/29 00:04 ac3852d) 03-30 10:49:38.945: D/KeyguardViewMediator(2827): setHidden false 03-30 10:49:38.955: D/KeyguardViewMediator(2827): setHidden false 03-30 10:49:38.960: D/KeyguardViewMediator(2827): setHidden false 03-30 10:49:38.975: D/KeyguardViewMediator(2827): setHidden false 03-30 10:49:38.995: D/KeyguardViewMediator(2827): setHidden false 03-30 10:49:39.010: D/KeyguardViewMediator(2827): setHidden false 03-30 10:49:39.025: D/KeyguardViewMediator(2827): setHidden false 03-30 10:49:39.035: D/dalvikvm(23751): GC_CONCURRENT freed 281K, 6% free 6505K/6919K, paused 1ms+1ms 03-30 10:49:39.040: D/KeyguardViewMediator(2827): setHidden false 03-30 10:49:39.055: D/KeyguardViewMediator(2827): setHidden false 03-30 10:49:39.075: D/KeyguardViewMediator(2827): setHidden false 03-30 10:49:39.080: D/dalvikvm(23751): Trying to load lib /data/data/info.rborn.calendar/lib/libstlport_shared.so 0x4079b9e0 03-30 10:49:39.080: I/TiApplication(23751): (main) [146,244] Titanium Javascript runtime: v8 03-30 10:49:39.080: D/dalvikvm(23751): Added shared lib /data/data/info.rborn.calendar/lib/libstlport_shared.so 0x4079b9e0 03-30 10:49:39.080: D/dalvikvm(23751): No JNI_OnLoad found in /data/data/info.rborn.calendar/lib/libstlport_shared.so 0x4079b9e0, skipping init 03-30 10:49:39.080: D/dalvikvm(23751): Trying to load lib /data/data/info.rborn.calendar/lib/libkroll-v8.so 0x4079b9e0 03-30 10:49:39.090: D/KeyguardViewMediator(2827): setHidden false 03-30 10:49:39.090: I/TiRootActivity(23751): (main) [0,0] checkpoint, on root activity create, savedInstanceState: null 03-30 10:49:39.095: D/dalvikvm(23751): Added shared lib /data/data/info.rborn.calendar/lib/libkroll-v8.so 0x4079b9e0 03-30 10:49:39.105: D/KeyguardViewMediator(2827): setHidden false 03-30 10:49:39.120: D/KeyguardViewMediator(2827): setHidden false 03-30 10:49:39.140: D/KeyguardViewMediator(2827): setHidden false 03-30 10:49:39.140: D/KeyguardViewMediator(2827): setHidden false 03-30 10:49:39.140: I/LiveWallpaper(2895): Engine.onVisibilityChanged() - false 03-30 10:49:39.140: I/SurfaceFlinger(2698): id=1870 Removed com.android.launcher/com.android.launcher2.Launcher idx=2 Map Size=3 03-30 10:49:39.150: I/SurfaceFlinger(2698): id=1870 Removed com.android.launcher/com.android.launcher2.Launcher idx=-2 Map Size=3 03-30 10:49:39.390: E/TiApplication(23751): (KrollRuntimeThread) [298,298] APP PROXY: ti.modules.titanium.app.AppModule@407b5cd0 03-30 10:49:39.485: I/TiAPI(23751): startDate: Sat Jan 01 2011 10:49:39 GMT+0100 (CET) 03-30 10:49:39.485: I/TiAPI(23751): endDate: Tue Jan 01 2013 10:49:39 GMT+0100 (CET) 03-30 10:49:39.485: I/TiAPI(23751): ALL CALENDARS: 03-30 10:49:39.495: I/TiAPI(23751): My calendar 03-30 10:49:39.495: I/TiAPI(23751): {""hidden"":false,""id"":""1"",""selected"":true,""name"":""My calendar""} 03-30 10:49:39.495: I/TiAPI(23751): dan.tamas.tst@gmail.com 03-30 10:49:39.495: I/TiAPI(23751): {""hidden"":false,""id"":""2"",""selected"":true,""name"":""dan.tamas.tst@gmail.com""} 03-30 10:49:39.495: I/TiAPI(23751): dan tamas 03-30 10:49:39.500: I/TiAPI(23751): {""hidden"":false,""id"":""3"",""selected"":true,""name"":""dan tamas""} 03-30 10:49:39.500: I/TiAPI(23751): test 1 03-30 10:49:39.500: I/TiAPI(23751): {""hidden"":false,""id"":""4"",""selected"":true,""name"":""test 1""} 03-30 10:49:39.500: I/TiAPI(23751): test 1 03-30 10:49:39.500: I/TiAPI(23751): {""hidden"":false,""id"":""5"",""selected"":true,""name"":""test 1""} 03-30 10:49:39.500: I/TiAPI(23751): test 2 03-30 10:49:39.500: I/TiAPI(23751): {""hidden"":false,""id"":""6"",""selected"":true,""name"":""test 2""} 03-30 10:49:39.500: I/TiAPI(23751): SELECTABLE CALENDARS: 03-30 10:49:39.505: I/TiAPI(23751): My calendar 03-30 10:49:39.505: I/TiAPI(23751): {""hidden"":false,""id"":""1"",""selected"":true,""name"":""My calendar""} 03-30 10:49:39.505: I/TiAPI(23751): dan.tamas.tst@gmail.com 03-30 10:49:39.505: I/TiAPI(23751): {""hidden"":false,""id"":""2"",""selected"":true,""name"":""dan.tamas.tst@gmail.com""} 03-30 10:49:39.505: I/TiAPI(23751): dan tamas 03-30 10:49:39.505: I/TiAPI(23751): {""hidden"":false,""id"":""3"",""selected"":true,""name"":""dan tamas""} 03-30 10:49:39.505: I/TiAPI(23751): test 1 03-30 10:49:39.505: I/TiAPI(23751): {""hidden"":false,""id"":""4"",""selected"":true,""name"":""test 1""} 03-30 10:49:39.505: I/TiAPI(23751): test 1 03-30 10:49:39.505: I/TiAPI(23751): {""hidden"":false,""id"":""5"",""selected"":true,""name"":""test 1""} 03-30 10:49:39.505: I/TiAPI(23751): test 2 03-30 10:49:39.505: I/TiAPI(23751): {""hidden"":false,""id"":""6"",""selected"":true,""name"":""test 2""} 03-30 10:49:39.505: I/TiAPI(23751): TRY TO GET EVENTS IN ALL CALENDARS: 03-30 10:49:39.515: I/TiAPI(23751): [{""hidden"":false,""id"":""1"",""selected"":true,""name"":""My calendar""},{""hidden"":false,""id"":""2"",""selected"":true,""name"":""dan.tamas.tst@gmail.com""},{""hidden"":false,""id"":""3"",""selected"":true,""name"":""dan tamas""},{""hidden"":false,""id"":""4"",""selected"":true,""name"":""test 1""},{""hidden"":false,""id"":""5"",""selected"":true,""name"":""test 1""},{""hidden"":false,""id"":""6"",""selected"":true,""name"":""test 2""}] 03-30 10:49:39.515: I/TiAPI(23751): {""hidden"":false,""id"":""1"",""selected"":true,""name"":""My calendar""} 03-30 10:49:39.520: W/TiEvent(23751): (KrollRuntimeThread) [132,430] unable to get any results when pulling events by date range 03-30 10:49:39.520: I/TiAPI(23751): {""hidden"":false,""id"":""2"",""selected"":true,""name"":""dan.tamas.tst@gmail.com""} 03-30 10:49:39.525: W/TiEvent(23751): (KrollRuntimeThread) [4,434] unable to get any results when pulling events by date range 03-30 10:49:39.525: I/TiAPI(23751): {""hidden"":false,""id"":""3"",""selected"":true,""name"":""dan tamas""} 03-30 10:49:39.525: W/TiEvent(23751): (KrollRuntimeThread) [2,436] unable to get any results when pulling events by date range 03-30 10:49:39.525: I/TiAPI(23751): {""hidden"":false,""id"":""4"",""selected"":true,""name"":""test 1""} 03-30 10:49:39.530: W/TiEvent(23751): (KrollRuntimeThread) [3,439] unable to get any results when pulling events by date range 03-30 10:49:39.530: I/TiAPI(23751): {""hidden"":false,""id"":""5"",""selected"":true,""name"":""test 1""} 03-30 10:49:39.530: W/TiEvent(23751): (KrollRuntimeThread) [3,442] unable to get any results when pulling events by date range 03-30 10:49:39.535: I/TiAPI(23751): {""hidden"":false,""id"":""6"",""selected"":true,""name"":""test 2""} 03-30 10:49:39.535: W/TiEvent(23751): (KrollRuntimeThread) [3,445] unable to get any results when pulling events by date range 03-30 10:49:39.535: I/TiAPI(23751): TRY TO GET EVENTS IN SELECTABLE CALENDARS: 03-30 10:49:39.540: I/TiAPI(23751): [{""hidden"":false,""id"":""1"",""selected"":true,""name"":""My calendar""},{""hidden"":false,""id"":""2"",""selected"":true,""name"":""dan.tamas.tst@gmail.com""},{""hidden"":false,""id"":""3"",""selected"":true,""name"":""dan tamas""},{""hidden"":false,""id"":""4"",""selected"":true,""name"":""test 1""},{""hidden"":false,""id"":""5"",""selected"":true,""name"":""test 1""},{""hidden"":false,""id"":""6"",""selected"":true,""name"":""test 2""}] 03-30 10:49:39.540: I/TiAPI(23751): {""hidden"":false,""id"":""1"",""selected"":true,""name"":""My calendar""} 03-30 10:49:39.545: W/TiEvent(23751): (KrollRuntimeThread) [8,453] unable to get any results when pulling events by date range 03-30 10:49:39.545: I/TiAPI(23751): {""hidden"":false,""id"":""2"",""selected"":true,""name"":""dan.tamas.tst@gmail.com""} 03-30 10:49:39.545: W/TiEvent(23751): (KrollRuntimeThread) [3,456] unable to get any results when pulling events by date range 03-30 10:49:39.545: I/TiAPI(23751): {""hidden"":false,""id"":""3"",""selected"":true,""name"":""dan tamas""} 03-30 10:49:39.550: W/TiEvent(23751): (KrollRuntimeThread) [3,459] unable to get any results when pulling events by date range 03-30 10:49:39.550: I/TiAPI(23751): {""hidden"":false,""id"":""4"",""selected"":true,""name"":""test 1""} 03-30 10:49:39.550: W/TiEvent(23751): (KrollRuntimeThread) [3,462] unable to get any results when pulling events by date range 03-30 10:49:39.550: I/TiAPI(23751): {""hidden"":false,""id"":""5"",""selected"":true,""name"":""test 1""} 03-30 10:49:39.555: W/TiEvent(23751): (KrollRuntimeThread) [3,465] unable to get any results when pulling events by date range 03-30 10:49:39.555: I/TiAPI(23751): {""hidden"":false,""id"":""6"",""selected"":true,""name"":""test 2""} 03-30 10:49:39.560: W/TiEvent(23751): (KrollRuntimeThread) [2,467] unable to get any results when pulling events by date range 03-30 10:49:39.560: I/TiAPI(23751): ALL THE EVENTS: 03-30 10:49:39.560: I/TiAPI(23751): [] 03-30 10:49:39.590: D/dalvikvm(23751): GC_FOR_ALLOC freed 246K, 6% free 6610K/6983K, paused 13ms 03-30 10:49:39.590: I/dalvikvm-heap(23751): Grow heap (frag case) to 7.996MB for 1536016-byte allocation 03-30 10:49:39.620: D/dalvikvm(23751): GC_FOR_ALLOC freed <1K, 5% free 8109K/8519K, paused 12ms 03-30 10:49:39.620: W/CursorWrapperInner(23751): Cursor finalized without prior close() 03-30 10:49:39.645: W/CursorWrapperInner(23751): Cursor finalized without prior close() 03-30 10:49:39.645: D/dalvikvm(23751): GC_CONCURRENT freed 1K, 5% free 8108K/8519K, paused 1ms+1ms 03-30 10:49:39.645: W/CursorWrapperInner(23751): Cursor finalized without prior close() 03-30 10:49:39.645: W/CursorWrapperInner(23751): Cursor finalized without prior close() 03-30 10:49:39.670: D/dalvikvm(23751): GC_FOR_ALLOC freed 14K, 5% free 8094K/8519K, paused 12ms 03-30 10:49:39.670: I/dalvikvm-heap(23751): Grow heap (frag case) to 8.630MB for 682256-byte allocation 03-30 10:49:39.690: D/dalvikvm(23751): GC_FOR_ALLOC freed 0K, 6% free 8760K/9223K, paused 12ms 03-30 10:49:39.725: D/dalvikvm(23751): GC_CONCURRENT freed 0K, 6% free 8760K/9223K, paused 1ms+1ms 03-30 10:49:39.730: I/TiRootActivity(23751): (main) [0,0] checkpoint, on root activity resume. activity = info.rborn.calendar.CalendartestActivity@407f22c8 03-30 10:49:39.735: D/WindowManager(2827): addWindowToListInOrder() : current mSkipWidgetFocus='true' 03-30 10:49:39.740: I/SurfaceFlinger(2698): id=1872(1) createSurface 0x40514 for pid 23751 (1x1),2 flag=0, info.rborn.calendar/info.rborn.calendar.CalendartestActivity 03-30 10:49:39.745: D/KeyguardViewMediator(2827): setHidden false 03-30 10:49:39.750: I/WindowManager(2827): Putting input method here! 03-30 10:49:39.750: D/WindowManager(2827): w.mAttrs.token=ActivityRecord{40decca0 info.rborn.calendar/.CalendartestActivity} 03-30 10:49:39.750: D/WindowManager(2827): w.mToken=AppWindowToken{41ae2ef8 token=ActivityRecord{40decca0 info.rborn.calendar/.CalendartestActivity}} 03-30 10:49:39.750: D/WindowManager(2827): Desired input method target: Window{40ba9a60 info.rborn.calendar/info.rborn.calendar.CalendartestActivity paused=false} 03-30 10:49:39.750: D/WindowManager(2827): Current focus: Window{40ba9a60 info.rborn.calendar/info.rborn.calendar.CalendartestActivity paused=false} 03-30 10:49:39.750: D/WindowManager(2827): Last focus: Window{40ba9a60 info.rborn.calendar/info.rborn.calendar.CalendartestActivity paused=false} 03-30 10:49:39.750: D/WindowManager(2827): IM target client: com.android.internal.view.IInputMethodClient$Stub$Proxy@41040b20 03-30 10:49:39.750: D/WindowManager(2827): IM target client binder: android.os.BinderProxy@41066c90 03-30 10:49:39.750: D/WindowManager(2827): Requesting client binder: android.os.BinderProxy@41066c90 03-30 10:49:39.750: D/CLIPBOARD(4466): Hide Clipboard dialog at Starting input: finished by someone else... ! 03-30 10:49:39.750: W/CPUclock(2827): mDVFSUpperLock.release() 03-30 10:49:39.750: D/CLIPBOARD(2827): Hide Clipboard dialog inside hideSoftInput() ! 03-30 10:49:39.750: D/CLIPBOARD(2827): Hide Clipboard dialog inside windowGainedFocus() ! 03-30 10:49:39.750: D/WindowManager(2827): token=AppWindowToken{41ae2ef8 token=ActivityRecord{40decca0 info.rborn.calendar/.CalendartestActivity}} 03-30 10:49:39.750: I/WindowManager(2827): Placing input method @10 03-30 10:49:39.765: D/KeyguardViewMediator(2827): setHidden false 03-30 10:49:39.765: D/KeyguardViewMediator(2827): setHidden false 03-30 10:49:39.765: I/ActivityManager(2827): Displayed info.rborn.calendar/.CalendartestActivity: +1s156ms 03-30 10:49:39.765: D/CLIPBOARD(23751): Hide Clipboard dialog at Starting input: finished by someone else... ! 03-30 10:49:39.770: D/KeyguardViewMediator(2827): setHidden false 03-30 10:49:39.770: D/TabletStatusBar(2886): lights on {code}",2 +"TIMOB-8455","03/30/2012 14:08:48","Android: Email Dialog - Email View does not appear on Kindle Fire","Description: While testing Email Dialog, I noticed that after picking an image email view does not appear. Does not occur on 1.8.2. Spets: 1. Run KitchenSink 2. Go to Base UI-Views-Email Dialog 3. Pick an image Expected result: Email view should appear Actual result: Email view is not shown",1 +"TIMOB-8459","03/30/2012 15:28:19","Android: KitchenSinkNook - Photo Gallery - After selecting an image from the photo gallery, it is not displayed","Steps to reproduce: 1. Launch KS Nook on the Kindle Fire 2. Navigate to Miscellaneous > Photo Gallery 3. Choose a photo Actual result: A gray image view is displayed Expected result: The image is displayed in the image view *Note* works in 1.8.2 Log is attached",1 +"TIMOB-8465","03/30/2012 22:45:33","Android: Activities don't get correctly handled if first opening a Window and then a TabGroup ","h2. Problem description The app opens a window for login - then opens a tabGroup. Android activities are no longer handled correctly. h2. Steps to reproduce See location for the project in the comments. Attaching logs relative to successful and failing case. Successful scenario: The first window is not included in a tab group. Click on on ""connect with facebook"" - then click the 'buy' button and click the ""facebook friends"" button (window i snow included in a tabGroup). Facebook friends are displayed. Failure scenario: Click on login with buddy beers and use the credentials: - test case added below h2. Additional notes login window when you start the app is 'ui/login/start.js' ; tabgroup is in 'ui/common.js' ; facebook api are invoked in 'ui/send/person_via_faceboook.js' and in 'lib/webservice.js' ",1 +"TIMOB-8470","03/31/2012 21:18:49","Android: Picker in scrollView not working","h6.Issue Picker in scrollView not working. h6.Tested on Android Emulator 2.2 Droid Razr 2.3.5 h6.Runtime Engines Rhino / V8 h6.Steps to reproduce 1. Run code below 2. Click the picker h6.Expected behavior See fully operational Pickers whose options render on screen h6.Repro sequence {code} Titanium.UI.setBackgroundColor('#000'); var win1 = Titanium.UI.createWindow({ title:'Tab 1', backgroundColor:'#fff' }); var win5 = Titanium.UI.createScrollView({ contentHeight:'auto', left:15, right:5 ,layout:'vertical' }); var names = ['Joanie', 'Mickey', 'Jean-Pierre', 'Gustav', 'Raul', 'Mimi', 'Emily', 'Sandra', 'Carrie', 'Chachi']; var verbs = ['loves', 'likes', 'visits', 'loathes', 'waves to', 'babysits', 'accompanies', 'teaches', 'announces', 'supports', 'knows', 'high-fives']; var rows1 = []; for (var i = 0; i < names.length; i++) { rows1.push(Ti.UI.createPickerRow({title: names[i]})); } var rows2 = []; for (i = 0; i < verbs.length; i++) { rows2.push(Ti.UI.createPickerRow({title: verbs[i]})); } var rows3 = []; for (i = (names.length -1); i >=0; i--) { rows3.push(Ti.UI.createPickerRow({title: names[i]})); } var column1 = Ti.UI.createPickerColumn( { rows: rows1, font: {fontSize: ""12""} }); var column2 = Ti.UI.createPickerColumn( { rows: rows2, font: {fontSize: ""12""} }); var column3 = Ti.UI.createPickerColumn( { rows: rows3, font: {fontSize: ""12""} }); var picker = Ti.UI.createPicker({ useSpinner: true, visibleItems: 7, type : Ti.UI.PICKER_TYPE_PLAIN, top: 20, height: '200', columns: [ column1, column2, column3 ] }); picker.addEventListener('change', function(e) { Ti.API.info(e.selectedValue[0] + "" "" + e.selectedValue[1] + "" "" + e.selectedValue[2]); }); win5.add(picker); win1.add(win5); win1.open(); {code} ",1 +"TIMOB-8484","04/02/2012 10:14:18","iOS: Ti.UI.Window not restoring correctly after a youtube-in-app view exits","*Code* http://pastebin.com/NXYbpfRH *Expected behavior* When you run the app, watch the YouTube video, it should return without messing up any UI. *Actual behavior* Once the video has finished, it actually shows the status bar overlapping the window. *Steps to reproduce* 1) Click ""Watch YouTube Video"" 2) Click on webview to play Youtube video while holding device in PORTRAIT orientation 3) While video is loading, turn device to LANDSCAPE. You will notice that status bar moves to the PORTRAIT orientation. 4) While video is playing in LANDSCAPE, return device to PORTRAIT orientation (you will notice that statusbar is in proper position). 5) Return device to LANDSCAPE orientation, and end video by clicking ""Done"". 6) The Youtube player will close and the window will reopen with window's navbar underneath the status bar. *Notes* -Only happens on a device, I tried with an iPhone 3GS running 5.0.1. -HD ticket: http://support-admin.appcelerator.com/display/APP-333237",3 +"TIMOB-8492","04/02/2012 16:40:30","Android: Impossible to lock the app in Landscape mode","h4. Problem Description Have been trying to setup a tab app to be locked in landscape mode via tiapp.xml (modifying the android manifest): {code} {code} h4. Actual Results The tabbed app doesn't show in landscape h4. Expected results The tabbed app showing in landscape mode. h4. Test Case. 1. Create a new mobile Project 2. Replace the default android manifest section in the tiapp.xml with this: {code} {code} 4. Run h4. HD Discussion http://support-admin.appcelerator.com/display/APP-654753",2 +"TIMOB-8513","04/04/2012 10:03:42","iOS: Tableview shifting after 1.8.2 update","h4. Problem Description I have a tableview in a window. If I open that window using tab1.open(theWindow), the tableview appears as it should. BUT if I close that window using tab1.close(theWindow) and open it again later using the same tab1.open(theWindow), the tableview quickly shifts up to it's position. It is almost like it is animating 20px when the window is opened. I am NOT using any animations. Sample code below h4. Actual Results After the first time, the tableview appears animated. h4. Expected results Tableview without animation h4. Test Case 1. Create new mobile project. 2. Paste this code {code} //create main window var window1 = Titanium.UI.createWindow({ navBarHidden:true,tabBarHidden:true }); //create and add button to open window 2 var btn = Ti.UI.createButton({height:100,width:100}); window1.add(btn); //create window 2 for tableview var window2 = Titanium.UI.createWindow({ navBarHidden:true,tabBarHidden:true }); //create back button to go back to main menu var backBtn = Titanium.UI.createButton({height:30,width:50,top:10,left:10}); //create search bar var search = Titanium.UI.createSearchBar({ showCancel:false }); //create data for tableview var theData = [ { title:""One"", hasChild:true }, { title:""Two"", hasChild:true }, { title:""Three"", hasChild:true }, { title:""Four"", hasChild:true }, { title:""Five"", hasChild:true } ]; //create tableview var menu = Ti.UI.createTableView({ height:405, top:55, data:theData, search:search }); //add menu and back button to window 2 window2.add(menu); window2.add(backBtn); //Set up the Tab Group var tabGroup = Titanium.UI.createTabGroup(); var tab1 = Titanium.UI.createTab({ title:'window1', window: window1 }); //Add and open tabgroup tabGroup.addTab(tab1); tabGroup.open(); //button click events btn.addEventListener('click',function(){tab1.open(window2);}) backBtn.addEventListener('click',function(){tab1.close(window2);}) {code}",2 +"TIMOB-8621","04/04/2012 12:11:48","Android: Error creating Module projects with new installation of SDK r18 and Google APIs r8","When creating an Android module project, the process ends in error: {code} [ERROR] Couldn't find the Google APIs r8 add-on directory {code} 1. Create a new module project using titanium, for example: {code} dhydeMBPSnowLeopard:~ dhyde$ ""/usr/bin/python"" ""/Library/Application Support/Titanium/mobilesdk/osx/2.0.1.v20120407201726/titanium.py"" ""create"" ""--type=module"" ""--id=com.appcelerator.mymodule"" ""--name=MyModule"" ""--dir=/var/folders/Jt/Jte2czQvFoaxMh25z-WDKE+++TM/-Tmp-/module_temp8018343781039291630.tmp"" ""--platform=android"" ""--sdk=/Users/dhyde/Documents/android/android-sdk-macosx"" {code} Expected Result: Module project should be created.",0.5 +"TIMOB-8515","04/04/2012 15:07:08","Android: runtime error in ti/window.js","A client has encounter a problem in the window.js file in the SDK. I have not been able to reproduce it. There is a ""delete account"" button than when pressed, it will fire a global app event. Ti.App.fireEvent(); This event will close all the open windows, except the ""BaseWindow"" (heavyweight window in declared in app.js), including the one where the button is. The button is in a lightweight window that sits on top of the BaseWindow. After the windows are closed, a lightweight window (login window) opens on top of the BaseWidow (in place of the previously closed one). And this is where they're seeing this runtime error. ",3 +"TIMOB-8517","04/04/2012 15:43:57","iOS: Add Ti.Geolocation.ACCURACY_HIGH / ACCURACY_LOW","iOS needs to support the two new ""common"" geolocation accuracy settings, by aliasing them to existing properties: {{Ti.Geolocation.ACCURACY_HIGH}} {{Ti.Geolocation.ACCURACY_LOW}}",0 +"TIMOB-8549","04/05/2012 11:34:17","Android: Memory Managment Issue","*Code* http://pastie.org/3732988 *Steps to reproduce* Run the app inside the emulator/device, load up ddms, watch the heap size increase. *Expected behavior* The code is creating and releasing Ti objects, so it should allocate and deallocate memory over time. *Actual behavior* It actually keeps building up and gradually increases the heap size, it doesn't seem to go down a lot, it mainly increases. *Notes* -You might have to run this for a few minutes, in order to replicate this behavior. -The app is opening a new window, and releases it. So you will see the window going back and forth, which is the expected behavior. It will automatically open/close the window over time. You should only have to observe the 'heap size' and 'allocated' in ddms. -Only tested on the emulator. -HD ticket: http://support-admin.appcelerator.com/display/APP-341636",5 +"TIMOB-8558","04/05/2012 14:05:22","iOS: Transport.py is not working in CI ","h4. Problem Description I've been running into issues with the 2.X CI builds and transport.py. Due to how we handle builds, I need to use transport.py for all submissions and ad hoc builds. Any of the 2.X or Master builds have this build issue. h4. Actual Results The build via transport.py is failing. h4. Expected Results The build via transport.py working just fine h4. Test Case 1. Create a new Titanium project targeting a 2.X CI build 2. Run the transport.py process as usual 3. Open in xcode and try to run in the simulator h4. Extra info When xcode tries to compile you will get the below error [TRACE] app property, ti.ui.defaultunit : system [INFO] wrote Resources/stylesheet.plist Traceback (most recent call last): File ""titanium/iphone/compiler.py"", line 7, in import os, sys, re, shutil, time, run, sgmllib, codecs, tempfile File ""/Users/benjamin/Dev/Projects/Ti/myTravel/test/build/iphone/titanium/iphone/run.py"", line 2, in from tools import ensure_dev_path ImportError: No module named tools Command /bin/sh failed with exit code 1 I tried this again today using the below build version. h4. HD Discussion http://support-admin.appcelerator.com/display/APP-522817 ",2 +"TIMOB-8563","04/06/2012 06:47:20","BlackBerry: Support ability to create new blackberry project in Titanium Studio","Work with the studio team to integrate project creation ",2 +"TIMOB-8565","04/06/2012 07:05:04","BlackBerry: Extend the ndk classes to create the shell application"," Extend the ndk classes to create our shell application that will contain the app.js and the kroll and v8 runtimes (equiv. android/titanium/.project) - learn what is needed to create the blackberry shell app to contain the app.js as resource - Create actual classes extending the classes in the ndk, they will form the titanium library - Do the minimum to get the app up and loading the js file, leave the rest stubbed out with TODOs - create file templates for the shell app - link with libV8 and Kroll",2 +"TIMOB-8566","04/06/2012 07:10:17","BlackBerry: Build v8 on the QNX ndk as static lib","Possibly create wrappers for the v8",3 +"TIMOB-8569","04/06/2012 07:17:13","BlackBerry: Integrate unit tests","need more info from Vishal, drillbit vs module tests?",20 +"TIMOB-8570","04/06/2012 07:22:02","BlackBerry: Run on simulator and device","minimum BB10 for demo",5 +"TIMOB-8594","04/06/2012 07:46:58","BlackBerry: Full support for builder script","Implement all targets",20 +"TIMOB-8598","04/06/2012 07:49:35","BlackBerry: Setup and test guide","Guide for QE/developers to setup and test the Blackberry port of Titanium SDK using KitchenSink Should be placed on a separate page in this space: https://wiki.appcelerator.org/display/PEBKBRY/Home",2 +"TIMOB-8610","04/06/2012 17:09:35","Android: Tab.open(windowName) doesn't open a new window inside the Tab container","In android tab.open(windowName) doesn't open a new window inside the tab container. It works fine in iOS. h4. tab.open(windowName) works in iOS and h4. tab.add(windowName); h4. windowName.open(); h4. works fine in android I have commented it in the app.js file as well. Please find it attached. h4. Repo Steps 1. Run the attached app.js file. 2. Click the window 1 and you can see the new window is opening outside the tab container.",2 +"TIMOB-8612","04/09/2012 10:08:39","iOS: Problem getting responseText/headers from onerror response","h3. Problem The HTTPClient does not seem to be able to get the responseText/headers from the server in onerror response(the console shows everything I print in the example below as null). h3. Code {noformat} var xhr = Titanium.Network.createHTTPClient({ 'timeout': 5000 }); xhr.onerror = function() { if (this.status == 401) { //auth challenge required var guid = xhr.getResponseHeader('X-Challenge-GUID'); Titanium.API.info('Server gave GUID challenge of: ""' + guid + '""'); Titanium.API.info('TEST FOO: ' + xhr.getResponseHeader('X-Custom-Header')); Titanium.API.info('TEST BAR: ' + this.getResponseHeader('Cache-Control')); Titanium.API.info('TEST BLA: ' + xhr.responseText); Titanium.API.info('TEST BOO: ' + this.responseText); } } xhr.open(""GET"", url); xhr.send(); {noformat} The getResponseHeader is responding as null. The onload method works fine but on trying to get the data from onerror ""null"" is returned. h3. Related Community Ticket http://developer.appcelerator.com/question/50501/problem-getting-responsetextheaders-from-error-response ",0 +"TIMOB-8627","04/09/2012 15:41:41","iOS: Refine Obj-C, Obj-C++ coding standards","iOS currently has some [coding standards|https://wiki.appcelerator.org/display/pe/Coding+Standards] available, with an uncrustify (to beautify source) in [tidevtools|https://github.com/billdawson/tidevtools]. We need to evaluate the uncrustify (and manually written instructions) for: * Correctness * Completeness * Consistency * Tabs vs. spaces (we need to standardize on one!) These standards should apply to Objective-C and Objective-C++ only, but may require some preliminary drafts for C and C++ style. This ticket is *not* for establishing design patterns or workflow (unlike the broad scope of TIMOB-8241, which is being narrowed.) Part of this ticket is also deciding how to enforce code formatting (i.e. coerce all submitters to make their source conform to the standard).",0 +"TIMOB-8653","04/10/2012 15:10:10","Tooling: Separate SDK from the Platform","This task comprises a few high level tasks: * The SDK should live as it's own standalone component, with it's own git repository * The SDK and Platform should be able to have their own release cycles, and the SDK should be able to work with multiple versions of the Platform",5 +"TIMOB-8658","04/10/2012 15:52:45","Android: Switch search order of folders/environment variables in androidsdk.py","I accidentally updated my ANDROID_SDK environment variable to a bad value, and suddenly Studio was unable to find my Android platforms, even though I had a correct SDK specified in preferences. Digging into the code, I see that we pass a specific directory to search to avd.py, by androidsdk.py/find_sdk() defers to ANDROID_SDK before utilizing ""supplied"". It seems we should respect the passed-in directory first before defaulting to backup options like environment variables.",2 +"TIMOB-8662","04/10/2012 16:41:03","Tooling: Write a CLI specification","Write a CLI specification that covers: * CLI workflow * Argument naming and value standards * Initial set of CLI commands * Initial set of CLI arguments * External CLI APIs (for CLI modules) The target list of commands should contain: * Validation of project (module+app) creation arguments per platform * Project creation - modules + apps * Project migration between Titanium SDK versions * Per-platform setup * Environment / project validation * Build project (APK, IPA, deployable web app in MobileWeb) * Publish (may be type of build) * Obfuscation/minification * Optional Lint * Emulator/Simulator launch * Deploy project (to a device, to an emulator) * Debugger / REPL Other requirements that were gathered: * Studio needs standardized logging and errpr message parsing * Standard interfaces to basic commands across platforms * Have a list of command capabilities / implementations per platform ",5 +"TIMOB-8665","04/10/2012 17:26:53","Android: INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES when installing different app with same app id","When an android app is installed, and that app is already installed using a different deploy type (i.e., production vs. testing), or a different app is installed with the same app id, there is an error INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES logged to the console. I would expect the script to fail with a meaningful error message (and Titanium Studio to have an error prompt if necessary) indicating an app with the same app id and a different certificate is already installed on device, remove this app to continue installation. Steps to Reproduce (Scenario 1): 1. Create a new Android project. 2. Distribute for production and install to device. 3. Deploy again to device from studio. Steps to Reproduce (Scenario 2): 1. Create a new Android project. 2. Install to device in development mode. 3. Create another Android project with the same app id. 4. Deploy second app to device. Expected Result: Script fails with meaningful error message, studio prompts error if necessary. Actual Result: Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES] logs to console, difficult to know exactly what the problem is.",3 +"TIMOB-8681","04/11/2012 13:33:27","Core: Define C/C++ coding standards","Define a document that outlines all C/C++ coding standards any C/C++ written for Appcelerator (internal or community contributions) should adhere to. This should represent more than syntax, but general design approaches and process flow. This document will be focused on language only. Platform Specific information will be contained inside another document.",5 +"TIMOB-8695","04/11/2012 18:44:36","Android: Database Install fails to install from applicationDataDirectory","The documentation doesn't state that its impossible to run Ti.Database.install(Ti.Filesystem.applicationDataDirectory, 'mydb'); However not matter what you do, it is impossible, further more its a little frustrating as many a database strategy will involve remote files and source files that can be used for later purposes. I can see no reason why the command has to default to the Resources directory. Could there be some clarification on what you can and can't do. And if currently, you can't install from the appDataDirectory, can i suggest it goes high up on the roadmap. this will cost days of developers time a) figuring out what works and doesn't work, then having to write a very long process in evaluating and inserting data, when its not necessary. At the moment you can write to the DB storage space on iOS, it mainly affects android, but I think the SDK should allow for this behaviour. ",5 +"TIMOB-8714","04/13/2012 02:07:59","Android: 'focus' events are not correctly handled for windows in a tabGroup","h2. Problem description 'Focus' events might not correctly handled when associated to a window set in tabGroup and with the url property h2. Steps to reproduce h3. Steps - Create a tabGroup with 2 windows. - Set the url property for each window and define 'focus' event listener in the two 'win1.js' and 'win2.js' files. - Don't set event listeners in the app.js Result: 'focus' event listeners ae not triggered on Android (on iOS works fine). h3. Code {code:lang=javascript} // app.js var tabGroup = Titanium.UI.createTabGroup(); var win1 = Titanium.UI.createWindow({ title:'Tab 1', backgroundColor:'#fff', url:'win1.js' }); var tab1 = Titanium.UI.createTab({ icon:'KS_nav_ui.png', title:'Win 1', window:win1 }); var win2 = Titanium.UI.createWindow({ title:'Tab 2', backgroundColor:'#fff', url:'win2.js' }); var tab2 = Titanium.UI.createTab({ icon:'KS_nav_ui.png', title:'Win 2', window:win2 }); tabGroup.addTab(tab1); tabGroup.addTab(tab2); tabGroup.open(); {code} {code:lang=javascript} // win1.js var win1 = Ti.UI.currentWindow; win1.addEventListener('focus',function(e){ alert('test win1'); }); {code} {code:lang=javascript} // win2.js var win2 = Ti.UI.currentWindow; win2.addEventListener('focus',function(e){ alert('test win2'); }); {code} h2. Additional notes: Customer ticket : http://support-admin.appcelerator.com/display/APP-221687/conversation/read_all",1 +"TIMOB-8718","04/13/2012 12:28:52","Core: Compare possible CLI technologies","In order to select the appropriate tool for the new CLI, we need to perform a side-by-side evaluation for the following proposed technologies: * node.js (TIMOB-8640) * Python 2.7.x (TIMOB-8715) * Python 3.2.x (TIMOB-8715) * Ruby (no ticket, proposed) * Java + RHINO (no ticket, hat tip to cbarber for the suggestion) Advantages, disadvantages, etc. of each of these technologies is documented in their specific tickets and via meeting notes being compiled by Marshall. Note that one of the suggestions proposed in the node.js meeting was to create a pluggable {{git}}-like infrastructure, so that the command {{titanium xxx}} would call out to a {{titanium-xxx}} script, which could be in any scripting language (or a compiled tool). This evaluation may recommend this approach if we believe multiple technologies are appropriate for different tasks. These are the high level tests we should use in judging any solution: * Subprocess / Child process APIs ([ipc side-by-side comparison|https://gist.github.com/2583397]) ** A test that executes a short-lived process and collects it's results ** A test that executes a long-lived process and collects it's stdout / stderr output and reprints that output in real time * Logging APIs ([log side-by-side comparison|https://gist.github.com/2581199]) ** A test that creates a simple unified logger with a base string format and configures certain log levels as visible ** A test that associates multiple loggers with various system components * Compression (zip) APIs ([zip side-by-side comparison|https://gist.github.com/2572795]) ** A test that opens a ZIP file, scans the contents, and extracts one of the files for processing ** A test that creates a new ZIP file using a mix of normal files, deep paths, and symlinks * Javascript AST parsing / manipulation: *NOTE:* This is now part of a separate technology evaluation. See TIMOB-8947 for discussion relating to AST. We have been delivered the requirement for a single AST for the product, and it is assumed that CLI tooling will call out to this rather than have an AST. ** A test that parses a simple Javascript file, and reports back an AST ** A test that does minor manipulation of the AST, and transforms back to JS Each test should include performance metrics over many runs, and information about external module(s) used along with versions.",3 +"TIMOB-8729","04/13/2012 17:40:23","Android: TextField: Text is not visible, and view appears to redraw before keyboard is displayed","In TextField cannot see any texts that is being typed in and the cursor blinks outside the text field. For a second previous view is shown Steps to reproduce 1:Install and run the app 2: Tap inside the text field 3:type in word {code} var window = Ti.UI.createWindow({ backgroundColor: 'blue' }); var textField = Ti.UI.createTextField({ backgroundColor: '#fff', height: 30, top: 20, left: 20, right: 20 }); window.add(textField); window.open(); {code} Actual result: Could not see the text typed in,on focus the window returns to the previous view for a second. Expected result:should be able to see the text and the cursor should blink inside the text field *Note : this is not a regression bug,it goes back to 1.8.2* ",5 +"TIMOB-8730","04/13/2012 18:08:07","Android: When invoking other intent from the app, the pause event is not being triggered ","h4. Problem Description If we call another app or activity in the android app, the pause event is not being fired. h4. Actual Results Event is not fired h4. Expected Results The event pause should be fired. h4. Test case 1. Create mobile project. 2. Paste this into the app.js {code} if(Ti.Platform.osname == 'iphone') { // WORKING FOR iPHONE // do nothing } else { // event listeners for android // NOT WORKING Ti.Android.currentActivity.addEventListener('create',function(){Ti.API.info('Create call')}); Ti.Android.currentActivity.addEventListener('destroy',function(){Ti.API.info('Destroy call')}); Ti.Android.currentActivity.addEventListener('pause',function(){Ti.API.info('Pause call')}); Ti.Android.currentActivity.addEventListener('resume',function(){Ti.API.info('Resume call')}); Ti.Android.currentActivity.addEventListener('start',function(){Ti.API.info('Start call')}); Ti.Android.currentActivity.addEventListener('stop',function(){Ti.API.info('Stop call')}); } Ti.Platform.openURL('tel://911'); {code}",1 +"TIMOB-8743","04/16/2012 14:33:18","Android: Intermittent 'force close' issue","*Issue* -The app randomly 'force quits' when launched, I personally don't seem to be able to reproduce this (yet). -What one of the users reported back: ""I launch and it's basically frozen...the small black ""app name"" bar appears at the top but nothing happens...now finally after minutes (3-5) got the error message ""sorry! Activity APPNAME (in application APPNAME is not responding...force close...wait...report"" -Attached are the log files. App source code can also be attached, if required. *Notes* -Name of the actual app has been removed and replaced with 'APPNAME'.",2 +"TIMOB-8745","04/16/2012 14:44:03","Android: Intermittent app 'freeze' issue","*Issue* -The app randomly freezes when it's on the loading screen. -Comments: ""User reported a hanging login (loading bar went to full green, but then nothing happened) directly after a force-close and relaunch. Log attached."" -Attached is the log file. App source code can also be attached, if required. *Notes* -Name of the actual app has been removed and replaced.",3 +"TIMOB-8772","04/17/2012 16:50:20","Android: Alignment Issues on Android, layout appears broken","8 Buttons are added to the window, and have a background image. When they are aligned together in a line, it appears broken. It looks continuous on iOS. I have attached images to explain this. Also have included the code sample. {code} var win = Titanium.UI.createWindow({ backgroundColor:'white', title:'window', barColor:'#ff7b01', top:0 }); var arr = ['5d', '1m', '3m', '6m', 'YTD', '1yr', '2yr', '4yr']; for(var i=0;i. A TabGroup tab instance. Each tab includes a button and one or more windows, which holds the ""contents"" of the tab. Users can select a tab by clicking on the tab button. In iOS, this actually is more of a combination of UITabBarItem and UINavigationController meant to go into a tab group. Android does not have a navigationController concept, so it depends on what Blackberry provides. https://developer.apple.com/library/ios/#documentation/UIKit/Reference/UITabBarItem_Class/Reference/Reference.html#//apple_ref/doc/c_ref/UITabBarItem https://developer.apple.com/library/ios/#documentation/UIKit/Reference/UINavigationController_Class/Reference/Reference.html#//apple_ref/doc/c_ref/UINavigationController ",5 +"TIMOB-8850","04/20/2012 13:54:32","Core: Create a new Titanium Unit Test Harness","Problem Statement: ""Titanium needs a standalone unit test system for testing the various peices of the platform, including: Core functionality, UI tests, and high level CLI tests. The existing unit test driver, Drillbit, was written on Titanium Desktop, which has been turned over to the open source community. We need to re-evaluate the base technology based on the new CLI work."" Drillbit components: * Platform-specific test harness application * Test APIs * Command Line Interface * UI interface ",0 +"TIMOB-8851","04/20/2012 13:57:10","Core: Write a specification for the new Unit Test Harness","We need to write a specification for these components of our new Unit Test Harness: * CLI interface * Unit test APIs that cover basic assertions, and UI testing * Test Results output (JSON) for collection by CI This task is evolving with data found from prototyping and integration.",5 +"TIMOB-8867","04/23/2012 16:58:30","iOS: Update default tiapp.xml to reflect changes to iOS-specific properties","See TIDOC-585 and TIMOB-7664",5 +"TIMOB-8898","04/26/2012 12:18:59","Android: Support FILL behavior on contentWidth/contentHeight property of scroll view","{code} var win = Ti.UI.createWindow({ backgroundColor:'white' }); var scrollView = Ti.UI.createScrollView({ top:10, left:5, layout:'vertical', scrollType: 'vertical', contentHeight:Ti.UI.FILL // contentWidth:'auto' }); var things = [ 'item1', 'item2', 'item3', 'item4', 'item5', 'item6' ]; for (var i = 0; i < things.length; i++) { var view = Ti.UI.createView({ height: 140, width: 90, top: 10, left: 10, backgroundColor: '#CCC' }); scrollView.add(view); }; win.add(scrollView); win.open(); {code} Expected results: The contentHeight should be the size of the scroll view (which prevents it from scrolling) Actual results: The contentHeight follows SIZE behavior and is scrollable since the children's height is bigger than the scroll view height",1 +"TIMOB-8926","04/30/2012 10:26:35","Blackberry: Implement proper packaging of blackberry mobile sdk","Add building of libtibb.ca in the scons script and package it properly in the resulting zip file, also remove any unnecessary files from the zip",5 +"TIMOB-8996","05/04/2012 13:12:27","BlackBerry: Complete remaining issues from code review","See pull request: #18 1. void TiUIBase::setTiMappingProperties(const TI_PROPERTY* prop, int propertyCount) prop should be props since it's a pointer to an array of prop objects -- 2. TiUIBase::setParametersFromObject(Local obj) Local propValue; + Handle propString; + TiObject* foundProp; 3 last lines, It's cleaner to declare variables inside the smallest scope they are to be used in and also helps prevent referencing them outside of their scope. In this case the declarations should be inside the for -- 3. int NativeContainerObject::initialize() add protection agains multiple invocations -- 4. if((args.Length()!=2)||(!args[0]->IsString())||(!args[1]->IsFunction())) This line is definitely worth a comment. How come args[0] needs to be a string and args[1] needs to be a function? reminds me of perl :S -- 5. blackberry/tibb/TiUIObject.cpp • createXXXX_ methods out of 14 lines of code in the functions, only 1 really differs. It'd be nice to have a way of abstrating that to remove code duplication which would be a maintenance nightmare as i also forsee many many such functions being created for all the UI controls we need to implement Similarly the associtated classes look very bare and very much alike, is there actual value in having all these look alike classes? Maybe the actual question is can we avoid them? -- 6. VALUE_MODIFY TiPropertyMapObject::onValueChange(Handle oldValue, Handle newValue) the 3 lines inside the the ifs are the same in all cases, they should be rolled into a helper function. -- 7. we should review the logical separation of classes with regards to cascades awareness, separation into folders -- 8. review error handling strategy - run it by appcelerator -- 9. class TiEventContainer please add spaces around the = sign for consistency with the rest of the code.
The formatter doesn't enforce it here. There is at least another instance of that in TiEvent.h -- 10. blackberry/tibb/TiUIBase.h description comment references TiCascadesApp when it should be TiUIBase -- 11. embed class TiInternalEventListener inside TiV8EventContainer? To reenforce it's internalness",5 +"TIMOB-9102","05/06/2012 02:45:04","iOS: getVisible() / getEnabled() functions could return null value","h2. Problem description Boolean functions like getVisible() or getEnabled() can return null value h2. Code sample {code} var win = Ti.UI.createWindow({ exitOnClose:true }); var view = Ti.UI.createView({ top:0, left:0, width: 10, height:10 }); var button = Ti.UI.createButton({ title:'Click Me!' }); button.addEventListener('click', function(e) { alert(view.getVisible()); view.setVisible(!view.getVisible()); }); win.add(button); win.add(view); win.open(); {code} Result: After running the sample code, click on the button to execute view.getVisible(), which return value 'null'. Expected result: If the property was never defined by the user, then the default value should be returned. ",5 +"TIMOB-9007","05/06/2012 08:11:30","iOS: UI.Switch - does not display if value is not set when rendered","h2. Problem Unless the [Titanium.UI.Switch.value|http://docs.appcelerator.com/titanium/2.0/index.html#!/api/Titanium.UI.Switch-property-value] property has been set, the switch does not render on iOS. This is not necessary for Android, so adding the parity label to this ticket. h2. Test Case {code:lang=javascript|title=app.js} var win = Ti.UI.createWindow({ backgroundColor: 'white', layout: 'vertical' }); function printSwitchProperties(obj){ var props = ['enabled', 'value']; for (var p in props){ Ti.API.info('Switch property ' + props[p] + ': '+ obj[props[p]]); } } var basicSwitch = Ti.UI.createSwitch({ // value:true // uncomment to display switch }); win.add(basicSwitch); printSwitchProperties(basicSwitch); basicSwitch.addEventListener('change',function(e){ printSwitchProperties(e.source); }); win.open(); {code} ",1 +"TIMOB-9028","05/07/2012 18:06:33","CLI: ""build"" command for Android apps","Port the Python-based Android builder.py to Node.js. Portions of this has already been completed. h3. Build Process * Validate command line arguments and tiapp.xml settings (TIMOB-14973) * fire ""build.pre.construct"" event * create Builder object * fire ""build.pre.compile"" event * Detect if need to force rebuild (TIMOB-14974) * Init the build/android directory and files (TIMOB-14976) * if not --build-only ** make sure adb server is running (adb lib does this for us) ** wait for the emulator/device to boot ** detect if app is already installed (adb lib does this for us) * Compile resources (TIMOB-14977) * determine Google APIs are required (true unless not build only and building for emulator running non-Google API AVD) * if building for emulator and using Ti.Map.MapView, make sure the emulator is running Google APIs (TIMOB-5438 Compiler Warning When Using Maps with Non-Google APIs SDK) (TIMOB-6860 Tooling: Android build process requires ""Google APIs"" even if ""Ti.Map.createView"" only occurs in comments) * generate build/android/bin/assets/index.json with contents of build/android/bin/assets * generate jss stylesheet => build/android/gen//ApplicationStylesheet.java * generate aidl * process build/android/res/*.xml for all i18n strings ** support app.xml to localize app name (TIMOB-2824 Android: App name localization) * handle splash screen * generate build/android/res/values/theme.xml * Create android.manifest (TIMOB-14978) * remove duplicate res in xml files??? * Build Java files and run dexer (TIMOB-14979) * if not --build-only and not package build, push deploy.json to emulator/device ** wait for sdcard *** gracefully handle timeouts (TIMOB-11827 Android: Installing an app to Android with 4.2 version takes long time) * Package and sign app (TIMOB-14980) * fire ""build.post.compile"" event * fire ""build.finalize"" event ---- h3. Hooks * Package Hook (TIMOB-14981) * Run Hook (TIMOB-14982) ---- h3. Misc * logcat * wait for emulator * delete unused support/android/templates/AppUserData.java * when subprocessing Java-based tools (android, etc), override ""_JAVA_OPTIONS"" environment variable (TIMOB-14322 CLI: Setting _JAVA_OPTIONS global variable breaks building of project) * convert default ""dark"" splash screen to a red-based one (TIMOB-4517 Android: default.png file is a gray image, should be the red default image) * TIMOB-11120 Android: Expose a way for users to exclude js files from being encrypted * TIMOB-339 Android: Missing Icons * TIMOB-13311 Android: CLI: possibility to build apk for beta release (like ios adhoc) (should be resolved with build profiles) * remove dependency on old Android SDKs (TIMOB-13983 Android: Titanium should use the latest stable Android SDK and NDK and not depend on 2.2 API 8)",8 +"TIMOB-9089","05/09/2012 22:41:40","iOS: Update SBJSON to latest","Currently iOS ships with two distinct versions of the {{SBJSON}} library - one which is compatible with (and has been modified for) Titanium since the early pre-0.9 release cycle, and a more modern, maintained version which ships for compatibility with the Facebook module. We need to remove the older SBJSON library, update the latest version with the relevant parsing abilities from our managed SBJSON implementation, and clean code to make the code base more unified, consistent, and remove cruft.",0 +"TIMOB-9111","05/11/2012 13:28:30","TiAPI: Ti.Utils.base64encode behaves different between Android and iOS/Android","h3. Problem The result of Ti.Utils.base64encode is different between iOS and Android. On iOS there are newline characters included when the string is long enough, on Android the newline characters are stripped out (which is the correct way to do base64 UTF8 encoding). Please see the attached screenshot explaining the issue. h3. Sample Code {noformat} (function() { var win = Ti.UI.createWindow({backgroundColor:'white'}); win.open(); var shortString = 'ABCDEFGHIJ1234567890ABCDEFGHIJ12|psndemo2|abcd:1'; var longString = 'ABCDEFGHIJ1234567890ABCDEFGHIJ12|psndemo2|abcd:12345678901234567890'; var tiBase64ShortResult = Ti.Utils.base64encode(shortString); var tiBase64LongResult = Ti.Utils.base64encode(longString); tiBase64ShortResult = String(tiBase64ShortResult); tiBase64LongResult = String(tiBase64LongResult); // BUG #2: Run this code in iOS and Android and compare the results // On iOS we get newline characters. On Android the newline characters are stripped out. // The correct behavior for UTF8 base64 encoding is to strip out the newline characters. // Android's implementation is correct. tiBase64ShortResult = tiBase64ShortResult.replace(/\r\n/g,""***NEWLINE***""); tiBase64LongResult = tiBase64LongResult.replace(/\r\n/g,""***NEWLINE***""); var alertDialog = Titanium.UI.createAlertDialog( { title: 'Result', message: 'short: ' + tiBase64ShortResult + '\nlong: ' + tiBase64LongResult, buttonNames: ['OK','Cancel'] }); alertDialog.show(); })(); {noformat}",5 +"TIMOB-9139","05/15/2012 10:44:52","Android: Tooling: How to set the deploytype ","h4. Problem Description When you do a deployment for distribution, you will think that the deploytype in analytics will switch to production. But it's not happening with some projects. A customer is not getting analytics from his app, and he reported it, the people in the Cloud replied that he didn't set the app to be in prod: The second issue, for the other app GUID 473b9203-836a-4d48-ac13-2993873efa2c, the problem is that the user is using deploytype:test, and analytics only shows up for deploytype:production. When I asked the client to do for production (i.e., deploy it to the Market), he already did that, as the attached image shows. h4. Actual Results App is not set for production in the deploytype. h4. Expected results If you build an app for distribution in the market, the deploytype should be production. h4. Extra info See attached image. ",3 +"TIMOB-9143","05/16/2012 08:25:22","BlackBerry: Implement BB Application Menu (Crosscut Menu)","On BB10 devices swiping from the top of the screen will display a menu bar of action items it is used to control not often use actions that apply (crosscut) across the entire app. See https://developer.blackberry.com/cascades/reference/bb__Application.html#function-swipedown https://developer.blackberry.com/cascades/documentation/ui/navigation/menus.html Look at NativeWindowObject.cpp to see how to do ActionItems",2 +"TIMOB-9144","05/16/2012 08:26:37","BlackBerry: Implement BB push","registerForPushNotifications() for starting point BB push should be available after R6 release early in July. To see an overview of the BB10 push system see http://developer.blackberry.com/cascades/documentation/device_comm/push/index.html Java Based Server Side SDK http://developer.blackberry.com/devzone/develop/platform_services/push_overview.html To enable ASC some server side work is require. Make sure to give the ASC/360 teams early heads before working on this task. ",8 +"TIMOB-9158","05/16/2012 16:12:12","Blackberry: Update the tibbapp project to work with the R4 release of Cascades","- remove extra libs from common.mk - adjust paths to R4 ndk for default detection in blackberryndk.py - And other things that might not work",3 +"TIMOB-9164","05/17/2012 10:20:30","Blackberry: [Studio integration] regenerate the bar-descriptor file at packaging time","the bar-descriptor file needs to be updated everytime we package to pick up potential changes to the tiapp.xml file",8 +"TIMOB-9203","05/23/2012 09:23:31","BlackBerry: Handle JavaScript exceptions in runtime","Currently the Titanium runtime haults JS execution prints information to the stdout during an exception and then the Cascades message loop is entered. This should be changed to shutdown the app and return an error code. Pull request: https://github.com/Macadamian/titanium_mobile/pull/66 ",3 +"TIMOB-9204","05/23/2012 09:35:36","BlackBerry: Bring API doc up to date","Updating API doc is now part of the patch cycle. However, some components added in the past have not been reflected in API doc: - ImageView - TextField - ActivityIndicator (maybe, check it out) This task is to add past work to the API doc.",2 +"TIMOB-9219","05/24/2012 07:18:58","BlackBerry: Refactoring event handler implementation","Add event handler embedded class for each native controllers, which will be responsible for handling QT cascade events.",5 +"TIMOB-9286","05/25/2012 18:12:36","Android: Animation code review","The current state of Android animation APIs and its limitations/bugs needs a review to address various animation issues.",5 +"TIMOB-9306","05/30/2012 08:31:17","Blackberry: add a universal logging mechanism for tibb","Need to add a universal logger to the framework. May use exceptions and stop the app in debug mode and only log in release mode. Also go over all existing qDebug and printf to update them to use the new logger. The logger will also need to do some locking to ensure that logging from concurrent threads doesn't result in logs cut and merged in the middle.",5 +"TIMOB-9366","06/04/2012 12:51:56","Android: Add ""radial"" support to view ""backgroundGradient"" property","Android's radial gradient shader only supports a single point circle radial gradient. The Titanium radial gradient follows what is specified in the HTML Canvas specification and is also the native behavior on iOS. We should investigate a way to implement our own radial gradient that follows the HTML Canvas specification or wait for Android to expose this type of gradient in the future. It has been implemented in Skia, so it is possible this will be added in a future API level. ",3 +"TIMOB-9378","06/05/2012 08:39:47","BlackBerry: Add script to create and install debug token","[Tatyana] A note to myself: this task is a necessary step to be able to deploy an app to a device. This could be added to the devicemanagement.py script. {noformat} blackberry/devicemanagement.py createDebugToken --store-pass --csj-pin --csj-file (--device-pin | --device-pin-list ) --debug-token-bar-file --device --device-password password for keystore and device PIN associated with CSJ file input CSJ file for registration device PIN in hex without the '0x' (e.g. 50F2D211) file containing a list of device PINs debug token file hostname or the IP address of the target device or simulator {noformat} This is an example of what the script should do: {noformat} blackberry-debugtokenrequest -register -storepass 123456 -csjpin 729759 client-RDK-584232624.csj client-PBDT-584232624.csj blackberry-debugtokenrequest -storepass 123456 -devicepin 29AFDEBD dt.bar blackberry-deploy -installDebugToken dt.bar 169.254.0.1 -password 1234 {noformat}",2 +"TIMOB-9398","06/05/2012 14:52:28","Blackberry: Get standard JS keywords to work in V8","things like the following don't currently work in V8: var v = new String('bla bla'); // v is undefined after executing that line var i = parseInt('5'); // TypeError: parseInt not a member of #error These are just 2 examples, many more likely have the same behavior. ",5 +"TIMOB-9403","06/05/2012 16:12:16","Android: Map - Add centerOffset property to Ti.Map.Annotation","This is the parity ticket for Android to see if such functionality can be ported over. ------ Add centerOffset property to a custom annotation to be able to set a x & y offset to the image of the annotation. Right now the center of the annotation is the center of the image size. This makes that some images appear not to be in their proper place at certain zoom levels. Reference to official documentation: http://developer.apple.com/library/ios/#documentation/MapKit/Reference/MKAnnotationView_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40008207 I have already coded the feature and I open this ticket in order to get the pull request accepted.",2 +"TIMOB-9454","06/07/2012 21:10:58","BlackBerry: Complete Layout Handling of UI View","Part of this task need to clean left and top properties from inherited classes that don't need to override the default implementation. One such occurence is in NativeListViewObject",5 +"TIMOB-9481","06/11/2012 12:12:10","iOS: cancelLocalNotification on iOS is broken","In 'bg.js' of kitchensink, notifications cannot be cancelled using 'id' passed as userinfo dictionary to the notification. {panel:title=bg.js} {code} var notification = Ti.App.iOS.scheduleLocalNotification({ alertBody:""Kitchen Sink was put in background"", alertAction:""Re-Launch!"", userInfo:{id:""1""}, sound:""pop.caf"", date:new Date(new Date().getTime() + 3000) // 3 seconds after backgrounding }); // we cancel our notification if we don't want it to continue // notification.cancel(); //this works!!!! Ti.App.iOS.cancelLocalNotification(""1"");// this does not work. {code} This is fixed by Pedro and the fix is available here. https://gist.github.com/48a765c50f64aa7c47ed",3 +"TIMOB-9488","06/11/2012 16:38:20","MobileWeb: Focus event in tabgroup not being fired","h4. Problem Description Tabgroup's focus event is not working as with iOS. h4. Actual Results The focus event is never fired h4. Expected results The focus event should fire. h4. Testcase 1. Create new mobile Project. 2. Paste app.js: {code} Titanium.UI.setBackgroundColor('#000'); // create tab group var tabGroup = Titanium.UI.createTabGroup(); var win = Titanium.UI.createWindow({ backgroundColor:'white', title:'window', barColor:'#ff7b01', top:0, navBarHidden:false }); /* win.addEventListener('focus',function(){ alert('focus'); }); */ var tab1 = Titanium.UI.createTab({ icon:'KS_nav_views.png', title:'Tab 1', window:win }); var tab2 = Titanium.UI.createTab({ icon:'KS_nav_views.png', title:'Tab 2', window:win }); var titleImage = Ti.UI.createView({ width:94, height:24, backgroundImage:'/images/header/ing_logo_header.png', }); win.titleControl = titleImage; //win.open(); tabGroup.addTab(tab1); tabGroup.addTab(tab2); tabGroup.open(); tabGroup.addEventListener('focus',function(){ alert('focus tabs fired') }); tabGroup.addEventListener('click',function(){ alert('click fired') }); {code} 3. Test this code in iOS, compare with this code in MobileWeb. ",3 +"TIMOB-9552","06/14/2012 12:26:08","Android: Emulator: Not recognized by adb, unable to install to Emulator.","When Android emulator deployed, adb fails to recognize the emulator. This is intermittent issue, it effect all emulator versions. This is not an regression it occurred in 2.0.2 Step to reproduce: 1) Create default project. 2) Right Click, Select ""Run As"", Select ""Run Configurations..."" 3) Select ""Titanium Android Emulator"" 4) Select platform Android API: ""Google API Android 4.0.3"" 5) Apply and Run. Expected Result: adb should recognized the emulator or if this occur then studio should be provide error correction to handle the error properly. Actual Result: adb doesn't recognize the emulator. Studio fails to notified to developer of the failure and App never installed. ",13 +"TIMOB-9606","06/18/2012 09:31:41","TiAPI: Allow configuration of the default unit (pixels, dpi, etc.)","Titanium provides universal unit support by allowing the developer to specify unit types when specifying absolute layout parameters ( ie: width, height, left, etc.). if the developer specifies a layout parameter without specifying a unit, the system selects the default unit type ( currently pixels ). The developer must explicitly specify the layout type for unit types that are not the default pixel unit. example: width: ""123dp"" or width: ""123mm"" Rarely do application developers create applications that mix units. Therefore devleopers must append to every unit specification the unit type if they do not want to use the default pixels. Causing the following issues: - reduces the efficiency of the developer, - increases the probability of user created bugs in the application code. - increases the size of the executing code, - decreases the performance do to the increased code execution size. Adding a default unit override would resolve these issues allowing the developer to set the number and omit the unit type. ",5 +"TIMOB-9658","06/20/2012 09:37:26","BlackBerry: Add JavaScript bootstrapping to framework","Some of the Titanium implementation can be done using JavaScript so we need to provide a way to run our own bootstrapping .js files before we load app.js. There is possibly a lot of JavaScript code we can reuse from the android directory. The method I suggest is to package the .js files into the .bar file. The files should be put into a new folder called ""framework"" that is next to, not inside, the ""assets"" folder. The ""assets"" and ""framework"" folders should be separate so we don't have conflicts. The only complication would be that the require() and include() functions might need a flag to know whether the app has been bootstrapped or not (ie read from ""framework"" if bootstrapping and ""assets"" if not). A flag may not be sufficient if things are done asynchronously so the other solution would be to check if the file calling the require/include is in ""framework"" or ""assets"" and make sure to load the file from the same directory. There should be one file called boostrap.js that will include/require the other files, as needed.",5 +"TIMOB-9665","06/20/2012 15:23:17","Blackberry: fix property enumeration on JS object created by the framework","calling toString() on an object created by the Ti framework fails. We think that the property enumeration doesn't enumerate the inherited properties. ",1 +"TIMOB-9682","06/20/2012 23:59:20","Android: Packaging:No warning displayed for default system value of 'ti.ui.defaultunit'.","It is not a regression.It exists as far as 1.8.2 While packaging the app,when the value of ti.ui.defaultunit is 'abc' - Expected - Display warning during packaging, use default system value Actual - No warnings are displayed while packaging. Logs generated while packaging are attached with the bug.",3 +"TIMOB-9742","06/23/2012 15:59:09","iOS: Facebook - On iPod 3rd Gen (4.0.2), Facebook login dialog gets dismissed after it launches","Steps to reproduce: 1. Import KS from Samples pane in TiStudio 2. Install KS to iPod 3. Go to Mashups > Facebook > Login/Logout 4. Press Login with Facebook button Actual: Facebook login dialog gets dismissed once it launches. Expected: Facebook login dialog should not be dismissed once it is launched. Note: * This is *not a regression.* This still occurs in 2.0.2.GA * Facebook login *still works as expected* on ipod (4.3.5) and iphone 4 (5.1)",1 +"TIMOB-9859","07/02/2012 13:19:20","Android: increase AVD storage size to reduce [FAILED_INSUFFICIENT_STORAGE] errors","h2. Expected results: I should be able to build and install more than a few Ti apps to an Android emulator. h2. Actual results: Due to defaults defined in builder.py, I can fit only a couple of Ti apps before the emulator runs out of storage space. This results in a [FAILED_INSUFFICIENT_STORAGE] error. I can delete other apps to free space. However, if I need to work on multiple apps, I end up having to delete/install frequently. h2. Fix In builder.py (in my version, line 491) increase the partition size value. Current value is 128 (MB). I suggest at least 1024. ",1 +"TIMOB-9930","07/10/2012 23:58:12","Android: Packaging: With a non-existing module added to the project in the tiapp.xml,app packages without error and gets installed on device","This is not a regression. IT exists as far as 1.8.2. Adding a module to the project in the tiapp.xml which does not exist such as not.there should prevent the app from getting packaged but it is not. App gets successfully packaged and gets installed on android device.It runs on emulator also without error/warnings. If I try to install it directly on simulaor or iOS/android device, it gives appropriate error for module not found like: For iOS simulator and device error is: [ERROR] Could not find the following required iOS modules: [ERROR] id: not.there version: 1.0 For android device, error is: [ERROR] Failed installing com.appcelerator.timob9090: pkg: /data/local/tmp/app.apk Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES] Steps to reproduce 1. Create a new app in TiStudio 2. Add a module to the project in the tiapp.xml which does not exist such as not.there 3. Package the app/run on android emulator Actual result: The app gets packaged/runs on emulator without error. Expected result: The app should fail packaging with appropriate error result like [ERROR] Could not find the following required iOS modules: [ERROR] id: not.there version: 1.0 And give error for emulator also like(as we get in case of device) [ERROR] Failed installing com.appcelerator.timob9090: pkg: /data/local/tmp/app.apk Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES]",3 +"TIMOB-9950","07/12/2012 12:54:04","BlackBerry: Fix/implement relative include/require","Currently, include()'s method of doing relative files only works if all done in successive order. It does not work for windows with a url (not implemented) or if include is used in a function of a file in a subdir. Also, require() does not have any method right now. My proposal is to store the filepath in each TiObject so it can be retrieved later when needed. Also, we need to make sure that require() properly handles a ""native Titanium module"" by its ID (eg com.example.module).",2 +"TIMOB-9953","07/12/2012 13:26:36","BlackBerry: Fix logging/exception tags and exception output","Currently, when we throw an exception while a file is being loaded by include or require, both files are shown in the message (eg ""file1.js line 2: file2.js line 5: Missing argument""). We need to make changes so the following is true: # the exception has the [ERROR] tag # only the filename containing the actual error is shown ** might need to get rid of some TryCatch's ** might need to use Message::GetScriptResourceName # the filename shows the full path (minus the .../assets/) # an exception thrown from an event handler shows the filename and crashes the app (eg calling Ti.API.debug() with no params in a button handler) Also need to clean/split up TiRootObject::executeScript and implement Ti.API.log in .js.",2 +"TIMOB-9971","07/16/2012 13:52:27","BlackBerry: Complete 'remove' method in UI View","Implement 'remove' method for removing child controls from a container.",3 +"TIMOB-10059","07/20/2012 11:38:43","BlackBerry: Revisit UI.AlertDialog implementation based on R6","Depends on Cascades R6 An alert dialog is a modal view that includes an optional title, a message and buttons, positioned in the middle of the display. In iOS: https://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIAlertView_Class/UIAlertView/UIAlertView.html",2 +"TIMOB-10116","07/24/2012 09:16:03","iOS: Add Organization and Organizational Unit certificate information to titanium info command","A customer has asked that we provide the ""organization"" attached to a certificate to display in the iOS packaging dialog. The information about the current certificates Studio derives from prereq.py. It is suggested that the certificate JSON string be amended to include: * Organization * Organizational Unit It is suggested we do this as part of prereq.py as perhaps there is other uses for this information in the context of the CLI",5 +"TIMOB-10154","07/26/2012 04:04:02"," iOS : Events not getting fired for tabs in tab group","TabGroup click event is not fired. This is not regression. This issue occurs from 2.0.1. Steps to Reproduce: 1. Create an app using the code below. 2. Launch app. and click on TabGroup. Expected Result: TabGroup click event should be fired and should be reflected on the console. Actual: TabGroup click event is not fired. {code} Titanium.UI.setBackgroundColor('#000'); var tabGroup = Titanium.UI.createTabGroup(); var win1 = Titanium.UI.createWindow({ title:'Tab 1', backgroundColor:'#fff' }); var tab1 = Titanium.UI.createTab({ title:'Tab 1', window:win1 }); var label1 = Titanium.UI.createLabel({ color:'#999', text:'I am Window 1' }); win1.add(label1); var win2 = Titanium.UI.createWindow({ title:'Tab 2', backgroundColor:'#fff' }); var tab2 = Titanium.UI.createTab({ title:'Tab 2', window:win2 }); var label2 = Titanium.UI.createLabel({ color:'#999', text:'I am Window 2' }); win2.add(label2); tabGroup.addTab(tab1); tabGroup.addTab(tab2); tabGroup.open(); tabGroup.addEventListener(""click"", function(){ Ti.API.info(""tabGroup click event fired!""); }); {code}",5 +"TIMOB-10835","07/31/2012 01:27:55","TiAPI: HTTPClient: new event for continuous data stream","h2. Feature description HTTPClientProxy should support didReceiveData method. h2. Customer's original description of the request I needed to have a comet session using Titanium on iOS. Right now the implementation of TiNetworkHTTPClientProxy doesnt allow this because it doesnt implement didReceiveData of ASIHTTPRequest. Though using didReceiveData would have broken ondatastream and onsendstream. So what i did was create a third one ""ondatastream"" for live data processing. In the meantime i renamed(for now) ondatastream to ondownloadprogress and onsendstream to onsendprogress. WARNING: on ios using the new ""ondatastream"" will break responseText and responseData. This is due to the ASIHTTPRequest implementation h2. Pull request See https://github.com/appcelerator/titanium_mobile/pull/2844 and related links and discussions.",1 +"TIMOB-10257","07/31/2012 08:52:03","BlackBerry: Implement Titanium.IOStream","IOStream is the interface that all stream types implement. Methods: 5 Sub Classes: 4",3 +"TIMOB-10264","07/31/2012 11:22:24","Blackberry: adjust UI controls based on R8","This umbrella task is to address functional delta in controls that were previously implemented using R4 release of Cascades. It could either mean implementing new functionality now available in R6, or redoing something that no longer works or was implemented as a workaround. Refer to the implementation matrix to see what elements need to be implemented",2 +"TIMOB-10272","07/31/2012 13:21:02","BlackBerry: Finish size and position methods / properties on R6 UI View","Implement: getHeight getWidth getBottom setBottom getRight setRight getSize setSize",3 +"TIMOB-10290","08/01/2012 15:46:35","Android: Modules with upper case in project name fails to create with internal error.","When creating an android module in studio using upper case letters in the project name (e.g., MyAndroid, as opposed to myandroid), the creation fails with internal error: could not move file. This appears to be related to TISTUD-1633. This is not regression. This does not occur with mobileweb modules, nor does it occur on OS X. When an android module is created using the command line, the module is created correctly, but the project name is automatically converted to lower case. Steps to Reproduce: 1. Create new android module from studio with project name containing uppercase letters. Actual Result: Module fails to create with cannot move folder errors. Expected Result: Module creates without error.",5 +"TIMOB-10299","08/02/2012 08:12:22","Blackberry: Update API doc to state what is NOT implemented","This activity should be done at the ""feature complete"" stage of the project",3 +"TIMOB-10305","08/03/2012 09:36:26","Blackberry: Support overriding the default UI unit via tiapp.xml","On Android and iOS, the default unit can be overriden on a per-application level by setting the ti.ui.defaultunit property in tiapp.xml. For example, to use DIPs as the default on all platforms, set defaultunit to dip: dip The value for ti.ui.defaultunit can be any of the unit specifiers defined above, or system to specify that the platform's default unit should be used.",5 +"TIMOB-10307","08/03/2012 12:03:30","BlackBerry: Add support of javascript implementation of parts of the Ti API","Unmbrella task to link to all the bug and issue of the current framework that prevent easy extension of the api using js. Will also need to be figured out: inheritance between native objects and js objects",8 +"TIMOB-10371","08/09/2012 12:08:59","Blackberry: Imageview parity for scaling behavior","As part of TIMOB-3749 scaling behavior of imageViews was changed. If either width or height of image view are set to follow SIZE behavior('auto',Ti.UI.SIZE,undefined) then the image is scaled with aspect ratio intact. Otherwise the image is scaled ignoring aspect ratio. Test code below {code} var win = Ti.UI.createWindow({ backgroundColor:'#fff', layout:'vertical' }); var image = Ti.UI.createImageView({ image: ""http://www.catravelservices.com/management/hotels/pictures/Mawamba_lodge_nature.jpg"", backgroundColor : ""red"" }); var label = Ti.UI.createLabel({ text:'Results Here' }) var updateLabel = function(){ var size = image.size; label.text = 'ImageView size is '+size.width+'x'+size.height; } var controlsContainer = Ti.UI.createView({ height:Ti.UI.SIZE }) var widthControls = Ti.UI.createView({ width:'50%', layout:'vertical', left:0, height:Ti.UI.SIZE }) var heightControls = Ti.UI.createView({ width:'50%', layout:'vertical', right:0, height:Ti.UI.SIZE }) controlsContainer.add(widthControls); controlsContainer.add(heightControls); var b1 = Ti.UI.createButton({title:'WIDTH=SIZE'}) var b2 = Ti.UI.createButton({title:'WIDTH=165'}) var b3 = Ti.UI.createButton({title:'WIDTH=250'}) var b4 = Ti.UI.createButton({title:'HEIGHT=SIZE'}) var b5 = Ti.UI.createButton({title:'HEIGHT=50'}) var b6 = Ti.UI.createButton({title:'HEIGHT=165'}) b1.addEventListener('click',function(e){ image.width=Ti.UI.SIZE; setTimeout(updateLabel,500); }) b2.addEventListener('click',function(e){ image.width=165; setTimeout(updateLabel,500); }) b3.addEventListener('click',function(e){ image.width=250; setTimeout(updateLabel,500); }) b4.addEventListener('click',function(e){ image.height=Ti.UI.SIZE; setTimeout(updateLabel,500); }) b5.addEventListener('click',function(e){ image.height=50; setTimeout(updateLabel,500); }) b6.addEventListener('click',function(e){ image.height=165; setTimeout(updateLabel,500); }) win.add(image); widthControls.add(b1); widthControls.add(b2); widthControls.add(b3); heightControls.add(b4); heightControls.add(b5); heightControls.add(b6); win.add(controlsContainer); win.add(label) win.open(); {code}",8 +"TIMOB-10488","08/11/2012 12:57:16","iOS: webView.loading always returns null","h3. Expected webView returns `true` if loading, `false` if not. h3. Actual webView always returns null h3. Testcase Click around on some links and see that it only reports `` in Studio. {code:javascript} var win = Ti.UI.createWindow(); var webView = Ti.UI.createWebView({ url: 'http://appcelerator.com' }); setInterval(function() { Ti.API.log( webView.loading ); }, 500); webView.addEventListener('beforeload', function() { Ti.API.log( webView.loading ); }); webView.addEventListener('load', function() { Ti.API.log( webView.loading ); }); win.add( webView ); win.open(); {code}",3 +"TIMOB-10534","08/15/2012 09:22:45","Tooling: Android emulator silently fails","When I try to run the android emulator I see the following in the Debug output: {noformat} [DEBUG] C:\SDK\tools\emulator.exe -avd titanium_6_WVGA854 -port 5560 -sdcard ""C:\Users\qatester\.titanium\titanium_6_WVGA854.sdcard"" -logcat *:d,*,TiAPI:V -no-boot-anim -partition-size 128 armeabi-v7a [DEBUG] signal caught: 3 [DEBUG] calling emulator kill on 3872 {noformat} A bit of poking around finds that the emulator does not launch when the armeabi-v7a argument is attached. {noformat} Microsoft Windows [Version 6.1.7601] Copyright (c) 2009 Microsoft Corporation. All rights reserved. C:\Users\qatester>C:\SDK\tools\emulator.exe -avd titanium_6_WVGA854 -port 5560 - sdcard ""C:\Users\qatester\.titanium\titanium_6_WVGA854.sdcard"" -logcat *:d,*,TiA PI:V -no-boot-anim -partition-size 128 armeabi-v7a C:\Users\qatester>invalid command-line parameter: armeabi-v7a. Hint: use '@foo' to launch a virtual device named 'foo'. please use -help for more information {noformat} I think this has something to do with the x86 emulators I had tested against, but can not figure out how to undo that change. Steps to reproduce: 1. Create an Android project. 2. Run the project in the emulator. Expected results: The app should run in the emulator or should throw a relevant error. Actual results: The debug shows the above message before flipping the view to waiting for the emulator to be ready which finally times out.",8 +"TIMOB-10717","08/30/2012 09:53:13","Blackberry: Implement Titanium.UI.TextField value property","Create TextField. Try to set Value or get value during some action (for example button click event). for getValue() - undefined is returned. for setValue() - doesn't set the textfield value. ",0.5 +"TIMOB-10724","08/30/2012 14:24:09","Android: Modules: remove gperf as a build dependency","When trying to build an android module on windows 7, there was an uninformative failure/error. {code} C:\Users\tester\AppData\Roaming\Titanium\mobilesdk\win32\2.1.2.v20120824144611\module\android\build.xml:362: The following error occurred while executing this line: C:\Users\tester\AppData\Roaming\Titanium\mobilesdk\win32\2.1.2.v20120824144611\module\android\build.xml:317: exec returned: 2 {code} Upon further investigation (using titanium studio > android module project > build.xml > right click > run as ant) it was found that gperf was somehow removed from the path or uninstalled from that machine, and it needed to be reinstalled and added to the system path. This does not occur on a fresh studio/sdk install on windows 7. It is suggested to remove gperf as a dependency to build android modules. Note that gperf is not documented as a dependency. Android Module Documentation (wiki.appcelerator.org): https://wiki.appcelerator.org/display/guides2/Android+Module+Development+Guide#AndroidModuleDevelopmentGuide-Step0%3AInstallingtheNecessaryComponents Steps to Reproduce: 1. Install Titanium Studio and Titanium SDK on Windows 7. 2. Install Android SDK and Android NDK. 3. Uninstall gperf or remove from the system path. 4. Create an Android Module and build the module (i.e., Publish > Package Module > to Titanium Project). Actual Result: Build failure if gperf is not installed. Expected Result: Success (no gperf dependency), or a meaningful error message. Note that the inclusion of gperf causes overhead for Titanium Studio to include built-in software prerequisites.",8 +"TIMOB-10757","09/04/2012 15:48:48","CLI: Module Build","The task involves a few things before implementing the platform specific logic. h4. {{cli/commands/build.js}} In the {{project-dir}} callback function, determine if the project is an app or a module. If the project has a {{tiapp.xml}}, then it is an app. If the project has a {{timodule.xml}}, it is a module. When a module project is found, the {{timodule.xml}} should be parsed and saved into the {{cli.timodule}} variable. If the the project is neither a app or module, error and exit. You should set the {{cli.argv.type}} to the appropriate value. Remember that you need to scan up the directory tree since the {{project-dir}} may be a subdirectory. In the {{validate()}} function, if it is an app, then do the {{ti.validateCorrectSDK()}} and {{ti.validatePlatform()}} stuff. If it is a module, then validate module stuff. In the {{run()}} function, I think you only need to call {{ti.resolvePlatform()}} for apps. The {{buildModule}} should be {{path.join(__dirname, '..', '..', platform, 'cli', 'commands', '_build.js')}} for apps and {{path.join(__dirname, '..', '..', platform, 'cli', 'commands', '_build_module.js')}} for modules. If {{_build_module.js}} file does not exist, error and exit. h4. {{node_modules/titanium-sdk/lib/builder.js}} Add {{this.timodule = cli.timodule;}} to the {{run()}} function after the {{this.tiapp}} line.",0 +"TIMOB-10850","09/05/2012 11:38:05","Ti Studio: when creating a new project, and sections are added to TiApp.xml. Project is Android only.","h2. Problem When you create a New | Titanium Mobile Project, and sections get added to the initial TiApp.xml file, even though the project is Android only (iPhone and Mobile Web were unchecked). h2. Expected Behavior No or sections should be added to the initial TiApp.xml file when creating a new Android-only project. Likewise, no or sections should be added when creating an iPhone-only project. h2. Actual Behavior # Create a New | Titanium Mobile Project. # Uncheck Mobile Web and iPhone. # The resulting TiApp.xml file will have and sections in it. ",0 +"TIMOB-10800","09/06/2012 15:03:15","iOS: TableView scrolls back to focused text field on scroll end","*Code* http://pastie.org/4674079 *Expected Behaviour* The user should be able to scroll through the table without being taken back to focused textField. The textField should stay focused. *Actual Behaviour* TableView of textFields scrolls back to focussed text field on scroll end. *Notes* - Tested on iOS 5.1 - To Replicate the issue, click on textField in row 6 then once the textfield gains focus scroll down the table, as soon the scrolling ends it will take you back to row 6.",13 +"TIMOB-10869","09/12/2012 12:17:51","Blackberry: Implement important Titanium.UI methods","Use the implementation matrix to see what's remaining (these are things that are not implemented but supported in Cascades): https://docs.google.com/a/macadamian.com/spreadsheet/ccc?key=0Ajs-e76-B0yIdG1oLVVleVVxaGRYd3lWWXd0czhqUFE",2 +"TIMOB-11049","09/20/2012 04:49:23","iOS: Ti.Facebook.dialog feed broken for large description texts.","When I use a large description text inside Ti.Facebook.dialog(""feed""), it displays some unescaped / uninterpreted html data throughout the text. I'm not exactly sure if this is a Titanium Mobile bug or the bug lies within the Facebook SDK version used under the Ti Module itself. Sample Code: {code:javascript} var win = Ti.UI.createWindow(); Titanium.Facebook.appid = '187692147928682'; Titanium.Facebook.permissions = ['publish_stream']; var postToFeed = function(e) { var data = { link : ""http://airportchatter.com"", name : ""AirportChatter"", message : ""Hey! Checkout AirportChatter when you're on an airport!"", caption : ""Know Before You Go!"", picture : ""http://www.airportchatter.com/images/airportchatter-logo-alpha.png"", description : ""AirportChatter guides you through all venues, services, terminals and security on all major airports in the world!"" + ""
It also give you the best deals, discount coupons, updated user reviews on venues, services and lounges."" + ""
we can also help you to make friends on airports and terminals during your layover using our awesome Radar feature!"" }; Titanium.Facebook.dialog(""feed"", data, function(e) { if (e.success && e.result) { alert(""Success! New Post ID: "" + e.result); } else { if (e.error) { alert(e.error); } else { alert(""User canceled dialog.""); } } }); }; var postButton = Ti.UI.createButton({ title : 'Post', height : 60, width : 200, top : 200 }); postButton.addEventListener('click', function(e) { postToFeed(); }); win.add(postButton); win.open(); {code} It shows the text, and after a certain amount of chars it shows the html code (not interpreted): {code:html} ...
rest of the text...
{code} Follows an image attached with the output...",1 +"TIMOB-11152","09/26/2012 00:54:29","Tooling: don't rebuild local project app if project is not dirty","Currently, if a project has not been edited, and build is called, the entire project rebuilds. We could detect if destination app matches last build in project to enhance build time. This is particularly relevant for device debugging. Steps to Reproduce: 1. Open Titanium Studio. 2. Import KitchenSink. 3. Run on Device (Android or iOS) and wait for process to complete. 4. Run on Device again. Actual Result: App is rebuilt, could take around 30 seconds. Expected Result: App should not be rebuilt, should take 1 second.",5 +"TIMOB-11188","09/27/2012 01:41:24","iOS: Debugger: breakpoints ignored if app is only primitive assignment statements","Breakpoints ignored if the app is only comprised of primitive assignment statements. This is not a regression. This does not occur on Android. This is a parity issue. This is basic functionality. Steps to Reproduce: 1. Run code in debug (manually insert breakpoints as per code comments): {code} var a = 1; // breakpoint var b = 2; // breakpoint var c = 3; // breakpoint var d = 4; // breakpoint var e = 5; // breakpoint var f = 6; // breakpoint {code} Actual Result: All breakpoints ignored. Expected Result: All breakpoints should be hit (as 'Resume' is pressed).",1 +"TIMOB-11393","10/11/2012 21:19:00","Android: TabGroup.backgroundColor doesn't change background.","Unable to set the background color of a tab group. This appears to be caused by having no ""native view"" setup to handle the view property changes in TiUIView. h4. Test Case {code:JavaScript} var tabGroup = Ti.UI.createTabGroup({ backgroundColor: 'blue' }); tabGroup.open(); {code} Pass: Background color of the tab group is blue. Fail: Background color isn't blue, but black.",1 +"TIMOB-23341","10/18/2012 13:29:48","Exception on iPhone: no row found for index. in -TiUITableViewProxy insertRowAfter","When you are trying to add numerous rows to a TableView using insertRowAfter it randomly causes exceptions: ""no row found for index. in -TiUITableViewProxy insertRowAfter:"";"" It looks line some code lines have been commented out for unknown reason and causing issues on the UI thread. Please see this commit: https://github.com/appcelerator/titanium_mobile/commit/040cb9ab4350e6f3bd6eb5e22770f76ec9791b5e And see this issue on the forum: http://developer.appcelerator.com/question/129708/obj-c-fix-for-error-on-tableview-insertrowbefore--insertrowafter This line should be back on those methods: ENSURE_UI_THREAD(insertRowAfter,args);",3 +"TIMOB-11628","10/22/2012 00:41:51","Correct spacing and grammar in Android NDK console warning.","When packaging an Android module and you forget to make a link to the NDK, it provides a warning, but the warning is missing a space and a period. ""Check your modules' build properties)You may need to install""",3 +"TIMOB-11577","10/25/2012 19:37:19","Ti API: Add new Facebook 3 views","Facebook recently updated their API for iOS to 3.1 and for Android to 3.0. TIMOB-10422 is to update the FB SDK. This ticket is to introduce new functionality brought about by FB3. As such, there will be parity issues to consider.",1 +"TIMOB-11603","10/29/2012 21:25:14","Android: invalid android path in bash profile results in project creation error, improve error message","Failed to build a project for Android in Titanium Studio due to incorrect path to android SDK in a bash profile. *It happens only in 3.0.0.version of Studio.* It creates projects in Studio 2.1.2 Test steps: 1.Go to Titanium Studio > Preferences > Titanium 2. Browse and set Android SDK Home 3. Browse and set Android NDK Home Note the difference with a bash profile. export ANDROID_SDK=/myname/Documents/android-sdk-macosx export ANDROID_NDK=/myname/Documents/android-ndk-r8 4. Create a project for Android. Actual result: Fail to create a project. Failed to locate android-8 and android 2.2 Expected result: A project should be created successfully. ",3 +"TIMOB-11769","11/02/2012 22:02:32","CLI: colors, lines, and messages ill-formatted with CLI enabled","Console: colors, lines, and messages ill-formatted with CLI enabled (see screenshots). Steps to Reproduce: 1. Run code: {code} /* console */ if(Ti.Platform.osname != 'android') // TIMOB-11294 - Android: console: log functions fail in commonjs require { console.log('console LOG'); console.log(['console LOG', 'ARG1', 'ARG2']); console.debug('console DEBUG'); console.debug(['console DEBUG', 'ARG1', 'ARG2']); console.info('console INFO'); console.info(['console INFO', 'ARG1', 'ARG2']); console.warn('console WARN'); console.warn(['console WARN', 'ARG1', 'ARG2']); console.error('console ERROR'); console.error(['console ERROR', 'ARG1', 'ARG2']); } else { Ti.API.info('TIMOB-11294 - Android: console: log functions fail in commonjs require'); } /* Ti.API */ Ti.API.trace('Ti.API TRACE'); Ti.API.trace(['Ti.API TRACE', 'ARG1', 'ARG2']); Ti.API.debug('Ti.API DEBUG'); Ti.API.debug(['Ti.API DEBUG', 'ARG1', 'ARG2']); Ti.API.info('Ti.API INFO'); Ti.API.info(['Ti.API INFO', 'ARG1', 'ARG2']); Ti.API.warn('Ti.API WARN'); Ti.API.warn(['Ti.API WARN', 'ARG1', 'ARG2']); Ti.API.error('Ti.API ERROR'); Ti.API.error(['Ti.API ERROR', 'ARG1', 'ARG2']); /* Ti.API.log */ Ti.API.log('TRACE', 'Ti.API.log TRACE'); Ti.API.log('TRACE', ['Ti.API.log TRACE', 'ARG1', 'ARG2']); Ti.API.log('DEBUG', 'Ti.API.log DEBUG'); Ti.API.log('DEBUG', ['Ti.API.log DEBUG', 'ARG1', 'ARG2']); Ti.API.log('INFO', 'Ti.API.log INFO'); Ti.API.log('INFO', ['Ti.API.log INFO', 'ARG1', 'ARG2']); Ti.API.log('WARN', 'Ti.API.log WARN'); Ti.API.log('WARN', ['Ti.API.log WARN', 'ARG1', 'ARG2']); Ti.API.log('ERROR', 'Ti.API.log ERROR'); Ti.API.log('ERROR', ['Ti.API.log ERROR', 'ARG1', 'ARG2']); Ti.API.log('LOG', 'Ti.API.log LOG'); Ti.API.log('LOG', ['Ti.API.log LOG', 'ARG1', 'ARG2']); /* Ti.iOS.API */ if(Ti.Platform.osname == 'iphone' || Ti.Platform.osname == 'ipad') { Ti.API.timestamp('Ti.API TIMESTAMP'); Ti.API.timestamp(['Ti.API TIMESTAMP', 'ARG1', 'ARG2']); } {code} Actual Result: colors, line formatting misaligned, and some messages do not display at all. Expected Result: colors, lines, and messages should appear and be properly formatted",8 +"TIMOB-11686","11/07/2012 17:30:29","BlackBerry: Invocations","As a BlackBerry developer, I want the ability to integrate with other applications on the platform in order to provide better multitasking for the user.",3 +"TIMOB-11700","11/08/2012 01:23:49","Android: Make generated projects importable into Eclipse","When we build an android projects using our build scripts, it would be nice if we could directly import that project into eclipse and run it from there to debug. We will need to create things like .project to make this an eclipse project.",3 +"TIMOB-12646","11/08/2012 20:21:48","iOS: TableViewRow selection causes child view's backgroundColor to disappear","Platform: iOS Device: iOS Simulator 6.0 & iPod Touch (4th gen, software version 6.0.1) Repro: 1. Create a TableView 2. Create a TableViewRow 3. Create a View with a backgroundColor 4. Add the view to the row 5. Add the row to the table 6. Tap and hold on the row Result: The row's selectedBackgroundColor becomes visible and the view's backgroundColor becomes transparent Expected: The row's selectedBackgroundColor becomes visible and the view's backgroundColor remains visible Additional Notes: 1. If the view inside of the row has children, they are still displayed. Only the view's backgroundColor is affected. 2. Setting the row's selectionStyle to NONE prevents the backgroundColor of the view from disappearing.",8 +"TIMOB-13304","11/23/2012 04:29:45","Mobile Web: TableView deleteRow does not work if filled by setting data property to array of sections","*Test case* {code} var wnd = Ti.UI.createWindow() Ti.UI.backgroundColor = ""#FFFFFF"" //Problems: //1. second section appear differently than first and third //2. deleteRow(3) removes row number 6 function tableViewBug() { var table = Ti.UI.createTableView() var sections = [] for (var i = 0; i < 3; ++i) { var section = Ti.UI.createTableViewSection() for (var j = 0; j < 3; ++j) { var row = Ti.UI.createTableViewRow() var label = Ti.UI.createLabel({ text : ""section:"" + i + "" row:"" + j }) row.add(label) section.add(row) } sections.push(section) } table.data = sections wnd.add(table) setTimeout(function() { table.deleteRow(3) }, 3000) } tableViewBug() wnd.open() {code}",3 +"TIMOB-11867","11/27/2012 13:58:04","CLI: Alloy: Mobile Packaging Failed","Steps To Reproduce: 1. Create Alloy project 2. Package to Mobile Web Project Actual: Failed to package appears Expected: Mobile Package must occur without error",8 +"TIMOB-11919","12/01/2012 11:28:10","CLI: Creating MobileWeb module with ti.cloud as appid prohibits any MW Project to run on MWBrowser or Emulator.","Steps To Reproduce: 1. Create MW module with app-id ti.cloud 2. Package it in a default project. (Project with cloud service enabled) 3. Try running same project or new default project in MW Preview in Browser or Emulator.[issue appears here] 4. Now try running a project with disabled cloud service and run same on MW Browser and Emulator.[This runs fine] Actual: The folder /Users/pragyarastogi/Library/Application Support/Titanium/modules/mobileweb/ti.cloud prohibits any MW project to run in browser and emulator. Refer screenshot for Emulator error and Browser error. The folder is created when MW module is Package to Titanium SDK. Note: In 2.1.4.GA SDK the error appears is somewhat different. Refer Screenshot. Expected: Project must run on MW Emulator or Browser without any error.",3 +"TIMOB-11943","12/04/2012 10:06:03","Android: blur event not called when keyboard is hidden","h1. Problem description When a TextArea is focused, and the user clicks the back button to hide the soft keyboard, the blur event is not fired. It is not also possible to use the 'android:back' event, as it is not fired when hiding the keyboard. h1. Steps to reproduce - Use the following code to test the bug. - Click on the black window to open a second one with a TextArea - Click on it to show the keyboard - Hit the back button: the 'blur' and 'android:back' events are not fired when keyboard is being hidden {code} // Create a window var root = Ti.UI.createWindow({ backgroundColor : 'black', modal: true }); root.addEventListener('click', function() { var win = Ti.UI.createWindow({ backgroundColor : 'white', modal: true }); var toolbar = Titanium.UI.createTextArea({ height: 37, width: 200, font: {fontSize:16,fontFamily:'ARIAL', fontWeight:'solid'}, color: '#000', borderWidth: 1, borderColor: '#828281', borderRadius: 12, suppressReturn: false, scrollable: false }); toolbar.addEventListener('blur', function() { alert('blurrrred'); }); win.addEventListener('android:back', function() { alert('baaaack'); }); win.add(toolbar); win.open(); }) root.open(); {code}",5 +"TIMOB-12246","12/04/2012 16:29:42","Android: Auto correct set to false on TextField with KEYBOARD_DECIMAL_PAD doesn't allow decimal point","h2.Problem When the keyboardType propery of a TextField is set to Ti.UI.KEYBOARD_DECIMAL_PAD and autocorrect is set to false, the decimal point is not allowed to be entered into the textfield. This leaves no way to enter dollar amounts without using the default keyboard, which allows any character, and is therefore not appropriate. h2.Expected Behavior autocorrect should not be interfering with numbers in the text field. h2.Actual Behavior When auto correct is set to false The ""numbers and punctuation"" keyboard appears, but clicking on the decimal point has no effect. h2.Testcase {panel:title=app.js} {code} var win = Ti.UI.createWindow({ backgroundColor : 'white' }); var textField = Ti.UI.createTextField({ borderStyle : Ti.UI.INPUT_BORDERSTYLE_ROUNDED, color : '#336699', keyboardType : Ti.UI.KEYBOARD_DECIMAL_PAD, returnKeyType : Ti.UI.RETURNKEY_DEFAULT, autocorrect : false, textAlign : 'right', width : '50%' }); win.add(textField); win.open(); {code} {panel}",3 +"TIMOB-13401","12/06/2012 10:24:14","iOS 6: insertRowBefore uses animation with animated set to false and animationStyle set to none","*Description* insertRowBefore uses a fade animation although animated is set to false and animationStyle is set to NONE (see code sample) *Expected result* row is simply inserted without an animation *current result* row is inserted with fade animation *additional notes* might also apply to insertRowAfter and appendRow and deleteRow (not tested) *sample* {code} /* * Single Window Application Template: * A basic starting point for your application. Mostly a blank canvas. * * In app.js, we generally take care of a few things: * - Bootstrap the application with any data we need * - Check for dependencies like device type, platform version or network connection * - Require and open our top-level UI component * */ //bootstrap and check dependencies if (Ti.version < 1.8) { alert('Sorry - this application template requires Titanium Mobile SDK 1.8 or later'); } // This is a single context application with mutliple windows in a stack (function() { //determine platform and form factor and render approproate components var win = Ti.UI.createWindow({ width : Ti.UI.FILL, height : Ti.UI.FILL, }); var tv = Ti.UI.createTableView({ width : Ti.UI.FILL, height : Ti.UI.FILL, }); var rows = []; for (var i = 0; i < 50; i++) { rows.push(Ti.UI.createTableViewRow({ title : 'Row ' + i })); } var row = Ti.UI.createTableViewRow({ title : 'Insert Row Before 0' }); row.addEventListener('click', function() { tv.insertRowBefore(0, { title : 'Row inserted before 0' }); }); rows.push(row); var row = Ti.UI.createTableViewRow({ title : 'Insert Row Before 1' }); row.addEventListener('click', function() { tv.insertRowBefore(1, { title : 'Row inserted before 1 w/o anim' }, { animationStyle : Ti.UI.iPhone.RowAnimationStyle.NONE }); }); rows.push(row); var row = Ti.UI.createTableViewRow({ title : 'Insert Row Before this' }); row.addEventListener('click', function(e) { tv.insertRowBefore(e.index, { title : 'Row inserted before 0' }); }); rows.push(row); var row = Ti.UI.createTableViewRow({ title : 'Insert Row Before this' }); row.addEventListener('click', function(e) { tv.insertRowBefore(e.index, { title : 'Row inserted before w/o anim' }, { animationStyle : Ti.UI.iPhone.RowAnimationStyle.NONE, animated : false, }); }); rows.push(row); tv.data = rows; win.add(tv); win.open(); })(); {code}",5 +"TIMOB-12034","12/12/2012 01:07:12","CLI: Building for android with '-b' -build only flag starts the daemon & waits for the device after building the app","Steps to reproduce: 1.Launch CLI by typing 'titanium' in the terminal. 2.Run 'ti build -p android -b -d --log-level trace -s 3.0.0.v20121211130203'. Actual results: 1.The app builds but it starts the deamon & waits for the device. Expected results: 1.The app should build but the deamon should not start & not wait for the android device as we have specified the '-b' i.e build only flag. Trace output: {code} LChoudharyMBP:~ lokeshchoudhary$ ti build -p android -b true -d /Users/lokeshchoudhary/Desktop/test/test --log-level trace -s 3.0.0.v20121211130203 Titanium Command-Line Interface, CLI version 3.0.21, Titanium SDK version 3.0.0.v20121211130203 Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved. Please report bugs to http://jira.appcelerator.org/ Android SDK path: /Users/lokeshchoudhary/Desktop/android-sdk-macosx [DEBUG] No project level plugins to load [DEBUG] Loaded plugin hooks: [DEBUG] /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121211130203/cli/hooks/plugins.js [DEBUG] /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121211130203/android/cli/hooks/install.js [DEBUG] /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121211130203/android/cli/hooks/run.js [INFO] logfile = /Users/lokeshchoudhary/Desktop/test/test/build.log [DEBUG] /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/builder.py build test /Users/lokeshchoudhary/Desktop/android-sdk-macosx /Users/lokeshchoudhary/Desktop/test/test com.app.test [INFO] Titanium SDK version: 3.0.0 (12/07/12 12:02 fc56f4c) [DEBUG] com.app.test installed? False [DEBUG] Detecting modules in /Users/lokeshchoudhary/Desktop/test/test/modules [DEBUG] Detecting modules in /Users/lokeshchoudhary/Library/Application Support/Titanium/modules [DEBUG] Detected module for android: ti.cloudpush 2.0.7 @ /Users/lokeshchoudhary/Library/Application Support/Titanium/modules/android/ti.cloudpush/2.0.7 [DEBUG] Detected module for android: ti.brightcove 2.0.1 @ /Users/lokeshchoudhary/Library/Application Support/Titanium/modules/android/ti.brightcove/2.0.1 [DEBUG] Detected module for commonjs: ti.cloud 2.3.0 @ /Users/lokeshchoudhary/Library/Application Support/Titanium/modules/commonjs/ti.cloud/2.3.0 [DEBUG] Detected module for iphone: com.soasta.touchtest 1.0 @ /Users/lokeshchoudhary/Library/Application Support/Titanium/modules/iphone/com.soasta.touchtest/1.0 [INFO] Copying CommonJS modules... [INFO] Copying project resources.. [INFO] Tiapp.xml unchanged, skipping class generation [DEBUG] detected module analytics, path = /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/modules/titanium-analytics.jar [DEBUG] detected module android, path = /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/modules/titanium-android.jar [DEBUG] adding required library: jaxen-1.1.1.jar [DEBUG] adding required library: ti-commons-codec-1.3.jar [DEBUG] adding required library: kroll-common.jar [DEBUG] adding required library: titanium.jar [DEBUG] detected module app, path = /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/modules/titanium-app.jar [DEBUG] detected module ui, path = /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/modules/titanium-ui.jar [DEBUG] adding required library: android-support-v4.jar [DEBUG] detected module filesystem, path = /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/modules/titanium-filesystem.jar [DEBUG] detected module media, path = /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/modules/titanium-media.jar [DEBUG] detected module locale, path = /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/modules/titanium-locale.jar [INFO] Compiling Javascript Resources ... [DEBUG] Processing Android resource drawables [DEBUG] found drawable-long-land-hdpi splash screen at /Users/lokeshchoudhary/Desktop/test/test/Resources/android/images/res-long-land-hdpi/default.png [DEBUG] found drawable-long-land-ldpi splash screen at /Users/lokeshchoudhary/Desktop/test/test/Resources/android/images/res-long-land-ldpi/default.png [DEBUG] found drawable-long-port-hdpi splash screen at /Users/lokeshchoudhary/Desktop/test/test/Resources/android/images/res-long-port-hdpi/default.png [DEBUG] found drawable-long-port-ldpi splash screen at /Users/lokeshchoudhary/Desktop/test/test/Resources/android/images/res-long-port-ldpi/default.png [DEBUG] found drawable-notlong-land-hdpi splash screen at /Users/lokeshchoudhary/Desktop/test/test/Resources/android/images/res-notlong-land-hdpi/default.png [DEBUG] found drawable-notlong-land-ldpi splash screen at /Users/lokeshchoudhary/Desktop/test/test/Resources/android/images/res-notlong-land-ldpi/default.png [DEBUG] found drawable-notlong-land-mdpi splash screen at /Users/lokeshchoudhary/Desktop/test/test/Resources/android/images/res-notlong-land-mdpi/default.png [DEBUG] found drawable-notlong-port-hdpi splash screen at /Users/lokeshchoudhary/Desktop/test/test/Resources/android/images/res-notlong-port-hdpi/default.png [DEBUG] found drawable-notlong-port-ldpi splash screen at /Users/lokeshchoudhary/Desktop/test/test/Resources/android/images/res-notlong-port-ldpi/default.png [DEBUG] found drawable-notlong-port-mdpi splash screen at /Users/lokeshchoudhary/Desktop/test/test/Resources/android/images/res-notlong-port-mdpi/default.png [DEBUG] /Users/lokeshchoudhary/Desktop/android-sdk-macosx/platform-tools/aapt package -f -M AndroidManifest.xml -A /Users/lokeshchoudhary/Desktop/test/test/build/android/bin/assets -S res -I /Users/lokeshchoudhary/Desktop/android-sdk-macosx/platforms/android-8/android.jar -I ""/Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/titanium.jar"" -F /Users/lokeshchoudhary/Desktop/test/test/build/android/bin/app.ap_ [DEBUG] creating unsigned apk: /Users/lokeshchoudhary/Desktop/test/test/build/android/bin/app-unsigned.apk [DEBUG] from resource zip => assets/Resources/KS_nav_ui.png [DEBUG] from resource zip => assets/Resources/KS_nav_views.png [DEBUG] from resource zip => assets/Resources/app.js [DEBUG] from resource zip => assets/Resources/appicon.png [DEBUG] from resource zip => assets/Resources/default.png [DEBUG] from resource zip => assets/app.json [DEBUG] from resource zip => assets/index.json [DEBUG] from resource zip => assets/tiapp.xml [DEBUG] from resource zip => res/drawable/appicon.png [DEBUG] from resource zip => res/drawable/background.png [DEBUG] from resource zip => res/layout/titanium_tabgroup.xml [DEBUG] from resource zip => AndroidManifest.xml [DEBUG] from resource zip => resources.arsc [DEBUG] from resource zip => res/drawable-long-land-hdpi/background.png [DEBUG] from resource zip => res/drawable-long-land-ldpi/background.png [DEBUG] from resource zip => res/drawable-long-port-hdpi/background.png [DEBUG] from resource zip => res/drawable-long-port-ldpi/background.png [DEBUG] from resource zip => res/drawable-notlong-land-hdpi/background.png [DEBUG] from resource zip => res/drawable-notlong-land-ldpi/background.png [DEBUG] from resource zip => res/drawable-notlong-land-mdpi/background.png [DEBUG] from resource zip => res/drawable-notlong-port-hdpi/background.png [DEBUG] from resource zip => res/drawable-notlong-port-ldpi/background.png [DEBUG] from resource zip => res/drawable-notlong-port-mdpi/background.png [DEBUG] from JAR /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/modules/titanium-ui.jar => ti/modules/titanium/ui/widget/webview/binding.js [DEBUG] from JAR /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/modules/titanium-ui.jar => ti/modules/titanium/ui/widget/webview/binding.min.js [DEBUG] from JAR /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/modules/titanium-ui.jar => ti/modules/titanium/ui/widget/webview/json2.js [DEBUG] from JAR /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/modules/titanium-ui.jar => ti/modules/titanium/ui/widget/webview/polling.js [DEBUG] from JAR /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/modules/titanium-ui.jar => ti/modules/titanium/ui/widget/webview/polling.min.js [DEBUG] from JAR /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/titanium.jar => org/appcelerator/titanium/build.properties [DEBUG] from JAR /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/titanium.jar => org/appcelerator/titanium/res/drawable/background.png [DEBUG] from JAR /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/titanium.jar => org/appcelerator/titanium/res/drawable/btn_check_buttonless_on.png [DEBUG] from JAR /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/titanium.jar => org/appcelerator/titanium/res/drawable/btn_check_buttonless_on_18.png [DEBUG] from JAR /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/titanium.jar => org/appcelerator/titanium/res/drawable/btn_check_buttonless_on_48.png [DEBUG] from JAR /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/titanium.jar => org/appcelerator/titanium/res/drawable/btn_check_buttonless_on_64.png [DEBUG] from JAR /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/titanium.jar => org/appcelerator/titanium/res/drawable/btn_more.png [DEBUG] from JAR /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/titanium.jar => org/appcelerator/titanium/res/drawable/btn_more_18.png [DEBUG] from JAR /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/titanium.jar => org/appcelerator/titanium/res/drawable/btn_more_48.png [DEBUG] from JAR /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/titanium.jar => org/appcelerator/titanium/res/drawable/btn_more_64.png [DEBUG] from JAR /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/titanium.jar => org/appcelerator/titanium/res/drawable/btn_picker_normal.9.png [DEBUG] from JAR /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/titanium.jar => org/appcelerator/titanium/res/drawable/btn_picker_pressed.9.png [DEBUG] from JAR /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/titanium.jar => org/appcelerator/titanium/res/drawable/btn_picker_selected.9.png [DEBUG] from JAR /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/titanium.jar => org/appcelerator/titanium/res/drawable/default_icon.png [DEBUG] from JAR /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/titanium.jar => org/appcelerator/titanium/res/drawable/photoDefault.png [DEBUG] installing native SDK libs [DEBUG] keytool -v -list -keystore ""/Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/dev_keystore"" -storepass ******* -alias tidev [DEBUG] jarsigner -sigalg MD5withRSA -digestalg SHA1 -storepass ******* -keystore ""/Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/dev_keystore"" -signedjar /Users/lokeshchoudhary/Desktop/test/test/build/android/bin/app.apk /Users/lokeshchoudhary/Desktop/test/test/build/android/bin/app-unsigned.apk tidev [DEBUG] /Users/lokeshchoudhary/Desktop/android-sdk-macosx/tools/zipalign -v 4 /Users/lokeshchoudhary/Desktop/test/test/build/android/bin/app.apk /Users/lokeshchoudhary/Desktop/test/test/build/android/bin/app.apkz [INFO] Project built successfully in 7s 903ms * daemon not running. starting it now on port 5037 * * daemon started successfully * - waiting for device - {code}",3 +"TIMOB-13392","12/12/2012 09:10:24","Android: Implement Scrollable Tabs","As seen in the [documentation|http://developer.android.com/design/patterns/actionbar.html] [(another place)|http://developer.android.com/design/building-blocks/tabs.html], there's a new subtype of tab bar in the Android, called Scrollable Tabs.",13 +"TIMOB-12848","12/17/2012 05:46:41","Android: Using the camera on certain devices causes the app to crash","Call Ti.Media.showCamera and the camera opens up fine, takes the picture fine, then click ok, and the app crashes before reaching the success function. The picture does manage to get saved into the photo gallery. Sample code. Paste this into a new Android application. {code} var win = Titanium.UI.createWindow(); var imageView = Ti.UI.createImageView({height: Ti.UI.FILL, width: Ti.UI.Fill}); win.add(imageView); Titanium.Media.showCamera({ success:function(event) { Ti.API.info('#### Camera Success'); var cropRect = event.cropRect; var image = event.media; Ti.API.info(image.length); var filename = Titanium.Filesystem.tempDirectory + ""/""+ 'camera_photo' + new Date().getTime() + "".png""; Ti.API.info(filename); var f = Titanium.Filesystem.getFile(filename); Ti.API.info(f.nativePath); if (f.exists()) { Ti.API.info('The file exist , trying to delete it before using it :' + f.deleteFile()); f = Titanium.Filesystem.getFile(filename); } f.write(image); alert('Camera Success! The file size is '+f.size+' bytes.\n Now trying to assign it to an image on the screen (this may fail for hi res images)') imageView.image = f.nativePath; }, cancel:function() { Ti.API.info('#### Camera Cancel'); }, error:function(error) { // create alert Ti.API.info('#### Camera Error'); var a = Titanium.UI.createAlertDialog({title:'Camera'}); // set message if (error.code == Titanium.Media.NO_CAMERA) { a.setMessage('Device does not have video recording capabilities'); } else { a.setMessage('Unexpected error: ' + error.code); } // show alert a.show(); }, allowEditing:true }); win.open(); {code}",13 +"TIMOB-12128","12/18/2012 23:57:09","Create a Titanium benchmark","In order to measure the performance of Mobile Web, we need a benchmark that measures various aspects such as creating TableViews with a 10,000 rows and so on. The benchmark needs to output some sort of measurement data that we can compare between builds. I'm not sure if the benchmark should be a score or a time or what.",0 +"TIMOB-12143","12/21/2012 01:14:42","CLI: Implement minification with source number line mapping","When the user minifies his app, he will generate a source map file that maps the minified code to the actual source code. We will update the TiCore to send additional information so that 3rd-party services can do the above mapping and identify where the crash occurred. This will likely involve a switch to using Uglify 2.",0 +"TIMOB-13398","12/21/2012 16:08:14","iOS: support ellipsize property of Ti.UI.Label (parity)","Android and mobileweb support the ellipsize property of Ti.UI.Label. Please add support for this property under iOS as well.",5 +"TIMOB-12429","12/26/2012 13:11:22","Ti.UI.TableViewSection.rows property is not implemented","Implement Ti.UI.TableViewSection.rows property.",1 +"TIMOB-12153","12/26/2012 19:57:14","Android : Scrollview with a tableview does not scroll if contentHeight is set to 'auto'","Run the below code snippet to see scrollview with a tableview inside not scrolling if contentHeight is set to 'auto'. It works fine if it is set to 500 or 1000. But works fine in ios with 'auto'. {code} var win = Ti.UI.createWindow({ backgroundColor:'gray', layout:'vertical' }); var someLabel = Ti.UI.createLabel({ text: 'some content' }) win.add(someLabel); var testArray = new Array('1','2','3','4','5','6','7','8','9','10'); var cardScrollView = Ti.UI.createScrollView({ layout:'vertical', contentHeight:'auto', // 500 or 1000 works contentWidth:'auto', height: '100%', width:'100%', top:0, scrollType:'vertical' }); cardScrollView.addEventListener('scroll', function(e){ Ti.API.info('Scroll called from scrollview'); }); var table_view = Ti.UI.createTableView({ //top: 350, id: 'mytable', scrollable: false, touchEnabled:false, className: ""row"", backgroundColor:'white', separatorColor:'black', height: Ti.UI.SIZE }); table_view.addEventListener('scroll', function(e){ Ti.API.info('Scroll called from tableview'); }); var data = []; for(var i=0;i {code} app.js {code} // create base UI tab and root window // var win1 = Titanium.UI.createWindow({ title:'Tab 1', backgroundColor:'#fff' }); var tab1 = Titanium.UI.createTab({ icon:'KS_nav_views.png', title:'Tab 1', window:win1 }); var label1 = Titanium.UI.createLabel({ color:'#999', text:'I am Window 1', font:{fontSize:20,fontFamily:'Helvetica Neue'}, textAlign:'center', width:'auto' }); win1.add(label1); // // create controls tab and root window // var win2 = Titanium.UI.createWindow({ title:'Tab 2', backgroundColor:'#fff' }); var tab2 = Titanium.UI.createTab({ icon:'KS_nav_ui.png', title:'Tab 2', window:win2 }); var label2 = Titanium.UI.createLabel({ color:'#999', text:'I am Window 2', font:{fontSize:20,fontFamily:'Helvetica Neue'}, textAlign:'center', width:'auto' }); win2.add(label2); // // add tabs // tabGroup.addTab(tab1); tabGroup.addTab(tab2); // open tab group tabGroup.open(); {code} This no longer works in 3.0GA.",3 +"TIMOB-12398","01/23/2013 20:09:06","Android: TabGroup activity should work like Window activity","With Windows, it's possible to create menus before opening the window, by assigning Window.activity.onCreateOptionsMenu. {code} var win = Ti.UI.createWindow({ fullscreen: true }); var activity = win.activity; activity.onCreateOptionsMenu = function(e){ var menu = e.menu; var menuItem = menu.add({ title: ""Item 1"" }); menuItem.icon = ""item1.png""; menuItem.addEventListener(""click"", function(e) { Ti.API.debug(""I was clicked""); }); }; win.open(); {code} For a TabGroup, although TabGroup.activity is now exposed, you cannot assign an onCreateOptionsMenu function until after the TabGroup is opened. The following code demonstrates the issue: {code} var tabGroup = Titanium.UI.createTabGroup(); var win1 = Titanium.UI.createWindow({ title : 'Tab 1', backgroundColor : '#fff' }); var tab1 = Titanium.UI.createTab({ icon : 'KS_nav_views.png', title : 'Tab 1', window : win1 }); var addMenu = function() { tabGroup.activity.onCreateOptionsMenu = function(e) { var menu = e.menu; var menuItem = menu.add({ title : ""Item 1"" }); menuItem.icon = ""item1.png""; menuItem.addEventListener(""click"", function(e) { Ti.API.debug(""I was clicked""); }); }; } addMenu(); // To work around issue, comment out this line and // uncomment the addEventListener call below. /* tabGroup.addEventListener(""open"", function() { addMenu(); tabGroup.activity.invalidateOptionsMenu(); }); */ tabGroup.addTab(tab1); tabGroup.open(); {code} As written, it doesn't add a menu item. If you comment out the standalone addMenu call and uncomment the addEventListener call, the menu item is added as expected. Expected Results: Menu item is added as on a Window, without needing to add an open event listener or call invalidateOptionsMenu. ",0 +"TIMOB-12411","01/24/2013 11:29:38","Android: Ti.Android.getCurrentActivity() fails with an exception","h1. Problem description Calling Ti.Android.getCurrentActivity() always fails with an exception in the logs. {code} E/TiJSError( 1288): (main) [2,1195] - Message: Uncaught TypeError: Object # has no method 'getCurrentActivity' {code} h1. Steps to reproduce Use this simple app to test: {code} Titanium.UI.setBackgroundColor('#000'); var win1 = Titanium.UI.createWindow({ backgroundColor:'#fff', fullscreen: true }); win1.open(); Titanium.API.info(""Activity: "" + Titanium.Android.getCurrentActivity()); {code} Changing from getCurrentActivity() to currentActivity (direct access to the property) works fine.",3 +"TIMOB-12551","02/01/2013 18:47:21","JavaScript-to-JavaScript optimizing compiler","The performance of native bridge invocations shall be improved in Q1 for both iOS and Android. This will be done by creating an optimizing javascript-to-javascript compiler that identifies non-performant Titanium API use-cases and transforms them into performant native bridge invocations. The plan for completing this task is: 1. Automate collection of app performance data. 2. Identify Titanium performance bottlenecks from performance data. 3. Analyze javascript AST for common Titanium API idioms. 4. Create optimization algorithms (AST transformations) for these idioms identified as performance bottlenecks. From Jeff's README.md in his compiler prototype project: Compiler Prototype ================== The compiler prototype is a simple set of compile-time optimizations that are applied to speed up native bridge invocations. Concept ------- The concept is very simple. The Javascript native bridge binds a set of JavaScript objects (the Titanium API) and eventually a method is bound into a callback implementation in native land. The JS engine performs native bridge calls to lookup the JavaScript object and eventually invoke the bound native function in this simple example: > Ti.API.log('foo') The JS engine makes the following invocations underneath the cover: > Ti => Object > Object.API => Object > Object.log => Function > Function('foo') So, a simple one-liner requires 4 invocations in the JS engine. Additionally, in this example, foo is an argument that must be marshalled from a JS native object into a native object. In Objective-C, this turns a JSValueRef (or JSStringRef) into a NSString. This happens before the underlying JSFunction is mapped into an Objective-C method. To make matters worse, in Objective-C, we have to do additional lookups to find the appropriate TiModule and then build an NSInvocation to invoke the method against the Objective-C class. All of this takes time. This prototype attempts to speed up the invocation above by performing a few simple steps. First, we avoid the Object lookups by turns a Titanium API into a bound symbol in the JS engine. So, Ti.API.log become T$1 (as an example). Second, we attempt to speed up static arguments that are required to be marshalled during invocation into a symbol table which are only marshalled once. The symbol table is pre-compiled and subsequent references of the same symbol will use a pre-marshalled copy. Third, we pre-bind a compiled method and set of pre-marshalled arguments into a jump table. This is similar to using a function pointer (but as an instance of a compiled pointer to a module and invocation). The result is that you can get 50-75% pure invocation speed ups. For methods that have static arguments, you can achieve even better results. Limitations ----------- The current prototype uses a titanium module and requires a compile method to be called at the top of each compiled file to load up the symbols and bind the symbols. This has convenience in that we can do it without having to make any changes to Titanium itself. However, we may want to consider adding the compile method into Titanium (unpublished) to make maintenance easier and eliminate the need for a module. The second limitation is that we are speeding up only function calls and a few global symbols (such as Ti.UI.FILL). Eventually, we may want to do the same to properties. Third, the prototype is using a compiler hook (good) but only is working with Alloy. This is not a limitation per se, but i didn't want to have to deal with figuring out how to redirect the compiled JS files into a separate temporary directory and causing XCode to point at that instead of Resources -- since we don't want to override Resources (except in Alloy, that's how it operates, so that's OK). Fourth, I'm using a uglify-based compiler by hand instead of using Bryan's titanium code processor. The current implementation of the code processor doesn't allow you to mutate code in his plugins (or in the processor itself). Ideally, this would actually be a code processor plugin that would simply mutate code in a pipeline during compilation. Fifth, the current prototype is iOS only. This is because I'm most familiar with iOS and don't know the Android compiler / bridge for V8 as well as the old version. However, I think this same concept works for Android conceptually. Six, since I'm not using the code processor, I'm not using the JSCA file to understand the API. Moving to the code processor eliminates that issue. The last overall limitation is that we might want to actually pre-compile out the jump tables and use actually compiled function callbacks instead of the TiCompiledMethod object. If we moved to more of a true compiled / generated code, that would be rather trivial. This would likely give us even more speedup and much less object garbage and much lower memory. You would simply generate the C function that would directly call the module and method instead of having to have a generic TiCompiledMethod and you could by pass the entire Kroll overhead. I believe the new V8 compiled bindings do something similar in Android. Components ---------- ## CLI Hook The CLI hook file is under plugins/ti.compiler/hooks and in the file ti.compiler.js ## Module Source The module source for iOS is under compiler_module. Notes ----- The ti.compiler plugin must come after the ti.alloy in tiapp.xml. Afterthought ------------ I think this concept can be dramatically further expanded to really build a compiler that can pre-process code and optimize, compile and generally make performance a lot faster than it does today. ## Collapsing properties For example, take the following code: var v = Ti.UI.createView(); v.width = Ti.UI.FILL; v.height = Ti.UI.FILL; v.backgroundColor = ""red""; w.add(v); This could easily be re-written to be much faster (prior to optimizations from prototype): w.add(Ti.UI.createView({width:Ti.UI.FILL,height:Ti.UI.FILL,backgroundColor:""red""})); After optimizations further: w.add(T$1()); ## Multiple invocations Another example that is common, adding multiple objects to a view heirarchy. w.add(view1); w.add(view2); w.add(view3); This could be optimized into: w.add(view1,view2,view3); In this example, passing 3 objects over a view to add to the window will be MUCH faster because you go from 3 separate invocations to one and more importantly, because this method is required to be invocked on the UI Thread, 3 separate UI thread blocks. Additionally, at some point, you could move the same optimized method onto the native side such as it would turn into the following: T$1(); And on the native side, it would simply do the work of adding the 3 views to a window by native references. ## Subsequent code blocks My ultimate belief is that most of the static code written in Titanium JS can be pre-compiled and essentially reduced into few JS engine functions. Take the following static code block: var w = Ti.UI.createWindow(); var v = Ti.UI.createView({width:TI.UI.FILL,height:TI.UI.FILL,backgroundColor:""white""}); var b = Ti.UI.createButton({ text:""Hello"", width:TI.UI.SIZE, height:Ti.UI.SIZE }); v.add(b); w.add(v); b.addEventListener(function(){ alert(""hello world""); }); w.open(); This should be able to be reduced in JS code to: var r$1 = T$1(), w = r$1[0], v = r$1[1], b = r$1[2]; b.addEventListener(function(){ alert(""hello world""); }); w.open(); We should be able to take subsequent code blocks that are static and collapse them into code blocks in native that can be mapped to one JS symbol pointer. ## String consts We might be able to get much better optimizations in the JS engine by turning static code strings into JS consts at compile time. In a ton of cases in an app, you will use inline strings. Its generally faster to declare them as a const and then use the const variable name instead. This could be a simple optimizations done by the compiler. ## Dead code removal We need to remove dead code or unused variables and functions. For example, in Alloy in the alloy.js file, we define a function named isTabletFallback. This method isn't used. We could simply optimize on compile and deterine which functions / symbols are reachable and then remove them if not. For example, Alloy generates the following: var Alloy = require(""alloy""), _ = Alloy._, Backbone = Alloy.Backbone; Alloy.createController(""index""); This is useful is you need to reference Backbone or underscore libraries in the app.js stub. However, in almost all scenarios, the developer never does this in a standard Alloy app. The code above could be easily reduced to the following if it's not modified: require('alloy').createController('index') This creates no variables in memory that have to be later garbage collected and is much more efficient in execution. - Jeff ",0 +"TIMOB-12600","02/06/2013 00:20:54","CLI: building for Android device while the emulator is open generates a wrong Error Message","h6. Problem Building for Android device from CLI, while the Android emulator open, generates an Error Message at the end. However the app is actually correctly installed. h6. Steps to reproduce 1. Be sure to have the Android Emulator open 2. Attach a device and build a project for the device from CLI: $ ti build -p android -T device Result: application is correctly installed on the device, however from console there is an Error message in the end. {code} [INFO] Application installed. Launch from drawer on Home Screen [INFO] Launching appliation on device. error: more than one device and emulator [ERROR] Project failed to build after 13s 197ms {code} (also note the typo: ""appliation"" in the [INFO] line)",2 +"TIMOB-12604","02/06/2013 10:26:22","Android: Closing the emulator, 'Emulator has exited' log in not printed on console.","Android: Closing the emulator, 'Emulator has exited' log in not printed on console. Its not a regression. Steps to reproduce: 1. Run a application in android emulator. 2. Close the emulator. Actual: no new log occur on console. Expected: 'Emulator has exited' should occur on console. ",2 +"TIMOB-12661","02/11/2013 16:54:58","CLI: Support adb's -s option for pointing a build to a specific emulator or device","It would be extremely helpful, and give the CLI more power with Android, if developers were able to specify specifically which device or emulator for which they would like to build. Right now the build process allows us to specify and avd id which would let you pick an emulator, but even that is not ideal as you don't really have a way of knowing an emulator's id from the *android list avd* as it isn't listed. Ideally, I should be able to call *adb devices*, see my listing of emulators and devices, than be able to pass that serial number to the *titanium build* command as an option, directing the build process to that specific emulator or device. The build process _tries_ to be intelligent about this, but more often than not I get errors like: * It fails if there is a connected device AND an emulator open * Even with an emulator already it open, it often attempts to load an entirely different one * Tries to use emulators not compatible with the app (like a non-Google API emulator with an app that uses maps) Allowing a command like the following would make it really easy for developers to have multiple open emulators and connected devices and still get expected behavior: {code} titanium build -p android -s EMULATOR_OR_DEVICE_SERIAL {code} Obviously I leave the choice of the option flag to the implementor. ""-s"" would correspond to the adb command, but this is already in use for *titanium build* for specifying the target Titanium SDK. ",3 +"TIMOB-12716","02/12/2013 23:31:33","CLI: Build failure for projects with illegal character '_' in App id","Building *imported* from git or created in studio projects, that contain underscore('_') in application's id, return build failure. It does build on simulator. Not a regression, occurs in 3.0.0.GA Test steps: 1. Create project with illegal character in app id (e.g '_') 2. Build on to device Actual result: [ERROR] :  ** BUILD FAILED ** [ERROR] :  The following build commands failed: [ERROR] :   ProcessProductPackaging Entitlements.plist build/Build_timob7674.build/Debug-iphoneos/Build_timob7674-universal.build/Build_timob7674.xcent ",5 +"TIMOB-12764","02/15/2013 23:39:49","Windows: Android SDKs not recognized without moving them","This is a regression. Works correctly in TISTUD 2.1.2. Windows: Android SDKs not recognized in Preferences. Steps to Reproduce: 1. Open Titanium Studio. 2. Open Preferences > Titanium Studio > Titanium. 3. Clear Android SDK Path and Apply. 4. Browse to Android SDK to select path. Actual Result: Android SDKs not recognized. Expected Result: Android SDKs recognized.",8 +"TIMOB-12765","02/15/2013 23:44:38","Backport: Windows: Android SDKs not recognized without moving them","This is a regression. Works correctly in TISTUD 2.1.2. Windows: Android SDKs not recognized in Preferences. Steps to Reproduce: 1. Open Titanium Studio. 2. Open Preferences > Titanium Studio > Titanium. 3. Clear Android SDK Path and Apply. 4. Browse to Android SDK to select path. Actual Result: Android SDKs not recognized. Expected Result: Android SDKs recognized.",8 +"TIMOB-12960","03/05/2013 11:58:54","TiAPI: Cannot add a whitespace at the end of string in i18n strings.xml","Use the following xml in the i18n en strings.xml file: {code} There should be space of that thing. {code} And use the following in app js: {code} var win = Ti.UI.createWindow({ layout: ""vertical"" }); // build a string from the strings file that has built-in space. var s = L(""share"") + ""!on each side!"" + L(""share2""); alert(s); {code} The result is different in 3.0 vs 2.1.3. In 3.0, it seems all whitespaces from strings from the language file are trimmed. The same behavior is seen in Android also. ",1 +"TIMOB-12996","03/07/2013 23:07:28","Android: Unexpected layout when adding images and labels to TableViewRow","When adding an imageview and labels to a tableview row with horizontal layout will push the label down to the next line instead of wrapping the text, on iOS it will correctly wrap the text. Images attached Example code: {code} var win = Ti.UI.createWindow({ backgroundColor: 'white' }) var row1 = Ti.UI.createTableViewRow({ layout: 'horizontal' }) var image1 = Ti.UI.createImageView({ image: 'appicon.png', height: '50', width: '50' }); row1.add(image1); var label1 = Ti.UI.createLabel({ text: 'Long text is long. Long text is long. Long text is long. Long text is long. Long text is long.', color: 'black' }); row1.add(label1); var label2 = Ti.UI.createLabel({ text: 'Long text is long. Long text is long. Long text is long. Long text is long. Long text is long.', color: 'gray' }) row1.add(label2); var tvRow = []; tvRow.push(row1); var tableView1 = Ti.UI.createTableView({ top:0, bottom:0, left:0, right:0, separatorColor:'black', backgroundColor: 'white', data: tvRow, }); win.add(tableView1); win.open(); {code}",13 +"TIMOB-13164","03/14/2013 11:07:07","mobileweb rendered @font-face declaration is not valid","*When using a custom font, rendered CSS code is not valid.* h3. Steps to reproduce # create a new Titanium project (Single Window Application template) # _alloy new_ it # create assets/fonts directory and put any -- supported non-system -- font in there # change Label element style so it calls the mentioned font {code} ""Label"": { color: ""#000"", font: { fontFamily: ""Comic Zine OT"" } } {code} # see the font not being applied to the element h3. Analysis When opening the built mobileweb/titanium.css, our font declaration at the very end of the file is {code} @font-face { font-family: fonts/comic_zine_ot.otf; src: url(fonts/comic_zine_ot.otf); } {code} To be usable by browser, it should be {code} @font-face { font-family: ""Some Font Name""; src: url(fonts/comic_zine_ot.otf); } {code} To be working, ""Some Font Name"" should be a valid string and the same as in the defined _tss_ file. h3. Workaround I cannot see any workaround since the rendered _font-family_ is expecting a *user defined* font identifier. May be adding a _font-face_ declaration could do the trick.",0 +"TIMOB-24141","03/18/2013 11:58:25","iOS: TiBlob.imageAsResized resizing the Blob image but file size is very high (JPG)","'imageAsResized' however resizing the Blob image but resulting image size is very high. {code} var image = Titanium.Filesystem.getFile(Titanium.Filesystem.resourcesDirectory, 'images.jpeg').read(); Ti.API.info(""original image size:"" + image.size); Ti.API.info(""original image dimensions: "" + image.width + 'x' + image.height); var newBlob1 = image.imageAsResized(160,120); Ti.API.info(""test 1 image size:"" + newBlob1.size); Ti.API.info(""test 1 image dimensions: "" + newBlob1.width + 'x' + newBlob1.height); var bgImage = Titanium.Filesystem.getFile(Titanium.Filesystem.applicationDataDirectory, 'test.jpeg'); bgImage.write(newBlob1); {code} Note: This issue is found with JPG images.However it is working fine in .png files. ",5 +"TIMOB-13187","03/25/2013 06:28:18","iOS: Kerning for fonts in Titanium.","Client require new feature like, kerning of fonts. Kerning is the spacing between each character.",1 +"TIMOB-13190","03/25/2013 17:57:52","BlackBerry: support project creation with multiple deployment targets","Description: 1.Create a default app with templates in the studio & select other deploy targets along with blackberry 2.Now open the resources folder of the created app in studio Actual Result: 1.The 'blackberry' folder does not get created in the resources folder as 'android','iphone','mobileweb' 2.due to this running the app gives errors: {code} [INFO] Running retCode = builder.run(ipAddress, devicePassword, debugToken, storePass, outputDir) File ""/Users/lokeshchoudhary/Desktop/bb-mobilesdk-osx/mobilesdk/osx/3.1.0.v20130204182020/blackberry/builder.py"", line 78, in run resources = os.listdir(self.blackberryResources) OSError: [Errno 2] No such file or directory: '/Users/lokeshchoudhary/Desktop/Titanium BB Workspace/default_123/Resources/blackberry'[INFO] Running retCode = builder.run(ipAddress, devicePassword, debugToken, storePass, outputDir) File ""/Users/lokeshchoudhary/Desktop/bb-mobilesdk-osx/mobilesdk/osx/3.1.0.v20130204182020/blackberry/builder.py"", line 78, in run resources = os.listdir(self.blackberryResources) OSError: [Errno 2] No such file or directory: '/Users/lokeshchoudhary/Desktop/Titanium BB Workspace/default_123/Resources/blackberry' {code} NOTE : If we create a default app with only blackberry as target then the 'blackberry' folder is getting created Expected Result: 1.The 'blackberry' folder gets created along with other targets ",5 +"TIMOB-13255","03/28/2013 22:38:40","CLI: Add support for Windows Mobile platform","This task is for writing the {{create}}, {{build}}, {{install}}, and {{run}} builtins for the CLI for Windows platform as per the [CLI spec|https://wiki.appcelerator.org/display/spe/Command+Line+Interface]. ",0 +"TIMOB-13364","04/03/2013 18:19:52","Android: TextArea maxLength not working in Android","According to the docs, TextArea supports maxLength property from SDK 3.0. However, maxLength does not work in Android. In TiUIText.java, the code that reads the maxLength is: if (d.containsKey(TiC.PROPERTY_MAX_LENGTH) && field) { maxLength = TiConvert.toInt(d, TiC.PROPERTY_MAX_LENGTH); } TextArea has ""field"" boolean set to false, so maxLength is always ignored. Steps to reproduce. Create simple App.js: {code} var win = Ti.UI.createWindow({ backgroundColor: 'white' }); var textArea = Ti.UI.createTextArea({ borderWidth: 2, borderColor: '#bbb', borderRadius: 5, color: '#888', textAlign: 'left', maxLength: 10, top: 60, width: 300, height : 150 }); win.add(textArea); win.open(); {code} Launch app and start writing in the text area. You can enter more than 10 chars, despite maxLength is set to 10. Tested with SDK 3.0.0.GA in Android 2.3.3 and Android 4.1",3 +"TIMOB-13379","04/04/2013 21:49:21","TiAPI: Add support for console.time and console.timeEnd","it would be very useful to have the ability to output timing to the log for testing and debugging. JS in WebKit and Gecko as well as NodeJS support this... we should too. ",8 +"TIMOB-13520","04/11/2013 01:52:52","Android Emulator: improve error message from missing ia32-libs dependency on linux","The first android emulator run experience of a linux user on a clean system is: {code} Titanium Command-Line Interface, CLI version 3.1.0-cr, Titanium SDK version 3.0.2.GA Copyright (c) 2012-2013, Appcelerator, Inc. All Rights Reserved. Please report bugs to http://jira.appcelerator.org/ [INFO] logfile = /home/linux/Desktop/Titanium_Studio/Titanium_Studio_RC/Work_Space/MyProject/build.log [ERROR] :  Project failed to build after 275ms [INFO] Building MyProject for Android ... one moment [INFO] Titanium SDK version: 3.0.2 (02/15/13 19:02 5a77fe7) [ERROR] Exception occured while building Android project: [ERROR] Traceback (most recent call last): [ERROR] File ""/home/linux/.titanium/mobilesdk/linux/3.0.2.GA/android/builder.py"", line 2392, in [ERROR] builder.build_and_run(False, avd_id, debugger_host=debugger_host) [ERROR] File ""/home/linux/.titanium/mobilesdk/linux/3.0.2.GA/android/builder.py"", line 1984, in build_and_run [ERROR] self.wait_for_device('e') [ERROR] File ""/home/linux/.titanium/mobilesdk/linux/3.0.2.GA/android/builder.py"", line 450, in wait_for_device [ERROR] devices = self.sdk.list_devices() [ERROR] File ""/home/linux/.titanium/mobilesdk/linux/3.0.2.GA/android/androidsdk.py"", line 264, in list_devices [ERROR] (out, err) = subprocess.Popen([adb, 'devices'], stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate() [ERROR] File ""/usr/lib/python2.7/subprocess.py"", line 679, in __init__ [ERROR] errread, errwrite) [ERROR] File ""/usr/lib/python2.7/subprocess.py"", line 1249, in _execute_child [ERROR] raise child_exception [ERROR] OSError: [Errno 2] No such file or directory [ERROR] :  Project failed to build after 584ms {code} It seems a bit cryptic. Please improve error message if possible.",8 +"TIMOB-13545","04/12/2013 14:01:44","Android: ImageView: Remote image with ""@"" character doesn't display","*Problem description* If you set an image with a ""@"" in the path, the image won't be loaded. This is because getCleanUri thinking it's a domain address. Therefore the test on the hash will return false. So the image is downloaded but not drawn. *Repro notes* Paste the @2x URL in the browser to verify the URL is valid. Uncomment cd-mini-graphic image to verify it working for standard images. Only the URL with @2x doesn't work. Works on iOS, not on Android. *Test case* {code} var win = Ti.UI.createWindow({ backgroundColor : 'white' }); var image = Ti.UI.createImageView({ bottom : 0, width : 200, height : 200, backgroundColor : 'red', image : 'http://dl.dropboxusercontent.com/u/255893/appcelerator@2x.png' //image : 'http://www.appcelerator.com.s3.amazonaws.com/web/home/platform/cd-mini-graphic.png' }); win.add(image); win.open(); {code}",5 +"TIMOB-13582","04/16/2013 01:00:03","CLI: Launching emulator without specifying skin will use HVGA and will fail if chosen AVD does not support HVGA","If you pass in an AVD ID without Skin, HVGA is used as default and passed with the emulator command. If the AVD you chose does not support HVGA, the launch will fail with: {code} [ERROR]Emulator process exited with code 1 {code} The behavior I was expecting was for the default skin listed with the AVD would be used. You can see the set default in the output of ""android list"". Steps to reproduce: 1) Run command ""android list"" in the terminal to see available AVDs 2) Make a note of an AVD ID that does not support HVGA Skin 3) Create a new project 4) Run command ti build -p android -I Result: HVGA Skin is chosen as Default, and will fail if AVD ID does not support that skin. Expected: AVD launches with AVD default skin if no skin passed in.",5 +"TIMOB-14762","04/17/2013 18:13:40","CLI: Toast says android build succeeded when build failed","If a build fails, TiStudio still says it succeeded, console says (correctly) build failed. See screenshot. The problem is if the build callback receives an error, it says there was an error, but doesn't exit with a non-zero exit code.",5 +"TIMOB-13656","04/23/2013 21:48:29","CLI needs to support the ability to specify different login endpoints","Different environments will have different login endpints: test, dev, pre-prod, enterprise, vpc. To accommodate these different environments, the cli will have to make the login endpoint configurable - currently it is hard-coded to api.appcelerator.net. This can be configured via the config file or via a parameter This is preventing Studio from working properly against the enterprise cluster, ie unable to login means users can't create projects. As a work-around, users would have to have the same username/password on all api.appcelerator.net type servers",8 +"TIMOB-13862","05/15/2013 06:08:55","CLI: tiapp.xml sdk-version not honored if selected sdk has same base digits","If the tiapp.xml is set to 3.1.1.v20130514180723, but the CLI is set to 3.1.1.v20130513120107, since both start with 3.1.1, the CLI thinks they are the same version which is wrong.",3 +"TIMOB-13966","05/16/2013 11:13:41","TiAPI: Select Locale for L() at runtime","*Problem* It would be great if it was possible to let the user select which language to use at runtime. So instead the L() would only look at device language, it could also check if a Ti.App.LanguageXMLSetting property has been defined. That way we do not need to create homemade localization systems anymore. The use case is included below. The problem is that L is undefined in style.tss because I redefine it in the controller. *alloy.js* {code:javascript} // Language helper Alloy.LanguageHelper = require('languageHelper'); Alloy.L = Alloy.LanguageHelper.fetchString; {code} *Controller* {code:javascript} //top of the controller var L = require(""languageHelper""); {code} *Style* {code:javascript} ""#menuBtn"":{ title: L(""MenuButton"") } {code} *View* {code:xml} {code} *Custom languageHelper* {code:javascript} /** * Language Helper * Makes it possible to change language at runtime * @version 1.0 */ var lookup = null; exports.locale = Ti.App.Properties.getString('SETTING_LANGUAGE', Ti.Locale.getCurrentLanguage() ); /** * Private function * Loads the language xml file. * It has fallback for english if file does not exist. */ function loadFile() { lookup = {}; // LOAD FILE var file = Ti.Filesystem.getFile(Ti.Filesystem.resourcesDirectory, 'i18n/' + exports.locale + '/strings.xml'); if (!file.exists()) { file = Ti.Filesystem.getFile(Ti.Filesystem.resourcesDirectory, 'i18n/en/strings.xml'); if (!file.exists()) { Ti.API.warn(""Language file for both '"" + exports.locale + ""' and 'en' fallback do not exist""); return; } } // PARSE XML var xml_string = file.read().text; var doc = Ti.XML.parseString(xml_string); var strings = doc.getElementsByTagName(""string""); for (var i = 0; i < strings.length; i++) { var node = strings.item(i); var value = node.text; if (node.hasAttributes()) { for (var att_index = 0; att_index < node.attributes.length; att_index++) { var att = node.attributes.item(att_index); if (att.nodeName === ""name"") { lookup[att.nodeValue] = value; } } } } } /** * Set the current language of the app. * @param {String} language */ exports.setLanguage = function(language){ if(language === null){ return; } // clean old lookup exports.clear(); // save language Ti.App.Properties.setString('SETTING_LANGUAGE', language); exports.locale = language; // parse new lookup loadFile(); return lookup; } /** * Clear the parsed xml translations */ exports.clear = function() { lookup = null; }; /** * Lookup function. require this at each controller * Example usage: * var L = require('languageHelper').fetchString; * @param {Object} string * @param {Object} hint */ exports.fetchString = function(string, hint) { if (lookup === null) { loadFile(); } return lookup[string] !== undefined ? lookup[string].replace(/\\n/g, ""\n"") : (hint || string); }; {code}",8 +"TIMOB-13890","05/17/2013 11:42:57","iOS: Accessibility: Accessibility does not work on Slider Control","iOS: Accessibility: Accessibility does not work on Slider Control This is not a regression. Issue also exist on SDK 3.1.0. Steps: 1) Run Acceptance Access_1109 on Accessibility module. 2) Touch the second slider (with LVH defined in sequence) Actual Result: Device just reads ""50.0"". Expected Result: Device should read aloud LVH(This is slider2 label , This is slider2 value , This is slider2 hint) followed by 'seek control'value(android) and value adjustable {code} var win = Ti.UI.createWindow({ title : 'Welcome', backgroundColor: ""#fff""}); var slider1 = Titanium.UI.createSlider({ top: 50, min: 0, max: 100, width: '100%', value: 50 }); var label1 = Ti.UI.createLabel({ text: slider1.value, width: '100%', height: 'auto', top: 30, left: 0, textAlign: Ti.UI.TEXT_ALIGNMENT_CENTER }); slider1.addEventListener('change', function(e) { label1.text = String.format(""%3.1f"", e.value); }); var slider2 = Titanium.UI.createSlider({ top: 150, min: 0, max: 100, width: '100%', value: 50, accessibilityLabel: ""This is slider2 label"", accessibilityValue: 'This is slider2 value', accessibilityHint: ""This is slider2 hint"" }); var label2 = Ti.UI.createLabel({ text: slider2.value, width: '100%', height: 'auto', top: 130, left: 0, textAlign: Ti.UI.TEXT_ALIGNMENT_CENTER }); slider2.addEventListener('change', function(e) { label2.text = String.format(""%3.1f"", e.value); }); var slider3 = Titanium.UI.createSlider({ bottom: 130, min: 0, max: 100, width: '100%', value: 50, accessibilityHint: ""This is slider3 hint "", accessibilityLabel: ""This is slider3 label"", accessibilityValue: 'This is slider3 value', }); var label3 = Ti.UI.createLabel({ text: slider3.value, width: '100%', height: 'auto', bottom: 150, left: 0, textAlign: Ti.UI.TEXT_ALIGNMENT_CENTER }); slider3.addEventListener('change', function(e) { label3.text = String.format(""%3.1f"", e.value); }); var slider4 = Titanium.UI.createSlider({ bottom: 30, min: 0, max: 100, width: '100%', value: 50, accessibilityLabel: ""This is slider4 label"", accessibilityValue: 'This is slider4 value', accessibilityHint: ""This is slider4 hint"", accessibilityHidden: true }); var label4 = Ti.UI.createLabel({ text: slider4.value, width: '100%', height: 'auto', bottom: 50, left: 0, textAlign: Ti.UI.TEXT_ALIGNMENT_CENTER }); slider4.addEventListener('change', function(e) { label4.text = String.format(""%3.1f"", e.value); }); win.add(slider1); win.add(slider2); win.add(slider3); win.add(slider4); win.add(label1); win.add(label2); win.add(label3); win.add(label4); win.open(); {code}",3 +"TIMOB-13892","05/17/2013 12:39:19","iOS: Accessibility - Label.accessibilityLabel does not work properly inside a ScrollView properly","Label.accessibilityLabel does not work properly inside a ScrollView properly i.e. the device's VoiceOver will not read the label. This is not a regression. Issue also exist on SDK 3.1.0 *Steps:* 1. Create a Titanium app with the following app.js code: {code} var _window = Ti.UI.createWindow({ backgroundColor: 'white' }); var scroll1 = Ti.UI.createScrollView({ backgroundColor : 'red', accessibilityLabel : 'This is ScrollView1', accessibilityValue : 'Value1', accessibilityHint : 'hint 1', height : 200, top : 0 }); var label1 = Ti.UI.createLabel({ text : 'Label Text', accessibilityLabel : 'Label on first Scrollview' }); scroll1.add(label1); _window.add(scroll1); _window.open(); {code} 2. Install app to device. Make sure VoiceOver is on: Settings > General > Accessibility > VoiceOver > On 3. Double-press on app to launch app 4. Double-press on the label *Actual:* ""Label on first Scrollview"" is not read out. *Expected:* ""Label on first Scrollview"" should be read out. ",8 +"TIMOB-13914","05/20/2013 13:44:09","Android: 'longpress' event is not working in ListView","'longpress' event is not working in listView. Here is the test case: {code} var win = Ti.UI.createWindow({backgroundColor: 'white'}); var plainTemplate = { childTemplates: [ { type: 'Ti.UI.Label', // Use a label bindId: 'rowtitle', // Bind ID for this label properties: { // Sets the Label.left property left: '10dp' } }, { type: 'Ti.UI.ImageView', // Use an image view bindId: 'pic', // Bind ID for this image view properties: { // Sets the ImageView.image property image: 'KS_nav_ui.png' } }, { type: 'Ti.UI.Button', // Use a button bindId: 'button', // Bind ID for this button properties: { // Sets several button properties width: '80dp', height: '30dp', right: '10dp', title: 'press me' } } ] }; function report(e) { Ti.API.info(e.type); } var listView = Ti.UI.createListView({ // Maps the plainTemplate object to the 'plain' style name templates: { 'plain': plainTemplate }, // Use the plain template, that is, the plainTemplate object defined earlier // for all data list items in this list view defaultItemTemplate: 'plain' }); var data = []; for (var i = 0; i < 3; i++) { data.push({ // Maps to the rowtitle component in the template // Sets the text property of the Label component rowtitle : { text: 'Row ' + (i + 1) }, // Sets the regular list data properties properties : { itemId: 'row' + (i + 1), accessoryType: Ti.UI.LIST_ACCESSORY_TYPE_NONE } }); } listView.addEventListener('longpress', function(e){ alert(""longpress fired!!!""); }); win.add(listView); win.open(); {code}",5 +"TIMOB-14076","05/20/2013 20:38:04","Android: App crashes when properties of the actionBar are changed while the current window/tabGroup has navBarHidden set to true","*Problem* The app crashes with ""Unfortunately, app has stopped."" if actionBar properties are changed at runtime while the current window/tabGroup has navBarHidden set to true. *Test case* {code:javascript}var win = Ti.UI.createTabGroup({ navBarHidden : true }); tab1 = Ti.UI.createTab({ title : ""title1"" }); win1 = Ti.UI.createWindow(); tab1.window = win1; tab2 = Ti.UI.createTab({ title : ""title2"" }); win2 = Ti.UI.createWindow(); tab2.window = win2; win.addTab(tab1); win.addTab(tab2); win.addEventListener(""open"", function() { actionBar = win.getActivity().actionBar; if (actionBar) { actionBar.setTitle(""Test""); } }); win.open();{code}",0 +"TIMOB-13922","05/20/2013 21:58:42","Android: KitchenSink: text does not size to fit in buttons","Please see screenshots for references. Test steps: 1. Install and run KS>Base UI>Window Layout or 2. KS> Base UI> Window(Standalone) and press any of the buttons Actual result: Text of the button is being cut off. Expected: Text should fit inside the button",3 +"TIMOB-13974","05/24/2013 00:02:38","Android: KS takes a long time to package - I've seen nine minutes, others report longer in some cases","h5. Description: While verifying some JIRA tickets I was packaging KS (from 3.1.X branch). Hieu reported having this take a long time, so I monitored the process. The console ticked slowly away, and it took 9 minutes and 30 seconds to finish the task. This was from clean. h5. Steps to reproduce: 1) Pull KS from 3_1_X branch 2) Import into Studio 3) Package for distribution 4) Monitor the duration of the task h5. Result: It took 9:30 in my first test and others have reported longer. h5. Expected Result: Much quicker packaging process. h5. Notes: I'll be checking to see if this is a regression and will add it here.",3 +"TIMOB-13986","05/24/2013 22:46:13","iOS: backgroundImage of view from remote URL not loading","*Problem* The backgroundImage of the view from a remote URL is not loading on iOS. It works fine on Android. *Test case* {code:javascript} var win = Ti.UI.createWindow({ backgroundColor : ""#FFF"" }); var view = Ti.UI.createView({ backgroundImage : 'http://dl.dropboxusercontent.com/u/72783403/AtoZ/1.png' }); win.add(view); win.open(); {code}",3 +"TIMOB-14003","05/27/2013 13:52:01","Android: showDatePickerDialog and showTimePickerDialog can't be cancelled","The callback of showDatePickerDialog and showTimePickerDialog always return with the cancel property set to false. It doesn't matter if you press the back button or press outside the modal dialog, cancel gets never true. Furthermore, if you click on the Set/Ok/Done/Ready button, the callback is called twice. Note that in the picker dialog, we have only a single button ""Set"", so no Cancel button. This is fine as you should be able to cancel dialog with the back button. Clicking the back button fires wrongly a success (cancel=false) event. {code:title=Example code|borderStyle=solid} var picker = Ti.UI.createPicker( { type : Ti.UI.PICKER_TYPE_TIME }); picker.showDatePickerDialog({ callback: function(e) { if (e.cancel) { Ti.API.info('user canceled dialog'); } else { Ti.API.info('user selected date: ' + e.value); } } }); {code} Problem does not occur on older Android devices, like Android 2.3. See https://github.com/markruys/titanium-test-picker for a working project to reproduce.",5 +"TIMOB-13997","05/28/2013 01:37:46","iOS: add setCameraFlashMode feature for custom overlays in Ti.Media ","h4. Problem Description When users sets a custom overlay in the camera, there is no way to set the flash on or off. h4. More info https://developer.appcelerator.com/question/152715/flash-mode-in-camera",0 +"TIMOB-13999","05/28/2013 02:45:20","LiveView: App not updating upon editing localization files","Steps to reproduce: # Create a new SingleWindow application from a template # Start the project under LiveView (in this case, iOS simulator) # Edit the files in i18n. Note that saving those files doesn't restart the app. Expected behavior Editing a *.xml file in the i18n folder would refresh the application.",13 +"TIMOB-14123","05/30/2013 16:25:48","Android: Add support for creating video thumbnails","h2. Problem Unable to create a thumbnail of a video on Android using Titanium SDK 3.1.0.GA. Titanium.Media.VideoPlayer.thumbnailImageAtTime(Number time, Number option) and Titanium.Media.VideoPlayer.requestThumbnailImagesAtTimes(Number[] times, Number option, Callback callback) appear to be the only methods available to achieve this, but they are not supported for Android, only on iOS. Would like to see similar functionality to get a thumbnail from a video. It appears to be supported by the Android APIs per http://developer.android.com/reference/android/provider/MediaStore.Video.Thumbnails.html h2. Test case N/A - not currently supported h2. Logs N/A - not currently supported h2. Discussions Q/A: http://developer.appcelerator.com/question/152946/video-thumbnails-on-android ",8 +"TIMOB-16049","06/03/2013 05:41:57","Mobile Web: createBuffer API throws an error","Run attached the build. The error message is also attached as a screenshot",1 +"TIMOB-14194","06/07/2013 10:13:03","TiAPI: Problem with floating point numbers in Titanium","*Problem* The output of floating point values in Titanium differ from browser JavaScript parsers such as [jsbin.com|http://www.jsbin.com/]. For example, Ti.API.info(94.1) displays 94.0999999 On jsbin.com the output of alert(94.1) is 94.1 *Note* Since I have to input floating number for some modules, I must use floating number solution. I can't use a string method. I have also tried parseFloat(x.toFixed(1)), Math.round(x*10)/10 etc. The output was the same. *Test case* {code:javascript} var win = Ti.UI.createWindow({ backgroundColor : ""#FFF"" }); for (var i = 0; i < 50; i++) Ti.API.info(94.1); win.open(); {code} *Extended test case* {code:javascript} var win = Ti.UI.createWindow({ backgroundColor : ""#FFF"" }); for (var i = 0; i < 1000; i++) Ti.API.info(i + 0.1); for (var i = 0; i < 1000; i++) Ti.API.info(i + 0.2); for (var i = 0; i < 1000; i++) Ti.API.info(i + 0.3); for (var i = 0; i < 1000; i++) Ti.API.info(i + 0.4); for (var i = 0; i < 1000; i++) Ti.API.info(i + 0.5); for (var i = 0; i < 1000; i++) Ti.API.info(i + 0.6); for (var i = 0; i < 1000; i++) Ti.API.info(i + 0.7); for (var i = 0; i < 1000; i++) Ti.API.info(i + 0.8); for (var i = 0; i < 1000; i++) Ti.API.info(i + 0.9); win.open(); {code} *Log - Unusual Titanium values* {code} [INFO] : 64.09999999999999 [INFO] : 65.09999999999999 [INFO] : 66.09999999999999 [INFO] : 67.09999999999999 [INFO] : 68.09999999999999 [INFO] : 69.09999999999999 ... [INFO] : 70.09999999999999 [INFO] : 71.09999999999999 [INFO] : 72.09999999999999 [INFO] : 73.09999999999999 [INFO] : 74.09999999999999 [INFO] : 75.09999999999999 [INFO] : 76.09999999999999 [INFO] : 77.09999999999999 [INFO] : 78.09999999999999 [INFO] : 79.09999999999999 [INFO] : 80.09999999999999 [INFO] : 81.09999999999999 [INFO] : 82.09999999999999 [INFO] : 83.09999999999999 [INFO] : 84.09999999999999 [INFO] : 85.09999999999999 [INFO] : 86.09999999999999 [INFO] : 87.09999999999999 [INFO] : 88.09999999999999 [INFO] : 89.09999999999999 [INFO] : 90.09999999999999 [INFO] : 91.09999999999999 [INFO] : 92.09999999999999 [INFO] : 93.09999999999999 [INFO] : 94.09999999999999 [INFO] : 95.09999999999999 [INFO] : 96.09999999999999 [INFO] : 97.09999999999999 [INFO] : 98.09999999999999 [INFO] : 99.09999999999999 ... [INFO] : 8.199999999999999 [INFO] : 9.199999999999999 ... [INFO] : 8.300000000000001 [INFO] : 9.300000000000001 ... [INFO] : 64.40000000000001 [INFO] : 65.40000000000001 [INFO] : 66.40000000000001 [INFO] : 67.40000000000001 [INFO] : 68.40000000000001 [INFO] : 69.40000000000001 [INFO] : 70.40000000000001 [INFO] : 71.40000000000001 [INFO] : 72.40000000000001 [INFO] : 73.40000000000001 [INFO] : 74.40000000000001 [INFO] : 75.40000000000001 [INFO] : 76.40000000000001 [INFO] : 77.40000000000001 [INFO] : 78.40000000000001 [INFO] : 79.40000000000001 [INFO] : 80.40000000000001 [INFO] : 81.40000000000001 [INFO] : 82.40000000000001 [INFO] : 83.40000000000001 [INFO] : 84.40000000000001 [INFO] : 85.40000000000001 [INFO] : 86.40000000000001 [INFO] : 87.40000000000001 [INFO] : 88.40000000000001 [INFO] : 89.40000000000001 [INFO] : 90.40000000000001 [INFO] : 91.40000000000001 [INFO] : 92.40000000000001 [INFO] : 93.40000000000001 [INFO] : 94.40000000000001 [INFO] : 95.40000000000001 [INFO] : 96.40000000000001 [INFO] : 97.40000000000001 [INFO] : 98.40000000000001 [INFO] : 99.40000000000001 ... [INFO] : 64.59999999999999 [INFO] : 65.59999999999999 [INFO] : 66.59999999999999 [INFO] : 67.59999999999999 [INFO] : 68.59999999999999 [INFO] : 69.59999999999999 [INFO] : 70.59999999999999 [INFO] : 71.59999999999999 [INFO] : 72.59999999999999 [INFO] : 73.59999999999999 [INFO] : 74.59999999999999 [INFO] : 75.59999999999999 [INFO] : 76.59999999999999 [INFO] : 77.59999999999999 [INFO] : 78.59999999999999 [INFO] : 79.59999999999999 [INFO] : 80.59999999999999 [INFO] : 81.59999999999999 [INFO] : 82.59999999999999 [INFO] : 83.59999999999999 [INFO] : 84.59999999999999 [INFO] : 85.59999999999999 [INFO] : 86.59999999999999 [INFO] : 87.59999999999999 [INFO] : 88.59999999999999 [INFO] : 89.59999999999999 [INFO] : 90.59999999999999 [INFO] : 91.59999999999999 [INFO] : 92.59999999999999 [INFO] : 93.59999999999999 [INFO] : 94.59999999999999 [INFO] : 95.59999999999999 [INFO] : 96.59999999999999 [INFO] : 97.59999999999999 [INFO] : 98.59999999999999 [INFO] : 99.59999999999999 ... [INFO] : 8.800000000000001 [INFO] : 9.800000000000001 ... [INFO] : 64.90000000000001 [INFO] : 65.90000000000001 [INFO] : 66.90000000000001 [INFO] : 67.90000000000001 [INFO] : 68.90000000000001 [INFO] : 69.90000000000001 [INFO] : 70.90000000000001 [INFO] : 71.90000000000001 [INFO] : 72.90000000000001 [INFO] : 73.90000000000001 [INFO] : 74.90000000000001 [INFO] : 75.90000000000001 [INFO] : 76.90000000000001 [INFO] : 77.90000000000001 [INFO] : 78.90000000000001 [INFO] : 79.90000000000001 [INFO] : 80.90000000000001 [INFO] : 81.90000000000001 [INFO] : 82.90000000000001 [INFO] : 83.90000000000001 [INFO] : 84.90000000000001 [INFO] : 85.90000000000001 [INFO] : 86.90000000000001 [INFO] : 87.90000000000001 [INFO] : 88.90000000000001 [INFO] : 89.90000000000001 [INFO] : 90.90000000000001 [INFO] : 91.90000000000001 [INFO] : 92.90000000000001 [INFO] : 93.90000000000001 [INFO] : 94.90000000000001 [INFO] : 95.90000000000001 [INFO] : 96.90000000000001 [INFO] : 97.90000000000001 [INFO] : 98.90000000000001 [INFO] : 99.90000000000001 {code}",5 +"TIMOB-14178","06/10/2013 11:51:20","Android: Real Switch on Android","It would be nice to have a Real Android Switch when developing for Android 14 and above. The one supplied with Titanium now is not very nice.",5 +"TIMOB-14242","06/14/2013 10:31:20","Android: x86 libs not included in production APK","I was going to upload my app to the Google play store when I saw that x86 native SDK libraries were not included in the APK (libkroll-v8.so, libtiverify.so, libtiprofiler.so, libstlport_shared.so). I noticed these lines in builder.py (lines from 1696): {quote} if abi == 'x86' and ((not os.path.exists(lib_source_dir)) or self.deploy_type == 'production'): # x86 only in non-production builds for now. continue {quote} and removing them did the trick. It is normal behaviour not to including that libraries in production releases or it is a mistake? And if it is normal what is the reason? Way to reproduce: - Use the feature ""Distribute - Android App Store"" - Open the created APK with some zip reader - Navigate in lib/x86 - No native libraries included",3 +"TIMOB-14241","06/14/2013 11:00:35","Android: TextArea.maxLength doesn't work","*Problem* TextArea.maxLength not working in android, works perfectly fine on iOS *Steps to Reproduce* 1. run code provided on iOS (notice the maxLength is working, limits characters to 20) 2. run code provided on android (unlimited characters can be entered) {code} var win = Ti.UI.createWindow({ title : ""Test"", backgroundColor : 'gray' }); var view = Ti.UI.createView({ height : 200, top : 5, left : 5, right : 5, layout : 'vertical' }); var textFieldTwitter = Ti.UI.createTextArea({ left : 0, right : 0, height : 200, value : ""Testing1"", maxLength : 20 }); var tweetMax = 140; var viewTexteRestant = Ti.UI.createLabel({ text : 'Caractères restants : ' + (tweetMax - textFieldTwitter.value.length), height : Ti.UI.SIZE, width : Ti.UI.SIZE, top : 20, backgroundColor : ""red"" }); textFieldTwitter.addEventListener('change', function(e) { Ti.API.info(tweetMax - textFieldTwitter.value.length); viewTexteRestant.text = 'Caractères restants : ' + (tweetMax - textFieldTwitter.value.length); }); view.add(textFieldTwitter); view.add(viewTexteRestant); win.open(); win.add(view); {code} see : http://developer.appcelerator.com/question/153431/maxlength-in-textarea-doesnt-work",3 +"TIMOB-14262","06/15/2013 07:09:24","LiveView: Does not trigger code errors","*Steps to reproduce* 1. Create a default application 2. Enable LiveView in Run Configurations 3. Run on iOS simulator 4. Replace ""win1.add(label1);"" into ""win1.add(mylabel);"" 5. Save app.js *Actual Result* LiveView error is not triggered *Expected Result* LiveView error is triggered ",13 +"TIMOB-14267","06/17/2013 19:48:58","LiveView - Running multiple instances of the application on iOS and Android, iOS instances lose connection to LiveView Server","When trying to run multiple instances of the application with Liveview enabled across multiple devices/platform notice that Android will continue to update, however iOS instances lose the connection and do not continue to update. (have validated this against iOS on Device and iOS on Simulator). See attached video for further clarification. steps to reproduce: 1) enable an existing application (simple screen) for LiveView 2) run android and iOS builds (emulator/simulator) 3) make a change to the code Expected Behavior: Both instances of the application should update continuously Actual Behavior: Android will continue to update, however iOS will stop updating after it updates once. Simulator or Device will need to restart to show updates. ",8 +"TIMOB-14285","06/19/2013 16:08:03","Android: applyProperties() does not apply custom properties to proxy","h2. problem When using {{applyProperties()}} to add a number of properties to a Titanium proxy object, custom properties are not added on Android. On iOS and Mobileweb all properties, including custom ones, are added with the {{applyProperties()}} call. Android leaves the custom properties as {{undefined}}. h2. expected Android should behave like other supported platforms and attach custom properties to the Titanium proxy object when they are added via {{applyProperties()}}. h2. test case {code:javascript} var win = Ti.UI.createWindow({ backgroundColor: '#fff', fullscreen: false, exitOnClose: true }); win.open(); win.applyProperties({ customString: 'Ti.UI.Window', customArray: ['class1','class2','class3'], customObject: { x: 1, y: 2, z: 3 }, navBarHidden: true, backgroundGradient: { type: 'linear', startPoint: { x: '0%', y: '50%' }, endPoint: { x: '100%', y: '50%' }, colors: [ { color: 'red', offset: 0.0}, { color: 'blue', offset: 0.25 }, { color: 'red', offset: 1.0 } ], } }); Ti.API.info('customString: ' + JSON.stringify(win.customString)); Ti.API.info('customArray: ' + JSON.stringify(win.customArray)); Ti.API.info('customObject: ' + JSON.stringify(win.customObject)); Ti.API.info('navBarHidden: ' + JSON.stringify(win.navBarHidden)); Ti.API.info('backgroundGradient: ' + JSON.stringify(win.backgroundGradient)); {code} h2. output iOS does not show the {{backgroundGradient}} after the {{applyProperties()}} call, but this is a peripheral issue not associated with this ticket. h4. iOS 6.1 iPhone sim {code} [INFO] customString: ""Ti.UI.Window"" [INFO] customArray: [""class1"",""class2"",""class3""] [INFO] customObject: {""x"":1,""y"":2,""z"":3} [INFO] navBarHidden: true [INFO] backgroundGradient: {} {code} h4. Android 2.3.3 HVGA emulator {code} I/TiAPI ( 517): customString: undefined I/TiAPI ( 517): customArray: undefined I/TiAPI ( 517): customObject: undefined I/TiAPI ( 517): navBarHidden: true I/TiAPI ( 517): backgroundGradient: {""endPoint"":{""y"":""50%"",""x"":""100%""},""type"":""linear"",""colors"":[{""offset"":0,""color"":""red""},{""offset"":0.25,""color"":""blue""},{""offset"":1,""color"":""red""}],""startPoint"":{""y"":""50%"",""x"":""0%""}} {code} h4. mobileweb + chrome {code} [INFO] customString: ""Ti.UI.Window"" [INFO] customArray: [""class1"",""class2"",""class3""] [INFO] customObject: {""x"":1,""y"":2,""z"":3} [INFO] navBarHidden: true [INFO] backgroundGradient: {""type"":""linear"",""startPoint"":{""x"":""0%"",""y"":""50%""},""endPoint"":{""x"":""100%"",""y"":""50%""},""colors"":[{""color"":""red"",""offset"":0},{""color"":""blue"",""offset"":0.25},{""color"":""red"",""offset"":1}]} {code}",8 +"TIMOB-14382","06/25/2013 21:47:14","Android: Enable Media.openPhotoGallery to select multiple media items instead of 1 at a time.","In relation to this Q&A thread: http://developer.appcelerator.com/question/153838/select-multiple-images-using-photo-gallery-picker-android-and-ios Would it be possible to add a property/the functionality to Media.openPhotoGallery() to enable the selection of multiple media items? Maybe something like: itemLimit, which defaults to 1, but by setting to a greater value enables multiple selection functionality?",3 +"TIMOB-14425","06/28/2013 00:28:08","LiveView: iOS simulator is no longer updated once Android emulator is terminated when both are run with LiveView","1. Create a mobile project (e.g. the default two-tab classic project); 2. Run iPhone simulator with LiveView; 3. Run Android emulator with LiveView; 4. Updating app.js and confirm LiveView is working for both; 5. Exit Android emulator; 6. Updating app.js. Expected result: iPhone simulator will continue to update the app. Actual result: iPhone simulator no longer updates. Here is the end of the log: {code} [LiveView] Client disconnected [LiveView] Client connected [LiveView] Client disconnected [LiveView] Reload Triggered -REASON: File Changed -FILE: /Users/mxia/Documents/Appcelerator_Studio_Workspace/testLiveView/Resources/app.js [LiveView] Reload Triggered -REASON: File Changed -FILE: /Users/mxia/Documents/Appcelerator_Studio_Workspace/testLiveView/Resources/app.js [LiveView] Reload Triggered -REASON: File Changed -FILE: /Users/mxia/Documents/Appcelerator_Studio_Workspace/testLiveView/Resources/app.js {code} It appears the LiveView server got disconnected when Android emulator exited, but it didn't try to re-launch the server, and future reload events, although fired, could not update the app. ",8 +"TIMOB-14449","07/01/2013 15:02:39","Include platform-specific dependency information underneath Mobile SDK platform subfolder","Titanium/Appcelerator Studio has a file named sdk_info.json that we grab from a server and use to determine extra dependencies for specific platforms. An example is that we have entries that point the range of Tizen SDKs we support, XCode versions, Android addons/api levels, etc. This information is not something Studio should be maintaining, and it does not take into context the current project's Mobile SDK - so we apply the dependencies globally, regardless of whether the user is using 1.7.5 or 3.2.0 - which can mean the dependencies are not correct (older versions of the SDK supported older ranges of XCode and Tizen, e.g.). This knowledge and maintenance of dependencies should be pushed to the individual platforms, ideally in some relatively standard dependency.json file that is effectively just the segment of the sdk_info.json for that platform. Here's the current sdk_info.json file. This is a good starting point, but there are deficencies I will point out after: {code:javascript} { ""android"":{ ""linux"":{""requiredAddOns"":[""addon.+google.+apis.+10""],""requiredSDKTools"":""14"",""requiredPlatformTools"":""10"",""requiredPlatforms"":[""Android\\s*2\\.3.*""],""sdkURL"":""http://dl.google.com/android/android-sdk_r21.1-linux.tgz""}, ""macosx"":{""requiredAddOns"":[""addon.+google.+apis.+10""],""requiredSDKTools"":""14"",""requiredPlatformTools"":""10"",""requiredPlatforms"":[""Android\\s*2\\.3.*""],""sdkURL"":""http://dl.google.com/android/android-sdk_r21.1-macosx.zip""}, ""win32"":{""requiredAddOns"":[""addon.+google.+apis.+10""],""requiredSDKTools"":""14"",""requiredPlatformTools"":""10"",""requiredPlatforms"":[""Android\\s*2\\.3.*""],""sdkURL"":""http://dl.google.com/android/android-sdk_r21.1-windows.zip"", ""jdkURL"":""http://titanium-studio.s3.amazonaws.com/jdk/jdk-6u25-windows-i586.exe""} }, ""ios"":{ ""macosx"":{""requiredPlatforms"":[""[5.0, 6.2)""],""sdkURL"":""http://itunes.apple.com/us/app/xcode/id497799835?ls=1&mt=12""} }, ""blackberry"":{ ""linux"":{""requiredPlatforms"":[""10.0""],""sdkURL"":""http://developer.blackberry.com/native/downloads"",""simulatorURL"":""http://developer.blackberry.com/native/downloads""}, ""macosx"":{""requiredPlatforms"":[""10.0""],""sdkURL"":""http://developer.blackberry.com/native/downloads"",""simulatorURL"":""http://developer.blackberry.com/native/downloads""}, ""win32"":{""requiredPlatforms"":[""10.0""],""sdkURL"":""http://developer.blackberry.com/native/downloads"",""simulatorURL"":""http://developer.blackberry.com/native/downloads""} }, ""mobileweb"": { ""win32"": {""Firefox"": [""[10.0, 30.0)""], ""InternetExplorer"": [""[9.0, 30.0)""], ""Chrome"": [""[10.0, 30.0)""], ""Safari"": [""[5.0, 10.0)""]}, ""macosx"": {""Firefox"": [""[10.0, 30.0)""], ""Chrome"": [""[10.0, 30.0)""], ""Safari"": [""[5.0, 10.0)""]}, ""linux"": {""Firefox"": [""[10.0, 20.0)""], ""Chrome"": [""[10.0, 20.0)""]} }, ""tizen"":{ ""linux"":{""requiredPlatforms"":[""2.1""],""sdkURL"":""https://developer.tizen.org/downloads/sdk""}, ""macosx"":{""requiredPlatforms"":[""2.1""],""sdkURL"":""https://developer.tizen.org/downloads/sdk""}, ""win32"":{""requiredPlatforms"":[""2.1""],""sdkURL"":""https://developer.tizen.org/downloads/sdk""} } } {code} In particular for Android the regular expressions used are brittle and difficult to reconstruct since they match against the expected installed directory/filenames, while we need to compare against an xml file with the segments broke out into ""fields"". i.e. ""addon-google_apis-google-10"" is the directory on disk, but in xml the ""google_apis"" is the ""name-id"" value, ""google"" is the vendor_id"" value and ""10"" is the api level. Ideally we'd break that out more explicitly: Here's a suggestion for how the android platforms' file would look: {code:javascript} ""android"": { ""mobile"": { ""addons"": [], ""tools"": "">=14"", ""platform-tools"": "">=10"", ""platforms"": [""2.3.3""] } ""module"": { ""addons"": [ ""google_apis-google"": { ""apiLevel"": "">=10"" } ], ""java"": "">=1.6.0_25"", ""plugins"": [ ""jdt"": { ""name"": ""Java Development Tools"", ""id"": ""org.eclipse.jdt.feature.group"", ""url"": ""http://download.eclipse.org/releases/kepler"", ""version"": "">= 3.0"" } ] } } {code} In general my suggestions are to use Node/npm semantic versioning strings rather than our haphazard version, range or regex approach. Additionally, explicitly state the addon unique id as a key (here I'm assuming the unique id is a combination of name_id and vendor_id). Lastly, break out the dependencies required by mobile versus module development. As for the URLs we have here, I'm not sure if we should be including them here or not.",1 +"TIMOB-14460","07/02/2013 16:46:22","Android: Add Ti.Platform.canOpenURL() support","As a developer, I would like to be able to determine if the user has a target app installed on their device without opening that target app. I might do so to provide a fallback, prompt the user to install the app (like the way Google does with their integrated suite of apps on iOS where the UI provides Install buttons for apps that are detected to be missing). iOS supports Ti.Platform.canOpenURL() to provide this functionality. On Android, I have to call Ti.Platform.openURL() and detect the returned boolean -- but that opens the target app. The code at http://bencoding.com/2013/02/18/determine-if-intent-receiver-exists-on-android-using-titanium/ might provide a starting point.",5 +"TIMOB-15247","07/05/2013 17:05:43","iOS: Ti.Blob.imageAsResized always returns a png image","This is the same issue as [TIMODOPEN-228|https://jira.appcelerator.org/browse/TIMODOPEN-228] but for Ti.Blob (core). On iOS, all images created by Ti.Blob.imageAsResized are of type png (mime-type ""image/png"") instead of jpeg. As a result resized images are much bigger (in terms of bytes) than what they're supposed to be had they been jpegs. This seems to be related to the handling of alpha channel, according to [TIMODOPEN-228|https://jira.appcelerator.org/browse/TIMODOPEN-228] It works fine on android (Ti.Blob.imageAsResized returns jpegs).",1 +"TIMOB-14494","07/08/2013 14:36:20","iOS: Ti.Map should handle touch events on the view not just annotations","Touch events are currently only fired on Map Annotations and not else where on the map view. Implement touch events on the Map View.",8 +"TIMOB-14496","07/08/2013 20:54:39","Android: setHeaderView for Titanium.UI.TableViewSection","Currently, it is only possible to set the *headerView* of a TableViewSection at creation-time in Android. It would be great to use the *setHeaderView* method for Android too. In the Docs there is no note that this method is not available in Android: [http://docs.appcelerator.com/titanium/latest/#!/api/Titanium.UI.TableViewSection-method-setHeaderView]. There is only a hint at the *headerView* property description (_""On Android, must be set at creation.""_): [http://docs.appcelerator.com/titanium/latest/#!/api/Titanium.UI.TableViewSection-property-headerView] Q&A: [http://developer.appcelerator.com/question/154498/alloy-how-to-set-controller-as-headerview-to-tableviewsection-in-android] ",3 +"TIMOB-16050","07/09/2013 12:35:53","MobileWeb: load event on imageView not firing","When using Ti.UI.createImageView on MobileWeb, the ""load"" event never fires. I tried to use ""postlayout"", but this event fires twice the FIRST time the image is loaded (i.e. is not in the browser cache) and once every subsequent time. Using Blob (with it's various means of downloading image data into it) is not supported on MobileWeb, so there seems to be no way of actually knowing when an image is completely downloaded. *Steps to Reproduce* 1. Create empty project in Studio based on Classic->HTML-based Application 2. Remove everything between and in Resources/HTML/index.html 3. Replace everything in app.js with code below 4. Create folder Resources/comics and download panelA.png from http://www.ontonauts.com/reader_indev/comics/panelA.png 5. Run the project You will see that the ""image has loaded"" text is never sent to the Javascript console, i.e. the event is never triggered. *Test Case* {code} var oxi = {}; (function(){ //require and open top level UI component var ApplicationWindow = require('ui/ApplicationWindow'); var _win = new ApplicationWindow(); _win.open(); var eventHandler = function(e) { switch (e.type) { case 'load': Ti.API.info('image has loaded'); break; } }; var img = Ti.UI.createImageView(); img.addEventListener('load',eventHandler); img.setImage('comics/panelA.png'); _win.add(img); })(); {code}",1 +"TIMOB-14544","07/12/2013 22:38:11","iOS: keyboardFrameChanged before keyboard is shown","keyboardFrameChanged event doesn't do much good as it is fired after the keyboard has already been displayed. to create responsive layouts with different keyboard sizes we need to know keyboard size BEFORE the keyboard is displayed. iphone/Classes/AppModule.m line 386-407 could be changed to something like this {code:objc} -(void)startup { WARN_IF_BACKGROUND_THREAD_OBJ; //NSNotificationCenter is not threadsafe! NSNotificationCenter * nc = [NSNotificationCenter defaultCenter]; [nc addObserver:self selector:@selector(willShutdown:) name:kTiWillShutdownNotification object:nil]; [nc addObserver:self selector:@selector(willShutdownContext:) name:kTiContextShutdownNotification object:nil]; #if __IPHONE_OS_VERSION_MIN_ALLOWED >= __IPHONE_5_0 if ([TiUtils isIOS5OrGreater]) { [nc addObserver:self selector:@selector(keyboardFrameChanged:) name:UIKeyboardWillChangeFrameNotification object:nil]; } #else [nc addObserver:self selector:@selector(keyboardFrameChanged:) name:UIKeyboardWillShowNotification object:nil]; [nc addObserver:self selector:@selector(keyboardFrameChanged:) name:UIKeyboardWillHideNotification object:nil]; [nc addObserver:self selector:@selector(timeChanged:) name:UIApplicationSignificantTimeChangeNotification object:nil]; #endif [super startup]; } {code} Either that or provide access to both Will and Did. e.x. {code:javascript} Ti.App.addEventListener('keyboardFrameChanged', function(e){ var val = Ti.Platform.displayCaps.platformHeight - e.keyboardFrame.y; $.container.animate({bottom:val, duration:300}, function() { Ti.API.log(""handleAnimateEnd""); }); }); {code}",8 +"TIMOB-14582","07/17/2013 19:24:44","LiveView: Create Error/Warning Screen","create window to display liveview errors/warnings. examples: error connecting to server, parse error, etc..",8 +"TIMOB-14612","07/19/2013 02:20:22","iOS: Typo in saving screen error message","The text given if you call saveToPhotoGallery() with an invalid media type string is: ""invalid media type: Exepcted either TiBlob or TiFile, was: String"" ""Exepted"" is spelled wrong and ""Invalid"" should be capitalized to be consistent with other error messaging.",1 +"TIMOB-14637","07/23/2013 20:05:26","Android: Fix Titanium Build Script in order to support Genymotion Android Emulator","Genymotion is an enhanced android emulator that leverages x86 emulation with builtin HAXM-like optimizations and Google APIs. In order to have an simulator with a performance like the iOS Simulator we need to setup a x86 android emulation with Intel HAXM support. The problem is that by using the native AVD on Android SDK you can do this setup BUT without the Google APIs, namely the GMaps API, which makes testing apps depending on those APIs, impossible on this high performance simulation. Although it is possible to add Google APIs to a standard x86 AVD, the process is very complex and involves copying the libraries from other non-x86 AVDs and rebuilding a system image which takes a lot of time and effort for each simulator setup you want to have. So Genymotion does it all under the hood and allows us to select between several android models and even simulate external sensors and GPS location, much like the Apple Simulator does. The standard Titanium build script has some problems that causes the Simulator session not to be recognized as a valid deployment target (using titanium build -p android -T device), even though adb successfully recognizes the simulation under adb devices. In order to fix this I have found some hints on a russian weblog and changed it a bit for working on my Mac. I have successfully run my Titanium app on Genymotion using Titanium CLI by doing the following: http://reinraus.ru/wordpress/nastraivaem-titanium-studio-dlya-zapuska-prilozhenij-v-android-x86/ It is written in Russian, so please use the Google Translate tool, he has made 3 changes on the build script. The tutorial is for windows, so if you're running Titanium on a Mac or Windows, just change the first patch from: {code} dev_id, dev_type=output.split(""\r\n"")[1].split(""\t"") {code} to: {code} dev_id, dev_type=output.split(""\n"")[1].split(""\t"") {code} It seems there is still a tiny problem with Logcat on the end, but the app successfully run on Genymotion after this patch.",3 +"TIMOB-14652","07/25/2013 03:33:29","CLI: When selected SDK is not 3.0.0 or 3.0.2 and building for 3.0.0 and 3.0.2, verify Node.js version is 0.8.x","If the CLI's selected Ti SDK is 3.1.0.GA and the tiapp.xml is set to 3.0.0.GA or 3.0.2.GA, then those SDKs require Node.js 0.8.x. Today we allow those builds to fail. The build should be smarter to detect those SDKs and if Node.js is not 0.8 and fail gracefully.",2 +"TIMOB-14743","07/27/2013 00:21:21","BlackBerry: 'java' processes belonging to 'Appcelerator Studio' might kill the CPU","h5. Problem description After installing the BlackBerry tools and using Appcelerator Studio for building BlackBerry apps, I've experienced intermittent issues, leading to a sluggish and clumsy experience and eventually to completely freezing the system (forcing a hard restart). From the Activity Monitor, a number of java processes were occupying most of the machine CPU. All those processes were belonging to Appcelerator Studio Process Group. It seems those processes are related to BlackBerry development and have been experienced so far only when building projects on BlackBerry. Attached screenshots of my Activity Monitor and detail of a single process. h5. Notes Another similar issue occurred in the past: https://jira.appcelerator.org/browse/TISTUD-3514",8 +"TIMOB-14696","07/30/2013 13:10:55","Android: Image with Menu text on Menu Item for Android Menu is not being displayed and menu text is cut off","Image with Menu text on Menu Item for Android Menu is not being displayed and menu text is cut off. Steps to Reproduce: 1.Install and launch KS. 2.Go to Base UI >Menu (Android)>Menu Handlers (Window Options) 3.Press on open window 4.Press the menu button 5.Press on close window. Expected Result: 3.Window with blue view should show up 4.Should see a graphic with menu text. 5.Window should close. Actual Result: 3.Window with blue view is seen. 4.No image is seen and menu text is also cut off. 5.Window gets close. Not a Regression as occurs in 3.1.1.GA also",0 +"TIMOB-14701","07/30/2013 22:55:53","CLI: Android: For emulator builds, check that emulator has sufficient space","See if there's a way to check how much space is free in an AVD before install the app. We probably will need to build the app first to get the APK file size.",2 +"TIMOB-14735","08/01/2013 10:54:42","iOS: Accessibility: ButtonBar: Accessibility does not work on Button Bar ","iOS: Accessibility: ButtonBar: Accessibility does not work on Button Bar. The Label, Value or Hint are not voiced over. This is not a regression. It occurs since sdk 3.0.0.GA. Steps to reproduce: 1. Run the app as Accessibility Acceptance Access_1102 iOS Only under Accessibility module. 2. Touch the first Buttonbar (with LVH defined in sequence) Actual: if 'red' is touched then 'red button 2 of 3"" is spoken. The Label, Value or Hint are not voiced over. Expected: 2. The device reads aloud: buttontext, tab, (button number) of (total number of buttonson buttonbar) [eg. 2 of 3] followed by """"Buttonbar1"""", """"Value1"""", """"Hint1"""" ",3 +"TIMOB-14752","08/02/2013 12:47:40","Android: Telephone numbers in WebView are not getting auto linked ","*Problem* Telephone numbers (inside html content) are not getting autoLinked in Android. But it is working on iOS. Numbers are not auto linked after using ""format-detection"" meta tag either. {code:html}{code} *Test case* {code:javascript} var win = Titanium.UI.createWindow({ backgroundColor : '#fff' }); var html = ""

hello:

  • Call immediately on 0800 111 999:
""; var webView = Ti.UI.createWebView({ height : Ti.UI.FILL, width : Ti.UI.FILL, html : html }); win.add(webView); win.open(); {code}",0 +"TIMOB-14763","08/04/2013 22:47:04","iOS: titleid and messageid properties don't work for AlertDialog","titleid and messageid property doesn't work for alertDialog. *i18n/en/strings.xml* {code:xml} Hello world! {code} *app.js* {code:javascript} var win = Ti.UI.createWindow(); var alert = Ti.UI.createAlertDialog({ titleid: ""hello"", messageid: ""world"" }); console.log(L(""hello"") + "" "" + L(""world"")); alert.show(); win.open(); {code} *Docs* http://docs.appcelerator.com/titanium/latest/#!/api/Titanium.UI.AlertDialog-property-titleid",2 +"TIMOB-14784","08/08/2013 17:47:58","CLI: Create ADB Library","We need an ADB library that provides the following functions: * devices * start-server * kill-server * install ** allow installation to a specific device/emulator (TIMOB-12600 CLI: building for Android device while the emulator open generates a wrong Error Message) ** gracefully handle FAILED_INSUFFICIENT_STORAGE errors (TIMOB-14701 CLI: Android: For emulator builds, check that emulator has sufficient space) *** if insufficient storage space, display instructions on how to resolve (TIMOB-9859 Android: increase AVD storage size to reduce \[FAILED_INSUFFICIENT_STORAGE\] errors) * shell * push * forward * start app (TIMOB-13105 CLI: Add build support for building android apps on emulator without starting the app) * kill running app",20 +"TIMOB-14785","08/08/2013 18:24:29","CLI: Create Android Emulator Library","We need an Android emulator library that provides the following functions: * create AVD ** improve emulator naming convention (TIMOB-1872 Android: Fix AVD naming scheme) * launch emulator ** make sure adb server is running ** if the emulator we want is already running, return ** if avd does not exist, create it ** if skin is not specified, select a valid skin for the AVD's Android SDK (TIMOB-13582 CLI: Launching emulator without specifying skin will use HVGA and will fail if chosen AVD does not support HVGA) ** custom launch params (TIMOB-2646 Android: Feature Request: Customized launch params) ** gracefully handle when emulator doesn't start in timely manner (TIMOB-9153 Android: Deployment: Android Emulator intermittently fails to launch app after timed out) ** NOTE: do not launch a useless emulator, especially on Windows (TIMOB-4730 Android 3.2 Simulator behavior on windows is very poor (not launched at all or useless emulator launched)) ** pipe emulator output to logger (TIMOB-13381 Android Emulator: process launches in new terminal on Windows) ** fire callback when emulator has booted ** fire callback when sdcard is ready ** fire callback when emulator is quit (TIMOB-12604 Android: Closing the emulator, 'Emulator has exited' log in not printed on console) ** NOTE: be careful when running multiple x86 instances as to avoid ""Starting emulator for AVD 'titanium_10_800x1280_armeabi-v7a' \ emulator: The memory needed by this VM exceeds the driver limit. \ HAX is not working and emulator runs in emulation mode"" errors * kill emulator ** NOTE: make sure emulator is properly killed on Windows (TIMOB-7468 Android: tooling - Rhino/V8 - On windows systems during emulator build, console reports error attempting to kill emulator process) * NOTE: make sure to support directories with &, especially on Windows (TIMOB-2527 Android: App launch/build problem if ampersand in home folder name)",20 +"TIMOB-14786","08/08/2013 18:41:14","CLI: Create Genymotion Library","We need an Genymotion library that provides the following functions: * detect Genymotion (TIMOB-14637 Android: Fix Titanium Build Script in order to support Genymotion Android Emulator) * launch emulator",20 +"TIMOB-14787","08/08/2013 19:30:28","CLI: Improve detection of Android SDK and SDK Home locations","The Android environment detection library needs a few additional features for the build command to properly validate the development environment. * detect Android SDK ** detect abd location (TIMOB-2760 need to be able to ref adb from either /tools or /platform-tools subdir) ** detect proguard availability (TIMOB-2782 Android: Generate / Run a Proguard configuration based on API usage) ** search configured Android SDK path first, then try ANDROID_SDK environment variable (TIMOB-8658 Android: Switch search order of folders/environment variables in androidsdk.py) ** if 64-bit Linux *** check if ia32-libs package is installed (dpkg-query -l ia32-libs) (TIMOB-13520 Android Emulator: improve error message from missing ia32-libs dependency on linux) *** check if /usr/lib/libGL.so exists *** check if i386 architecture set in dpkg * detect Android SDK Home (ANDROID_SDK_HOME) ",13 +"TIMOB-14799","08/09/2013 13:58:52","iOS: Prevent clearing TextField after password field had focus","*Problem* On iOS textfields are cleared by default after some password field had the focus. Is this something that could be prevented. I looked at the docs for textfields, but either I cannot find it or it just isn't there. *Example code to reproduce* {code:javascript} var win = Ti.UI.createWindow({ backgroundColor : 'white' }); var tf1 = Ti.UI.createTextField({ value : ""textfield1"", passwordMask : true, top : 10, width : 200 }); win.add(tf1); var tf2 = Ti.UI.createTextField({ value : ""textfield2"", top : 80, width: 200 }); win.add(tf2); win.open(); {code} *Steps to reproduce* 1. click in the password field 2. click in the ""normal"" textfield 3. press backspace *Expected result* The last character of the textfield is deleted *Actual result* The entire contents of the textfield is now cleared instead of only the last character.",3 +"TIMOB-14806","08/10/2013 02:38:09","ProjectTemplate: values used as comparison to determine device form factor are wrong","h5. Problem description In Appcelerator Studio template samples for classic projects, the values used as comparison to determine if the device is a tablet or a handheld are outdated and could lead to a wrong detection. h5. Steps to reproduce Create a new Single Window Project and open app.js. Check line: {code} var isTablet = osname === 'ipad' || (osname === 'android' && (width > 899 || height > 899)); {code} A Google Galaxy Nexus device (for example) has those values: {code} height: 1184 width: 720 {code} As a result, it is being detected as a 'tablet' while is a 'handheld' device.",5 +"TIMOB-14836","08/12/2013 22:23:52","LiveView: when device and machine are not on the same network, no graceful error message is displayed","h5. Problem description In order to work, LiveView development machine and device must be on the same network. When this is not happening, there is no graceful error message to inform the user. On Android a Runtime error is displayed and on iOS the app is stuck at the splashscreen.",5 +"TIMOB-14876","08/14/2013 00:07:10","Android Device: support run on device console output","Android Device: support device console output. Currently if you launch an app on android device, the runtime output does not appear in the console. This is basic functionality. However, we do support debug on device output and emulator output, so this is also a parity issue. Test Steps: 1. Launch app on Android Device (Run > Android Device). Actual Result: Build logs appear in console, runtime logs do not. The last line in the console is: [INFO] :   App installer shutdown successfully",1 +"TIMOB-15249","08/15/2013 09:17:21","Android: TableView header and footer cannot be removed or resized dynamically","In contrast with iOS, on Android the {{headerView}} and {{footerView}} of a {{TableView}} cannot be removed or resized ({{height}}) after once the window is opened and the table layed out. Since the [docs|http://docs.appcelerator.com/titanium/latest/#!/api/Titanium.UI.TableView] do not mention any platform differences, I'd expect this to work on Android like it does on iOS. h1. Steps to reproduce # Create a new project: {{titanium create -p ios,android -n testHeader -d . --id test.header}} # For {{app.js}} use: {code} var w = Ti.UI.createWindow({ backgroundColor: 'white' }); var t = Ti.UI.createTableView({ data: [ { title: 'One' }, { title: 'Two' }, { title: 'Three' }, { title: 'Four' }, { title: 'Five' } ] }); var h = Ti.UI.createView({ backgroundColor: 'red', height: 100, width: Ti.UI.FILL }); h.addEventListener('click', function () { h.height = 50; f.height = 50; }); var f = Ti.UI.createView({ backgroundColor: 'green', height: 100, width: Ti.UI.FILL }); f.addEventListener('click', function () { t.headerView = null; t.footerView = null; }); t.headerView = h; t.footerView = f; w.add(t); w.open(); {code} # Run the app on both Android and iOS devices. # Tap the red headerView and notice that only on iOS it resizes both the header and footerView. # Tap the green footerView and notice that only on iOS it removes both the header and footerView.",5 +"TIMOB-15732","08/15/2013 22:40:55","CLI: Changelog (release notes) shows 3.1.1 as latest entry for the 3.1.2 release","h5. Description: When studio prompts users to install CLI 3.1.2, the changelog is displayed. Currently the changelog is only listing 3.1.1 as the latest entry. This might cause confusion. h5. Steps to reproduce: 1) Remove CLI with ""sudo npm -g remove titanium"" OR if you have a version earlier than 3.1.2, skip this step. 2) Launch studio and ""check for appcelerator updates"" 3) Examine the ""release notes"" (changelog) displayed h5. Result: The latest entry is 3.1.1 h5. Expected Result: The latest entry is 3.1.2 and describes the fixes made.",1 +"TIMOB-14899","08/16/2013 19:58:53","Tooling: Include Google Maps V2 metadata into timodule.xml so can be added to the manifest with the correct app id.","h6.Feature Request To add ability to have the application name automatically updated in the timodule.xml file when building an application. h6.Rationale Forgive me if I'm missing something obvious. The problem is that if they use the included module they have to assume it will be upgraded and replaced when a new Titanium SDK is released. Since the module will be replaced they cannot use the timodule.xml file to add the app id to the required permissions for the maps module. We have to add the permissions below to the tiapp.xml file. {code} {code} When we add them like that to the tiapp.xml file we get errors like: {code} [TRACE] Writing out AndroidManifest.xml [DEBUG] /Users/egomez/android-sdks/build-tools/17.0.0/aapt package -m -J ""/Users/egomez/Documents/Titanium Studio Workspace/TravisTestApp/build/android/gen"" -M ""/Users/egomez/Documents/Titanium Studio Workspace/TravisTestApp/build/android/AndroidManifest.xml"" -S ""/Users/egomez/Documents/Titanium Studio Workspace/TravisTestApp/build/android/res"" -I /Users/egomez/android-sdks/platforms/android-10/android.jar [ERROR] /Users/egomez/Documents/Titanium Studio Workspace/TravisTestApp/build/android/AndroidManifest.xml:4: Tag attribute name has invalid character '$'. [ERROR] /Users/egomez/Documents/Titanium Studio Workspace/TravisTestApp/build/android/AndroidManifest.xml:39: Tag attribute name has invalid character '$'. [ERROR] Error generating R.java from manifest {code} h6.Steps to reproduce Do a project clean, and build the android app and the map did not load. We then checked the generated AndroidManifest.xml file and looked for the required permissions that are outlined in the index.html file of the maps module. In the AndroidManifest file I found that the following permissions were present: {code} {code} The other 4 were not present in the manifest file and they need to be included for the Maps Module to work. Client would like to propose that the following be included in the timodule.xml that is included with the maps module that way they are automatically added to the manifest with the correct app id. The 4 which should be added to timodule.xml are: {code} {code} h6.Additional info Client also tested this by modifying the timodule.xml file for the module in the following directory: - ""/Library/Application Support/Titanium/Modules/android/ti.map/2.1.1/"" When they just added those 4 lines the maps module started working properly. Also can be confirmed that the 4 missing permissions/features are now present in the AndroidManifest.xml file.",3 +"TIMOB-14963","08/21/2013 07:25:15","Android: Ti.Map and Ti.Cloudpush return ""already added: Lcom/google/android/gms/games/achievement/Achievement""","I'm trying to add Push to my app (iOS/Android) but I'm getting the following error message when I compile the android version: {code} [ERROR] UNEXPECTED TOP-LEVEL EXCEPTION: [ERROR] java.lang.IllegalArgumentException: already added: Lcom/google/android/gms/games/achievement/Achievement; [ERROR] at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:123) [ERROR] at com.android.dx.dex.file.DexFile.add(DexFile.java:163) [ERROR] at com.android.dx.command.dexer.Main.processClass(Main.java:490) [ERROR] at com.android.dx.command.dexer.Main.processFileBytes(Main.java:459) [ERROR] at com.android.dx.command.dexer.Main.access$400(Main.java:67) [ERROR] at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:398) [ERROR] at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:245) [ERROR] System Error while compiling Android classes.dex [ERROR] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:131) [ERROR] at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:109) [ERROR] at com.android.dx.command.dexer.Main.processOne(Main.java:422) [ERROR] at com.android.dx.command.dexer.Main.processAllFiles(Main.java:333) [ERROR] at com.android.dx.command.dexer.Main.run(Main.java:209) [ERROR] at com.android.dx.command.dexer.Main.main(Main.java:174) [ERROR] at com.android.dx.command.Main.main(Main.java:91) [ERROR] 1 error; aborting {code} Modules added: {code} ti.cloudpush com.acktie.mobile.android.qr ti.cloud com.acktie.mobile.ios.qr facebook ti.map facebook {code} other users confirm that ti.cloudpush and ti.map inside the same project will cause this error for them too. Thread: http://developer.appcelerator.com/question/155815/already-added-lcomgoogleandroidgmsgamesachievementachievement",3 +"TIMOB-14931","08/21/2013 19:37:07","MobileWeb: option not properly toggling touch events for Ti.UI and ScrollableView","The flag needs to override the touch detection, but we forgot to add this to titanium/Ti/UI/ScrollableView.js and titanium/Ti/UI.js. We simply need to change both instances of {code} useTouch = 'ontouchstart' in global, {code} to {code} useTouch = has('touch'), {code}",2 +"TIMOB-14933","08/21/2013 21:05:11","CLI: Builds where tiapp.xml sdk-version differs from selected SDK fail to properly fork in Windows","The CLI tries to strip the first argument if it's the actual ""node"" executable before parsing the args. The problem is on Windows the node executable can sometimes contain the .exe and the following line of code fails: {code} // cli.js (line 218) args[0].slice(-4) === 'node' && args.shift(); {code} This line needs to look like this: {code} args[0].replace(/\\/g, '/').split('/').pop() == process.execPath.replace(/\\/g, '/').split('/').pop().replace(/\.exe$/, '') && args.shift(); {code}",1 +"TIMOB-14971","08/26/2013 08:49:10","iOS7: Grouped TableView - First Header has wrong height","*Problem* On iOS 7, when adding sections with headerTitles the first header is the wrong height. The next header is the right height. See test case. *Actual Result* The first header is to high. *Expected Result* The first header should be the same hight as the no. 2 3 4… *Test case* {code:xml} {code} 3. Launch the app. Click on the TextFielfd to write. 4. The keyboard pops up and the application crushes h5. EXPECTED RESULT Keyboard should open to enable writing in the TextField. h5. OBSERVED RESULT After the Keyboard opens the application crashes. ",3 +"TIMOB-17335","07/15/2014 22:11:33","iOS8: Add support for Share Extensions","iOS 8 allows developers to add extensions to the Share infrastructure.",5 +"TIMOB-17554","07/17/2014 22:24:46","TiAPI: Support ""full"" date format","In KrollContext.m please add the following code to the function StringFormatDateCallback (at about line 434 in 3.3 SDK) {code} else if ([s isEqualToString:@""full""]) { style = NSDateFormatterFullStyle; } {code} This will add support for the full date format, which is the same as the long date format, but with the day of the week. You can add the same code to the following function to support the full format for time as well. A very simple change. Thanks. ",5 +"TIMOB-17346","07/17/2014 23:24:56","CLI: Ti config JSON corrupted resulting in inability to run CLI commands","h5. Description: Ritu experienced an issue during update to 3.3.0 GA components which resulted in her ti config JSON getting corrupted. The cause or timing of this are not known. No other team members experienced it during our update testing, so at this point seems isolated to a single system. When a project is created in Studio in this configuration, the tiapp.xml is not rendered correctly. In addition all commands for the CLI fail, see below for details: {code} ChangeMeMBA-5:analytics ragrawal$ ti -v FATAL ERROR: Error: Unable to parse config file ChangeMeMBA-5:analytics ragrawal$ ti info FATAL ERROR: Error: Unable to parse config file {code} To fix the issue, the JSON structure was manually edited to be valid. h5. Steps to reproduce: Steps are mostly unknown, but have more detail on config # Configure a system in the following manner: ## One latest development version of the SDK in your titanium folder, but no GA 3.3.0 ## Latest modules from a previous development 3.3.0 build install ## Studio 3.3.0 Latest version ## GA npm components (acs 1.0.14, CLI 3.2.3, Alloy 1.3.1, titanium-code-preocessor 1.1.1) # Check for Appcelerator updates in studio # Update your NPM components and SDK # Check in terminal ""ti config"" h5. Result: JSON structure is invalid, and the CLI is unable to parse. CLI commands fail, and Studio tiapp.xml editor fails to render (since components are missing from CLI-built project) h5. Expected Result: CLI identifies bad structure and offers information on solution",8 +"TIMOB-17355","07/18/2014 07:51:20","iOS: SystemButton cannot be changed after creation","h4. Problem Description The following code demonstrates that the {{systemButton}} property cannot be changed after creation. This is not documented and of course it would be even better if it *could* be changed. h5. Testing Environment: Titanium SDK: 3.2.3.GA and 3.3.0.GA Titanium CLI: 3.3.0 OS X Version: 10.9.3 IOS Simulator: 7.1 h5. TEST CODE: app.js {code} var btn = Ti.UI.createButton({ systemButton : Ti.UI.iPhone.SystemButton.ADD }); var win = Ti.UI.createWindow({ backgroundColor : 'white', rightNavButton : btn, title : 'Click the button' }); var nw = Ti.UI.iOS.createNavigationWindow({ window : win }); btn.addEventListener('click', function(e) { //console.debug('clicked but not changed'); console.info('clicked but not changed'); btn.systemButton = Ti.UI.iPhone.SystemButton.ACTION; }); nw.open(); {code} h5. STEPS TO REPRODUCE: - Create a simple project. - Update this code in app.js - Run this with testing environment. - Click to the systemButton or ADD button. h5. TESTING RESULT: There is no any change in the systemButton or ADD button. ",0 +"TIMOB-17509","07/18/2014 22:55:45","Android SDK not loading due to EPERM failure","h6.Issue description After upgrading Appcelerator Studio the Android SDK isn't properly detected. This prevents developers to deploy applications. Forgive me if this is a dupe of another ticket. h6.Steps to reproduce # On Appcelerator Dashboard tab hit ""Android SDK"" to complete setup process (AppcStudio_InstallingAndroid_1.jpg). # Use Platform Configurations dialog to install required SDKs (2.3.3 is checked. AppcStudio_InstallingAndroid_2.jpg). # Upon completion everything seems Ok. AppcStudio_InstallingAndroid_3.jpg # A popup over windows remains static saying API 10 must be installed and suddenly Android isn't fully loaded (AppcStudio_InstallingAndroid_4.jpg).",8 +"TIMOB-17350","07/21/2014 17:18:41","iOS: Duplicate symbol linker error when using APS libAPSAnalytics.a","h6.Issue description The developer's app includes a Ti module that wraps a 3rd-party library that uses the iOS Reachability class. It appears that APSAnalytics also uses the iOS Reachability class. Both the 3rd-party library and the APS system include this class in their respective libraries causing a duplicate symbol error during linking. Below is the error I get when manually building the app: {code} [TRACE] duplicate symbol _kReachabilityChangedNotification in: [TRACE] /Users/gary.fong/development/mfoundry/nextgen/trunk/tistudio/nextgen/MB-Next-Gen-Phone/build/iphone/Classes/APSAnalytics/libAPSAnalytics.a(APSReachability.o) [TRACE] /Users/gary.fong/development/mfoundry/nextgen/trunk/tistudio/nextgen/MB-Next-Gen-Phone/modules/iphone/com.mf.paydiant.sdk/1.0/libcom.mf.paydiant.sdk.a(Reachability.o) [TRACE] ld: 2 duplicate symbols for architecture armv7 [TRACE] clang: error: linker command failed with exit code 1 (use -v to see invocation) {code}",5 +"TIMOB-17351","07/21/2014 18:15:44","iOS - Hyperloop modules might crash when accessing native objects","Using the current version of Hyperloop for iOS. When accessing a variable that holds a native object wrapped by a Hyperloop JS object, the app will crash with this stack trace: h4. EXC_BAD_ACCESS (code=2,address=0xc) {code} #0 0x03fac0b2 in objc_msgSend () #1 0x0027c674 in TiBindingTiValueToNSObject at /Users/penrique/Documents/Titanium_Studio_Workspace/TestClassic/build/iphone/Classes/TiBindingTiValue.m:112 #2 0x0002fe4c in TiValueToId at /Users/penrique/Documents/Titanium_Studio_Workspace/TestClassic/build/iphone/Classes/KrollObject.m:86 #3 0x00031cd1 in +[KrollObject toID:value:] at /Users/penrique/Documents/Titanium_Studio_Workspace/TestClassic/build/iphone/Classes/KrollObject.m:515 #4 0x0002aebc in KrollCallAsFunction at /Users/penrique/Documents/Titanium_Studio_Workspace/TestClassic/build/iphone/Classes/KrollMethod.m:37 #5 0x002d1b03 in TI::TiCallbackObject::call(TI::TiExcState*) at /Users/max/dev/titanium/tijscore/TiCore/API/TiCallbackObjectFunctions.h:397 #6 0x0031483a in TI::Interpreter::privateExecute(TI::Interpreter::ExecutionFlag, TI::RegisterFile*, TI::TiExcState*) at /Users/max/dev/titanium/tijscore/TiCore/interpreter/Interpreter.cpp:4073 #7 0x00319a5b in TI::Interpreter::executeCall(TI::TiExcState*, TI::TiObject*, TI::CallType, TI::CallData const&, TI::TiValue, TI::ArgList const&) at /Users/max/dev/titanium/tijscore/TiCore/interpreter/Interpreter.cpp:965 #8 0x0035c963 in TI::call(TI::TiExcState*, TI::TiValue, TI::CallType, TI::CallData const&, TI::TiValue, TI::ArgList const&) at /Users/max/dev/titanium/tijscore/TiCore/runtime/CallData.cpp:45 #9 0x002cc9dc in TiObjectCallAsFunction at /Users/max/dev/titanium/tijscore/TiCore/API/TiObjectRef.cpp:449 #10 0x0027bcd6 in TiBindingEventProcess at /Users/penrique/Documents/Titanium_Studio_Workspace/TestClassic/build/iphone/Classes/TiBindingEvent.m:278 #11 0x0027bfd3 in -[TiBindingCallbackInvoke invoke:] at /Users/penrique/Documents/Titanium_Studio_Workspace/TestClassic/build/iphone/Classes/TiBindingRunLoop.m:53 #12 0x00025c05 in -[KrollContext invoke:] at /Users/penrique/Documents/Titanium_Studio_Workspace/TestClassic/build/iphone/Classes/KrollContext.m:958 #13 0x0002768c in -[KrollContext main] at /Users/penrique/Documents/Titanium_Studio_Workspace/TestClassic/build/iphone/Classes/KrollContext.m:1315 #14 0x010fda07 in -[NSThread main] () {code} Note: the line numbers might vary deepening on the SDK version, but they're close enough The reason for this is very simple. When using Titanium Mobile we have two types of JS object: A normal JS object, and a JS object containing an Objective-C object. When using a Hyperloop module, there's another JS object added to the equation, a JS object containing a Hyperloop object. In JavaScriptCore every JS object has a place for a void*. In Titanium Mobile we store an Objective-C ""id"" directly there. In Hyperloop, in the other hand, we store a c++ class in that same void* property, and that class has a void* property (called ""data"") and there we sore an objective-c ""id"". This is why it crashes. Titanium Mobile: JS Object -> void* -> id Hyperloop JSObject -> void* -> c++ class -> void* -> id {code} id privateObject = (id)TiObjectGetPrivate(obj); if ([privateObject isKindOfClass:[KrollObject class]]) { return [privateObject target]; } {code} In the first line of code we get the void* from the JS object and cast it as an ""id"". Then we call an Objective-C method on it - ""isKindOfClass:"". This is fine in Titanium mobile, but in Hyperloop, that void* is a c++ class, and on that second line, we call an objective-c method on that c++ class, and then the app crashes hard.",13 +"TIMOB-17731","07/22/2014 10:30:10","Installation failed, longjohn.js 185 - has no method 'indexOf'","Hi, when i try to build an application and launch it on the emulator, the console gives me this error: {code:borderStyle=solid} [INFO] : Installing apk: /home/username/Documenti/Ti_Workspace/projectName/build/android/bin/projectName-dev-debug.apk [ERROR] Application Installer abnormal process termination. Process exit value was 8 [TRACE] : Checking if package manager service is started /usr/local/lib/node_modules/titanium/node_modules/longjohn/dist/longjohn.js:185 throw e; ^ has no method 'indexOf' {code} complete log here: [Complete Log on PasteBin|http://pastebin.com/Q18pHFsA] this is my complete environment: [Complete Environment on PasteBin|http://pastebin.com/jyiAW5ZN]",1 +"TIMOB-18788","07/22/2014 13:09:10","Android: evalJS(""document.height"") returns undefined on Android 4.4.4","Quering a webview to get the height of the content using webview.evalJS(""document.height"") works fine on Android 4.4.2 (tested on HTC One) and lower devices, but Android 4.4.4 devices (tested on the Nexus 5 and 7) returns undefined instead of the height of the content. Sample code: {noformat} body.addEventListener('load', function(e) { var h = body.evalJS(""document.height""); Ti.API.info(""Content height: "" + h); // returns height on < 4.4.2, undefined on 4.4.4 } {noformat} ",8 +"TIMOB-17357","07/22/2014 17:22:47","Android: Support Material Theme","The material theme provides a new style for your app, system widgets that let you set their color palette, and default animations for touch feedback and activity transitions.",8 +"TIMOB-17358","07/22/2014 17:23:47","Android: Refactor notifications","Our current implementation is deprecated, and likely to stop working with Android L.",13 +"TIMOB-17359","07/22/2014 17:24:24","Android: Support View Shadows","In addition to the X and Y properties, views in the Android L Developer Preview have a Z property. This new property represents the elevation of a view, which determines: The size of the shadow - Views with higher Z values cast bigger shadows. The drawing order - Views with higher Z values appear on top of other views. We could use this instead of sorting the views manually like we do now.",3 +"TIMOB-17371","07/23/2014 07:55:57","iOS8: Orientation: Screen gets distorted when orientation changes","Steps to reproduce: 1. Install KS on iOS 8 device. 2. Navigate to BaseUI>TabGroups 3. Click on Add/Remove TabGroup 4. Turn Device on Landscape mode. 5.Click on More.Then on Edit Button. {color:red}Actual Result:{color} Screen gets distorted. {color:green}Expected Result:{color} Screen should not get distorted. Refer to Screenshots attached ",13 +"TIMOB-17539","07/23/2014 12:18:46","Android: Adding swipe to window with table view causing lag while scrolling table view ","I found that attaching a 'swipe' event handler to a window with the goal of allowing swiping left and right to change content is having the unintended side effect of preventing the native scroll behavior on a table view contained in the window on Android. Normally when you swipe down (fling) on a table view, there's some inertia and the table view keeps scrolling for a little bit. When there is a 'swipe' event handler on a table view and you swipe down on a table view, as soon as you lift your finger off the screen the table view motion stops. There is no inertia. The scrolling stops as soon as the finger is lifted, making it hard to scroll through a long list. iOS doesn't seem affected. The swipe handler works and native scroll works as expected.",0 +"TIMOB-17548","07/23/2014 14:46:34","iOS: APSHTTPRequest send fails with assertion on self.method","HTTP client calls fail and crash the app. The following error is reported: Assertion failed: (self.method != nil), function -[APSHTTPRequest send], file /Users/vduggal/ForkedRepos/APSHTTPClient/APSHTTPClient/APSHTTPRequest.m, line 66. It looks like something is not properly linked in libAPSHTTPClient.a , as the error is pointing to a path in vduggal's computer.",3 +"TIMOB-17386","07/24/2014 21:22:39","iTunesArtwork and iTunesArtwork@2x files should be omitted from production builds","The iTunesArtwork and iTunesArtwork@2x graphics are needed only for development and AdHoc builds. They serve no purpose in production/AppStore builds and should be removed before you build & submit your app to the iTunes App Store. (Otherwise they're just making the IPA bigger.) See https://developer.apple.com/library/iOs/qa/qa1686/_index.html for a reference on that. The Titans and I tested with an app published without those files and the icon still appears in the iTunes desktop app (for syncing). We should update the build scripts to omit these files from AppStore production builds.",3 +"TIMOB-17395","07/25/2014 09:49:03","iOS8: KitchenSink: Views > Options Dialog: Pop up does not show up on iPad","Steps to Reproduce: 1. Install KS on iOS 8 device. 2. Navigate to BaseUI>Views>Options Dialog 3. Click on any option Actual result: Option Dialog does not pop up. Expected result: Option Dialog pop up should be shown with expected options. Note: Same is working fine on iPhone iOS 8 and below versions. Refer to the attached screenshot for your reference. ",5 +"TIMOB-17396","07/25/2014 09:50:02","iOS8: Ti.UI.iPhone.MODAL_TRANSITION_STYLE_PARTIAL_CURL not working properly","*Steps to reproduce:* 1. Install KS on iOS 8 device. 2. Navigate to BaseUI>ModalWindows 3.Choose Partial Curl option from first Picker and any option from second Picker. 4. Click on Show Modal Button. {color:red}*Actual Result:*{color} Option ""Ti.UI.iPhone.MODAL_TRANSITION_STYLE_PARTIAL_CURL"" on modalTransitionStyle property is not working as expected one corner of the current view does not curls up to reveal the modal view underneath. Whole underneath modal view is visible. No curled view is visible. {color:green}*Expected Result:*{color} Each pair selection should show the correct animation. For the option ""Ti.UI.iPhone.MODAL_TRANSITION_STYLE_PARTIAL_CURL"" on modalTransitionStyle property one corner of the current view must curls up to reveal the modal view underneath.",3 +"TIMOB-17460","07/27/2014 07:09:39","iOS: Ti.Network.createHTTPClient autoRedirect = false is ignored","Here is why and how it can be fixed. https://github.com/appcelerator/APSHTTPClient/pull/16 I debugged why autoRedirect property of Ti.Network.createHTTPClient is ignored for 3.3.0.GA. The default property of autoRedirect is true. When autoRedirect = false is set, self.response.status is always zero in APSHTTPRequest.m Therefore the redirect check if statement if (!self.redirects && self.response.status != 0) does always fall through. [self.response updateResponseParamaters:response]; needs to be called in advance",5 +"TIMOB-17411","07/27/2014 22:06:09","CLI: Windows 7 hangs on build during ""Powershell"" detection","When you try to perform a ""ti build"", the process 'node.exe' hangs (0% of CPU) forever. After hours of debugging (with 'node-inspector'), I discover an issue in the 'windows.js' module. Basically the 'spawn' executed (line 385) to detect the powershell, for odd reasons, never emits the 'close' event and so the process hangs. Skipping this detection, the build continue normally. I have described in more details the problem in the following post: http://developer.appcelerator.com/question/176303/titanium-studio-doesnt-works-anymore-after-330-release#answer-281192. Not sure why this happens, but I'm not the only one with this issue.",3 +"TIMOB-17626","07/29/2014 14:09:33","Ti.Media.saveToPhotoGallery() saves pictures without file extension on Android","h4. Problem Description On Android, *Ti.Media.saveToPhotoGallery()* saves a file or a blob without any file extension, which makes it impossible for the photo gallery to recognize the file. The issue can be reproduced with the following code, with the picture test.jpg being stored in project/app/assets. Note that in this example, I use *Ti.Media.saveToPhotoGallery* with a blob but I get exactly the same result with a file. {code:javascript} var file = Ti.Filesystem.getFile(Ti.Filesystem.resourcesDirectory, ""/test.jpg""); Ti.Media.saveToPhotoGallery(file.read(), { success: function() { alert('success'); }, error: function() { alert('error'); } }); {code} I receive a success, but the image is saved without extension and I get this message in the console: D/MediaScannerReceiver(25405): action: android.intent.action.MEDIA_SCANNER_SCAN_FILE path: /storage/emulated/0/Pictures/TestApp/tia636479782jpeg h4. Steps to Reproduce: 1. Create a Classic project. 2. Paste this code in app.js file. 3. Paste a photo to the resources folder named test.jpg. 4. Run this code with the testing environment. h3.Test Code: {code:title=app.js} var win = Titanium.UI.createWindow({ backgroundColor : ""#000"", }); var photo = Ti.UI.createButton({ title : 'Save Photo', height : Ti.UI.SIZE, width : Ti.UI.SIZE, top : 20, color : ""#fff"" }); win.add(photo); // Listen for click events. photo.addEventListener('click', function() { file = Ti.Filesystem.getFile(Titanium.Filesystem.resourcesDirectory, ""test.jpg""); alert(file.nativePath); Ti.Media.saveToPhotoGallery(file.read(), { success : function() { alert('success'); }, error : function() { alert('error'); } }); }); win.open(); {code} ",3 +"TIMOB-17418","07/29/2014 21:56:30","iOS: Textfield borders - Some border types not displayed","This is a *regression* against Titanium SDK 3.2.3.GA h5. Description: There are no borders displayed when specifying ""Bezel"" or ""Line"" borders h5. Steps to reproduce: 1) Import and build Kitchensink 3.3.0 with 3.3.0 SDK 2) Install on iOS 6, 7, or 8 device 3) Navigate to KS> Controls> Text Field> Border Style 4) Examine the various border styles h5. Result: ""Bezel"" and ""Line"" border style examples have no visible border h5. Expected Result: All examples (except the ""no border"" style) have visible borders",3 +"TIMOB-17419","07/29/2014 22:56:37","iOS8: Biometric enhancements to SDK allowing accessing / managing Keychain","Biometric enhancements to SDK allowing accessing / managing Keychain",8 +"TIMOB-17842","07/30/2014 02:40:13","iOS: tabsTintColor is not being honored","h5. Problem Description tabsTintColor is not being honored h5. Test Code {code} var tabGroup = Ti.UI.createTabGroup( { activeTabIconTint:'#FFFFFF', tabsTintColor:'#6c8d90', tabsBackgroundColor: '#000000', //tabsBackgroundImage:'/images/tabBar@2x.png', //translucent: true, }); var tabMatches = Ti.UI.createTab({ icon: '/images/tabBuddies@2x.png', activeIcon: '/images/tabBuddies@2x.png', title: 'BUDDIES', activeIconIsMask:false, iconIsmask:false, window: matchesWin }); matchesWin.containingTab = tabMatches; {code} h5. Test Result tabsTintColor is not being honored, it is always set to #929292",5 +"TIMOB-18132","07/31/2014 12:43:02","Android: App Crashes with CalledFromWrongThreadException opening DatePicker after typing in a tf","h4. Problem Description App crashes with CalledFromWrongThreadException when switching from textedit to datepicker h4. Steps to reproduce 1. Create a new mobile project classic titanium 2. Add this code to app.js: {code:javascript} var win = Ti.UI.createWindow({title:'test',layout:'vertical'}); win.open(); var label = Ti.UI.createTextField({value:'Hello world',top:50,bottom:50,height:Ti.UI.SIZE,width:Ti.UI.FILL}); win.add(label); var picker = Ti.UI.createPicker({value : new Date(),type: Ti.UI.PICKER_TYPE_DATE}); var pickDateButton = Ti.UI.createButton({title:'pick a date'}); win.add(pickDateButton); pickDateButton.addEventListener('click',function(){ picker.showDatePickerDialog({ value:new Date(), callback:function(e){ Ti.API.info('picked date: '+JSON.stringify(e)); } }); }); {code} 3. Run the app in a Samsung S3 device (Please: make sure to use the S3 device, it's not easily reproducible in other devices). 4. Click in the Textfield 5. Start type something 6. Click on the button to open the date picker . 7. The app should crash. h4. Extra info I included the adb log of the errror {color:red} /dalvikvm(27883): threadid=10: thread exiting with uncaught exception (group=0x4174ee48) E/AndroidRuntime(27883): FATAL EXCEPTION: KrollRuntimeThread E/AndroidRuntime(27883): Process: com.debugging.test, PID: 27883 E/AndroidRuntime(27883): android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views. E/AndroidRuntime(27883): at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:6347) E/AndroidRuntime(27883): at android.view.ViewRootImpl.requestLayout(ViewRootImpl.java:871) E/AndroidRuntime(27883): at android.view.View.requestLayout(View.java:16472) E/AndroidRuntime(27883): at android.view.View.requestLayout(View.java:16472) E/AndroidRuntime(27883): at android.view.View.requestLayout(View.java:16472) E/AndroidRuntime(27883): at android.view.View.requestLayout(View.java:16472) E/AndroidRuntime(27883): at android.view.View.requestLayout(View.java:16472) E/AndroidRuntime(27883): at android.view.View.requestLayout(View.java:16472) E/AndroidRuntime(27883): at android.view.View.requestLayout(View.java:16472) E/AndroidRuntime(27883): at android.view.View.requestLayout(View.java:16472) E/AndroidRuntime(27883): at android.widget.ScrollView.requestLayout(ScrollView.java:1481) E/AndroidRuntime(27883): at android.view.View.requestLayout(View.java:16472) E/AndroidRuntime(27883): at android.view.View.requestLayout(View.java:16472) E/AndroidRuntime(27883): at android.view.View.requestLayout(View.java:16472) E/AndroidRuntime(27883): at android.view.View.requestLayout(View.java:16472) E/AndroidRuntime(27883): at android.view.View.requestLayout(View.java:16472) E/AndroidRuntime(27883): at android.view.View.requestLayout(View.java:16472) E/AndroidRuntime(27883): at android.widget.TextView.checkForResize(TextView.java:6760) E/AndroidRuntime(27883): at android.widget.TextView.updateAfterEdit(TextView.java:7681) E/AndroidRuntime(27883): at android.widget.Editor.finishBatchEdit(Editor.java:1322) E/AndroidRuntime(27883): at android.widget.Editor.endBatchEdit(Editor.java:1305) E/AndroidRuntime(27883): at android.widget.TextView.endBatchEdit(TextView.java:6065) E/AndroidRuntime(27883): at com.android.internal.widget.EditableInputConnection.endBatchEdit(EditableInputConnection.java:77) E/AndroidRuntime(27883): at android.view.inputmethod.BaseInputConnection.finishComposingText(BaseInputConnection.java:288) E/AndroidRuntime(27883): at android.view.inputmethod.InputMethodManager.checkFocusNoStartInput(InputMethodManager.java:1358) E/AndroidRuntime(27883): at android.view.inputmethod.InputMethodManager.onWindowFocus(InputMethodManager.java:1402) E/AndroidRuntime(27883): at android.view.ViewRootImpl$ViewRootHandler.handleMessage(ViewRootImpl.java:3198) E/AndroidRuntime(27883): at android.os.Handler.dispatchMessage(Handler.java:102) E/AndroidRuntime(27883): at android.os.Looper.loop(Looper.java:136) E/AndroidRuntime(27883): at org.appcelerator.kroll.KrollRuntime$KrollRuntimeThread.run(KrollRuntime.java:112) W/ActivityManager( 886): Force finishing activity com.debugging.test/org.appcelerator.titanium.TiActivity V/ActivityManager( 886): Moving to PAUSING: ActivityRecord{422ff478 u0 com.debugging.test/org.appcelerator.titanium.TiActivity t1034 f} {color}",8 +"TIMOB-17502","07/31/2014 19:57:59","iOS: URLSession Module returns blob instead of file location - causing low memory crash","h4. Problem Description downloadcompleted returns e.data as a blob in physical memory!! If the file size is large, for example, over 1GB, it could cause low memory crash. Plus, using file.write(e.data) in this case takes too much time to run in the background. iOS only allows 30 seconds. Chances are the app will be either crashed or suspended before the file is saved. I suggest: upon downloadcompleted move the file to a temp directory and return the path instead of a blob. h4. TESTING ENVIRONMENT CLI version 3.3.0, Titanium SDK version 3.3.0.GA iOS7 h4. CODE SAMPLE h3. app.js {code} // Require in the urlSession module var urlSession = require(""com.appcelerator.urlSession""); var session; // App UI var win = Ti.UI.createWindow({backgroundColor:""white""}); var progress = Ti.UI.createProgressBar({ width: 200, height: 50, min: 0, max: 1, value: 0, style: Ti.UI.iPhone.ProgressBarStyle.PLAIN, top: 10, message: 'Downloading image URL', font: { fontSize: 12, fontWeight: 'bold'}, color: '#888' }); win.add(progress); var imageView = Ti.UI.createImageView({ top:150, height:300, width:200 }); win.add(imageView); var button = Ti.UI.createButton({ title:'Download Image (url)', height:40, width:200, top:70 }); button.addEventListener('click', function() { // Create a session configuration // The string parameter is an arbitrary string used to identify the session in events var sessionConfig = urlSession.createURLSessionBackgroundConfiguration(""com.appcelerator.test""); // Create a session session = urlSession.createURLSession(sessionConfig); // Create a background download task to get the asset with the URL urlSession.backgroundDownloadTaskWithURL(session,""https://raw.github.com/appcelerator-developer-relations/KitchenSink/master/Resources/images/dog@2x~iphone.jpg""); progress.show(); }); win.add(button); win.open(); // Monitor this event to receive updates on the progress of the download Ti.App.iOS.addEventListener(""downloadprogress"", function(e) { // Update the progress indicator progress.value = (e.totalBytesWritten/e.totalBytesExpectedToWrite); }); // Monitor this event to know when the download completes Ti.App.iOS.addEventListener(""downloadcompleted"", function(e) { Ti.API.info(""download completed "" + JSON.stringify(e)); // Update the image imageView.image = e.data; // Invalidate the session and cancel current session tasks urlSession.invalidateAndCancel(session); // Notify the user the download is complete if the application is in the background Ti.App.iOS.scheduleLocalNotification({ alertBody:""Download complete!"", date:new Date().getTime() }); progress.hide(); }); // Monitor this event to know when all session tasks have completed Ti.App.iOS.addEventListener('sessioncompleted', function(e) { Ti.API.info(""sessioncompleted "" + JSON.stringify(e)); if (e.success) { alert(""Downloads completed successfully.""); } }); {code} h4. STEP TO REPRODUCE - Create a new Project - Double-click the Project's ""tiapp.xml"" file to open it in the Overview tab. - In the Modules section, click the Add button (green plus sign) to open the Mobile Modules dialog. - Locate and select ""com.appcelerator.urlSession"". This module is part of the Titanium SDK since Release 3.2.0 - Click OK. - Copy the code segment above to the project ""app.js"" file - Run the Project h4. OBSERVED RESULT If the URL is changed to download a large file, progress bar would not response and the app will crash after some time. ",8 +"TIMOB-17556","08/01/2014 13:58:17","iOS8: widgets extension","Be able to use Titanium to write a widget, or at least bundle a widget extension for the notification screen and interact with it. Also, some use case examples in your docs would help immensely for it.",13 +"TIMOB-17446","08/01/2014 22:34:01","Build scripts should accept flags indicating the path to the platform and i18n folders to use for a build","Our initial solution to ALOY-858 (use Alloy themes override the contents of a project's platform and i18n directories) has proven unworkable and pointed out the need to handle this at the platform level. Our attempted solution was to make a backup copy of those folders in the build directory, merge themed versions of the i18n/platform folders to the original locations, proceed with the build, then restore the originals when done. This has created problems with inconsistent states, original files being lost, etc. The better solution for Alloy would be to merge the originals and theme copies to a folder within build, then direct the platform to build using those versions. For that, we need new flags to the build scripts. As you implement this, please consider how we might also theme the tiapp.xml, as this has also been requested. Again, that should be handled at the platform level not by Alloy making temp copies of files. ",13 +"TIMOB-17447","08/02/2014 01:09:55","Android: TIME Picker is too small when useSpinner is set to true","h4. Problem Description When you use a Date Picker with TYPE_TIME set, it will look really small. Even if you set the font size. h4. Steps to reproduce 1. Create a new mobile project (Classic Titanium) 2. Paste the testcase into app.js: {code} Ti.UI.backgroundColor = 'white'; var win = Ti.UI.createWindow({ exitOnClose: true, layout: 'vertical' }); var picker = Ti.UI.createPicker({ type:Ti.UI.PICKER_TYPE_TIME, minDate:new Date(2009,0,1), maxDate:new Date(2014,11,31), value:new Date(2014,3,12), font: { fontWeight: 'bold', fontSize:32, }, top:50, width: Ti.UI.FILL, useSpinner: true, }); win.add(picker); win.open(); {code}",5 +"TIMOB-17448","08/02/2014 03:59:03","iOS: error when commonjs module exports certain types","h2. problem If a commonjs module assigns anything other than the following types to {{module.exports}}, the app crashes with no output to the console: * Function * Object * String For example, returning any of the following in {{module.exports}} will crash the app: * Number * Boolean * null * undefined * NaN This issue does not seem to appear on Android. h2. test case Creating the following simple app will crash the simulator when it is run. h3. foo.js {code:javascript} module.exports = 123; // the following cases will also crash // module.exports = true; // module.exports = undefined; // module.exports = null; {code} h3. app.js {code:javascript} require('foo'); {code} ",5 +"TIMOB-17629","08/04/2014 15:46:30","Debugger does not stop at the correct breakpoint/position","When I debug my application, I need to place the breakpoint exactly one line below the one I want to debug at. This is very frustrating and makes debugging really unpleasant. The only exception is file app.js for which breakpoints seems to be handled corectly. The following code illustrates the problem: {code:title=app.js|borderStyle=solid} if (Ti.version < 1.8) { alert('Sorry - this application template requires Titanium Mobile SDK 1.8 or later'); } var myVar = 5; var yourVar = 6; var thirdVar = myVar + yourVar; var my = require(""MyDir/MyThing"").MyThing(); my.invoke(); {code} Putting a break point behaves correctly for above file (app.js). {code:title=MyThing.js|borderStyle=solid} exports.MyThing = function() { var Me = this; var first = 35; var second = false; function myFunc() { var a = 5 + 3; return a + 2 + 3; } this.invoke = function() { var b = 7; return myFunc(); }; return this; }; {code} However for the second file, if I need to stop at line 9 I will need to place the breakpoint at line 10. More over, if I need to stop at line 10 I need to put the breakpoint at line 11 which really does not make sence. Attached is a sample project.",3 +"TIMOB-17456","08/05/2014 01:22:48","Android: ListView crashes when searchableText is not specified","Steps to reproduce: {code} var window = Ti.UI.createWindow({background: ""white""}); var data = [ { properties: { title: 'Row 1', searchableText: ""row 1""} }, { properties: { title: 'Row 2' } }, { properties: { title: 'Row 3', searchableText: ""row 3""} } ]; var section = Ti.UI.createListSection({items: data, headerTitle: ""Section 1""}); var searchView = Ti.UI.Android.createSearchView(); var listView = Ti.UI.createListView({searchView: searchView, sections: [section]}); window.add(listView); window.open(); {code} 1. Run code, type something in the search view, app crashes. ",3 +"TIMOB-17747","08/05/2014 19:32:19","Android: Native module onStart() lifecycle method never called for Alloy project","h4. Problem Description I have created a native module that has some code in an {{onStart()}} method - when importing this module in my alloy controller using {{require()}}, the {{onStart()}} method is called when the root activity is started when using Titanium SDK 3.2.3.GA, but when using 3.3.0, it is never called. I have properly declared the module in my {{tiapp.xml}} and my {{onStart()}} method is pretty simple: {noformat} @Override public void onStart(Activity activity) { // This method is called when the module is loaded and the root context is started Log.d(TAG, ""[MODULE LIFECYCLE EVENT] start""); super.onStart(activity); } {noformat} In 3.2.3.GA I see the debug message in the {{logcat}} output - but using 3.3.0.GA I never see it (however I do see the {{onPause}} and {{onStop}} lifecycle methods are properly called. My native module depends on some initialization code in {{onStart}} that cannot be moved to {{onAppCreate}}, so it's currently failing as {{onStart}} is never called (nor is {{onPause}} which is a bit suspect). Also, for a non-Alloy app, this does not happen -- all of the lifecycle methods, including {{onStart}} are called as expected. h4. Steps to reproduce. 1. Download the module from this [link|https://github.com/jamesfalkner/liferay-android-beacons/blob/master/dist/com.liferay.beacons-android-0.1.zip] 2. Create a titanium classic project 3. Paste this code: {code} var win = Ti.UI.createWindow({ backgroundColor:'white' }); var label = Ti.UI.createLabel(); win.add(label); win.open(); if (Ti.Platform.name == ""android"") { var mod = require('com.liferay.beacons'); label.text = ""module is => "" + mod + ""and checkAvailability says: "" + mod.checkAvailability(); } else { label.text = ""liferay.beacons not supported on "" + Ti.Platform.name; } {code} h4. Steps to reproduce the issue with alloy (which is easier to reproduce) 1. Create a new alloy project 2. Paste this to index.js: {code} var mod = require('com.liferay.beacons'); $.label.text= ""module is => "" + mod + ""and checkAvailability says: "" + mod.checkAvailability(); function doClick(e) { alert($.label.text); } $.index.open(); {code} 3. Run it in a device. ",8 +"TIMOB-17457","08/06/2014 00:55:37","Android: JS Global Object - JS global object is undefined after calling Ti.App.addEventListener","*Details:* JS global object is undefined after calling Ti.App.addEventListener. *Note:* 1. This does *not* occur on iOS 2. This is not a regression with 3.2.3.GA *Steps to reproduce:* 1. Create a classic Titanium app 2. Download and unzip Archive.zip 3. Copy all contents in the Archive folder and paste them in the Resources directory from step 1 4. Next, install app to an Android device 5. After app is installed, press ""Start Automation"" button *Actual:* After test is complete, ""Cannot read property"" runtime error appears (see runtime_error.png attachment). The bug is in testExecutor.js on line 34. *Expected:* App should run without throwing a runtime error.",3 +"TIMOB-17476","08/08/2014 22:39:52","Android-L: KS->ActionBar crashes ","Build KS with android-L. Go to Controls->Action Bar. App crashes with log {code} E/art ( 7568): JNI ERROR (app bug): attempt to pass an instance of java.util.HashMap as argument 1 to org.appcelerator.titanium.proxy.MenuItemProxy org.appcelerator.titanium.proxy.MenuProxy.add(org.appcelerator.kroll.KrollDict) F/art ( 7568): art/runtime/check_jni.cc:65] JNI DETECTED ERROR IN APPLICATION: bad arguments passed to org.appcelerator.titanium.proxy.MenuItemProxy org.appcelerator.titanium.proxy.MenuProxy.add(org.appcelerator.kroll.KrollDict) (see above for details) F/art ( 7568): art/runtime/check_jni.cc:65] from java.lang.Object org.appcelerator.kroll.runtime.v8.V8Function.nativeInvoke(long, long, java.lang.Object[]) F/art ( 7568): art/runtime/check_jni.cc:65] ""KrollRuntimeThread"" prio=5 tid=11 Runnable F/art ( 7568): art/runtime/check_jni.cc:65] | group=""main"" sCount=0 dsCount=0 obj=0x790350a0 self=0xb8dc95d0 F/art ( 7568): art/runtime/check_jni.cc:65] | sysTid=7603 nice=0 cgrp=default sched=0/0 handle=0xb8dbaf50 F/art ( 7568): art/runtime/check_jni.cc:65] | state=R schedstat=( 0 0 0 ) utm=1171 stm=42 core=0 HZ=100 F/art ( 7568): art/runtime/check_jni.cc:65] | stack=0xa6c79000-0xa6c7f000 stackSize=1064KB F/art ( 7568): art/runtime/check_jni.cc:65] native: #00 pc 00005baf /system/lib/libbacktrace_libc++.so (UnwindCurrent::Unwind(unsigned int, ucontext*)+95) F/art ( 7568): art/runtime/check_jni.cc:65] native: #01 pc 00002751 /system/lib/libbacktrace_libc++.so (Backtrace::Unwind(unsigned int, ucontext*)+33) F/art ( 7568): art/runtime/check_jni.cc:65] native: #02 pc 003ba727 /system/lib/libart.so (art::DumpNativeStack(std::__1::basic_ostream >&, int, char const*, art::mirror::ArtMethod*)+135) F/art ( 7568): art/runtime/check_jni.cc:65] native: #03 pc 0038bc10 /system/lib/libart.so (art::Thread::Dump(std::__1::basic_ostream >&) const+272) F/art ( 7568): art/runtime/check_jni.cc:65] native: #04 pc 00129a18 /system/lib/libart.so (art::JniAbort(char const*, char const)+952) F/art ( 7568): art/runtime/check_jni.cc:65] native: #05 pc 0012aa1c /system/lib/libart.so (art::JniAbortF(char const*, char const, ellipsis)+108) F/art ( 7568): art/runtime/check_jni.cc:65] native: #06 pc 0008412b /system/lib/libart.so (art::CheckMethodArguments(art::mirror::ArtMethod*, unsigned int*)+844) F/art ( 7568): art/runtime/check_jni.cc:65] native: #07 pc 0036c1fb /system/lib/libart.so (art::InvokeVirtualOrInterfaceWithJValues(art::ScopedObjectAccessAlreadyRunnable const&, art::mirror::Object*, _jmethodID*, jvalue*)+1147) F/art ( 7568): art/runtime/check_jni.cc:65] native: #08 pc 002d4570 /system/lib/libart.so (art::JNI::CallObjectMethodA(_JNIEnv*, _jobject*, _jmethodID*, jvalue*)+336) F/art ( 7568): art/runtime/check_jni.cc:65] native: #09 pc 0013c8af /system/lib/libart.so (art::CheckJNI::CallObjectMethodA(_JNIEnv*, _jobject*, _jmethodID*, jvalue*)+175) F/art ( 7568): art/runtime/check_jni.cc:65] native: #10 pc 000c00e4 /data/app-lib/com.appcelerator.kitchensink-1/libkroll-v8.so (titanium::MenuProxy::add(v8::Arguments const&)+244) F/art ( 7568): art/runtime/check_jni.cc:65] native: #11 pc 00267dd6 /data/app-lib/com.appcelerator.kitchensink-1/libkroll-v8.so (???) F/art ( 7568): art/runtime/check_jni.cc:65] at org.appcelerator.kroll.runtime.v8.V8Function.nativeInvoke(Native method) F/art ( 7568): art/runtime/check_jni.cc:65] at org.appcelerator.kroll.runtime.v8.V8Function.callSync(V8Function.java:57) F/art ( 7568): art/runtime/check_jni.cc:65] at org.appcelerator.kroll.runtime.v8.V8Function.handleMessage(V8Function.java:82) F/art ( 7568): art/runtime/check_jni.cc:65] at android.os.Handler.dispatchMessage(Handler.java:98) F/art ( 7568): art/runtime/check_jni.cc:65] at android.os.Looper.loop(Looper.java:135) F/art ( 7568): art/runtime/check_jni.cc:65] at org.appcelerator.kroll.KrollRuntime$KrollRuntimeThread.run(KrollRuntime.java:112) F/art ( 7568): art/runtime/check_jni.cc:65] F/art ( 7568): art/runtime/runtime.cc:272] Runtime aborting... F/art ( 7568): art/runtime/runtime.cc:272] Aborting thread: F/art ( 7568): art/runtime/runtime.cc:272] ""KrollRuntimeThread"" prio=5 tid=11 Native F/art ( 7568): art/runtime/runtime.cc:272] | group="""" sCount=0 dsCount=0 obj=0x790350a0 self=0xb8dc95d0 F/art ( 7568): art/runtime/runtime.cc:272] | sysTid=7603 nice=0 cgrp=default sched=0/0 handle=0xb8dbaf50 F/art ( 7568): art/runtime/runtime.cc:272] | state=R schedstat=( 0 0 0 ) utm=1181 stm=53 core=0 HZ=100 F/art ( 7568): art/runtime/runtime.cc:272] | stack=0xa6c79000-0xa6c7f000 stackSize=1064KB F/art ( 7568): art/runtime/runtime.cc:272] native: #00 pc 00005baf /system/lib/libbacktrace_libc++.so (UnwindCurrent::Unwind(unsigned int, ucontext*)+95) F/art ( 7568): art/runtime/runtime.cc:272] native: #01 pc 00002751 /system/lib/libbacktrace_libc++.so (Backtrace::Unwind(unsigned int, ucontext*)+33) F/art ( 7568): art/runtime/runtime.cc:272] native: #02 pc 003ba727 /system/lib/libart.so (art::DumpNativeStack(std::__1::basic_ostream >&, int, char const*, art::mirror::ArtMethod*)+135) F/art ( 7568): art/runtime/runtime.cc:272] native: #03 pc 0038bc10 /system/lib/libart.so (art::Thread::Dump(std::__1::basic_ostream >&) const+272) F/art ( 7568): art/runtime/runtime.cc:272] native: #04 pc 00372469 /system/lib/libart.so (_ZN3art10AbortState10DumpThreadERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEEPNS_6ThreadE.isra.123+57) F/art ( 7568): art/runtime/runtime.cc:272] native: #05 pc 003727fc /system/lib/libart.so (_ZN3art10AbortState4DumpERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEE.isra.124+620) F/art ( 7568): art/runtime/runtime.cc:272] native: #06 pc 003729d1 /system/lib/libart.so (art::Runtime::Abort(void)+129) F/art ( 7568): art/runtime/runtime.cc:272] native: #07 pc 00116bbc /system/lib/libart.so (art::LogMessage::~LogMessage(void)+1644) F/art ( 7568): art/runtime/runtime.cc:272] native: #08 pc 00129f1d /system/lib/libart.so (art::JniAbort(char const*, char const)+2237) F/art ( 7568): art/runtime/runtime.cc:272] native: #09 pc 0012aa1c /system/lib/libart.so (art::JniAbortF(char const*, char const, ellipsis)+108) F/art ( 7568): art/runtime/runtime.cc:272] native: #10 pc 0008412b /system/lib/libart.so (art::CheckMethodArguments(art::mirror::ArtMethod*, unsigned int*)+844) F/art ( 7568): art/runtime/runtime.cc:272] native: #11 pc 0036c1fb /system/lib/libart.so (art::InvokeVirtualOrInterfaceWithJValues(art::ScopedObjectAccessAlreadyRunnable const&, art::mirror::Object*, _jmethodID*, jvalue*)+1147) F/art ( 7568): art/runtime/runtime.cc:272] native: #12 pc 002d4570 /system/lib/libart.so (art::JNI::CallObjectMethodA(_JNIEnv*, _jobject*, _jmethodID*, jvalue*)+336) F/art ( 7568): art/runtime/runtime.cc:272] native: #13 pc 0013c8af /system/lib/libart.so (art::CheckJNI::CallObjectMethodA(_JNIEnv*, _jobject*, _jmethodID*, jvalue*)+175) F/art ( 7568): art/runtime/runtime.cc:272] native: #14 pc 000c00e4 /data/app-lib/com.appcelerator.kitchensink-1/libkroll-v8.so (titanium::MenuProxy::add(v8::Arguments const&)+244) F/art ( 7568): art/runtime/runtime.cc:272] native: #15 pc 00267dd6 /data/app-lib/com.appcelerator.kitchensink-1/libkroll-v8.so (???) F/art ( 7568): art/runtime/runtime.cc:272] at org.appcelerator.kroll.runtime.v8.V8Function.nativeInvoke(Native method) F/art ( 7568): art/runtime/runtime.cc:272] at org.appcelerator.kroll.runtime.v8.V8Function.callSync(V8Function.java:57) F/art ( 7568): art/runtime/runtime.cc:272] at org.appcelerator.kroll.runtime.v8.V8Function.handleMessage(V8Function.java:82) F/art ( 7568): art/runtime/runtime.cc:272] at android.os.Handler.dispatchMessage(Handler.java:98) F/art ( 7568): art/runtime/runtime.cc:272] at android.os.Looper.loop(Looper.java:135) F/art ( 7568): art/runtime/runtime.cc:272] at org.appcelerator.kroll.KrollRuntime$KrollRuntimeThread.run(KrollRuntime.java:112) F/art ( 7568): art/runtime/runtime.cc:272] Dumping all threads without appropriate locks held: thread list lock mutator lock F/art ( 7568): art/runtime/runtime.cc:272] All threads: F/art ( 7568): art/runtime/runtime.cc:272] DALVIK THREADS (19): F/art ( 7568): art/runtime/runtime.cc:272] ""main"" prio=5 tid=1 TimedWaiting F/art ( 7568): art/runtime/runtime.cc:272] | group="""" sCount=0 dsCount=0 obj=0x74dae350 self=0xb8c79e90 F/art ( 7568): art/runtime/runtime.cc:272] | sysTid=7568 nice=0 cgrp=default sched=0/0 handle=0xb77a72e0 F/art ( 7568): art/runtime/runtime.cc:272] | state=S schedstat=( 0 0 0 ) utm=3129 stm=455 core=0 HZ=100 F/art ( 7568): art/runtime/runtime.cc:272] | stack=0xbf737000-0xbf73d000 stackSize=8MB F/art ( 7568): art/runtime/runtime.cc:272] kernel: futex_wait_queue_me+0xbd/0xd0 F/art ( 7568): art/runtime/runtime.cc:272] kernel: futex_wait+0xba/0x1bc F/art ( 7568): art/runtime/runtime.cc:272] kernel: do_futex+0x90/0x7d8 F/art ( 7568): art/runtime/runtime.cc:272] kernel: sys_futex+0xc0/0xdb F/art ( 7568): art/runtime/runtime.cc:272] kernel: syscall_call+0x7/0xb F/art ( 7568): art/runtime/runtime.cc:272] native: #00 pc 000168d2 /system/lib/libc.so (short+34) F/art ( 7568): art/runtime/runtime.cc:272] native: #01 pc 0001bb87 [stack] (???) F/art ( 7568): art/runtime/runtime.cc:272] at java.lang.Object.wait!(Native method) F/art ( 7568): art/runtime/runtime.cc:272] - waiting on <0x069c270c> (a java.lang.Object) F/art ( 7568): art/runtime/runtime.cc:272] at java.lang.Thread.parkFor(Thread.java:1220) F/art ( 7568): art/runtime/runtime.cc:272] - locked <0x069c270c> (a java.lang.Object) F/art ( 7568): art/runtime/runtime.cc:272] at sun.misc.Unsafe.park(Unsafe.java:299) F/art ( 7568): art/runtime/runtime.cc:272] at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:197) F/art ( 7568): art/runtime/runtime.cc:272] at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedNanos(AbstractQueuedSynchronizer.java:1014) F/art ( 7568): art/runtime/runtime.cc:272] at java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireSharedNanos(AbstractQueuedSynchronizer.java:1304) F/art ( 7568): art/runtime/runtime.cc:272] at java.util.concurrent.Semaphore.tryAcquire(Semaphore.java:380) F/art ( 7568): art/runtime/runtime.cc:272] at org.appcelerator.kroll.common.TiMessenger$2.getResult(TiMessenger.java:248) F/art ( 7568): art/runtime/runtime.cc:272] at org.appcelerator.kroll.common.TiMessenger.sendBlockingMessage(TiMessenger.java:286) F/art ( 7568): art/runtime/runtime.cc:272] at org.appcelerator.kroll.common.TiMessenger.sendBlockingRuntimeMessage(TiMessenger.java:186) F/art ( 7568): art/runtime/runtime.cc:272] at org.appcelerator.kroll.runtime.v8.V8Function.call(V8Function.java:46) F/art ( 7568): art/runtime/runtime.cc:272] at org.appcelerator.titanium.util.TiMenuSupport.onCreateOptionsMenu(TiMenuSupport.java:43) F/art ( 7568): art/runtime/runtime.cc:272] at org.appcelerator.titanium.TiBaseActivity.onCreateOptionsMenu(TiBaseActivity.java:812) F/art ( 7568): art/runtime/runtime.cc:272] at android.app.Activity.onCreatePanelMenu(Activity.java:2798) F/art ( 7568): art/runtime/runtime.cc:272] at android.support.v4.app.FragmentActivity.onCreatePanelMenu(FragmentActivity.java:224) F/art ( 7568): art/runtime/runtime.cc:272] at android.support.v7.app.ActionBarActivity.superOnCreatePanelMenu(ActionBarActivity.java:232) F/art ( 7568): art/runtime/runtime.cc:272] at android.support.v7.app.ActionBarActivityDelegateICS.onCreatePanelMenu(ActionBarActivityDelegateICS.java:146) F/art ( 7568): art/runtime/runtime.cc:272] at android.support.v7.app.ActionBarActivity.onCreatePanelMenu(ActionBarActivity.java:199) F/art ( 7568): art/runtime/runtime.cc:272] at android.support.v7.app.ActionBarActivityDelegateICS$WindowCallbackWrapper.onCreatePanelMenu(ActionBarActivityDelegateICS.java:293) F/art ( 7568): art/runtime/runtime.cc:272] at com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:522) F/art ( 7568): art/runtime/runtime.cc:272] at com.android.internal.policy.impl.PhoneWindow.doInvalidatePanelMenu(PhoneWindow.java:884) F/art ( 7568): art/runtime/runtime.cc:272] at com.android.internal.policy.impl.PhoneWindow$1.run(PhoneWindow.java:236) F/art ( 7568): art/runtime/runtime.cc:272] at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767) F/art ( 7568): art/runtime/runtime.cc:272] at android.view.Choreographer.doCallbacks(Choreographer.java:580) F/art ( 7568): art/runtime/runtime.cc:272] at android.view.Choreographer.doFrame(Choreographer.java:549) F/art ( 7568): art/runtime/runtime.cc:272] at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753) F/art ( 7568): art/runtime/runtime.cc:272] at android.os.Handler.handleCallback(Handler.java:738) F/art ( 7568): art/runtime/runtime.cc:272] at android.os.Handler.dispatchMessage(Handler.java:95) F/art ( 7568): art/runtime/runtime.cc:272] at android.os.Looper.loop(Looper.java:135) F/art ( 7568): art/runtime/runtime.cc:272] at android.app.ActivityThread.main(ActivityThread.java:5070) F/art ( 7568): art/runtime/runtime.cc:272] at java.lang.reflect.Method.invoke!(Native method) F/art ( 7568): art/runtime/runtime.cc:272] at java.lang.reflect.Method.invoke(Method.java:372) F/art ( 7568): art/runtime/runtime.cc:272] at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:836) F/art ( 7568): art/runtime/runtime.cc:272] at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:631) F/art ( 7568): art/runtime/runtime.cc:272] F/art ( 7568): art/runtime/runtime.cc:272] ""Signal Catcher"" prio=5 tid=2 WaitingInMainSignalCatcherLoop F/art ( 7568): art/runtime/runtime.cc:272] | group="""" sCount=0 dsCount=0 obj=0x78d3f080 self=0xb8c7ed20 F/art ( 7568): art/runtime/runtime.cc:272] | sysTid=7571 nice=0 cgrp=default sched=0/0 handle=0xb8c76580 F/art ( 7568): art/runtime/runtime.cc:272] | state=S schedstat=( 0 0 0 ) utm=0 stm=0 core=0 HZ=100 F/art ( 7568): art/runtime/runtime.cc:272] | stack=0xafb46000-0xafb4c000 stackSize=1016KB F/art ( 7568): art/runtime/runtime.cc:272] kernel: do_sigtimedwait+0xe3/0x15e F/art ( 7568): art/runtime/runtime.cc:272] kernel: sys_rt_sigtimedwait+0x6a/0x9e F/art ( 7568): art/runtime/runtime.cc:272] kernel: syscall_call+0x7/0xb F/art ( 7568): art/runtime/runtime.cc:272] native: #00 pc 0007c8bb /system/lib/libc.so (__rt_sigtimedwait+27) F/art ( 7568): art/runtime/runtime.cc:272] native: #01 pc 00027397 /system/lib/libc.so (short+71) F/art ( 7568): art/runtime/runtime.cc:272] native: #02 pc 00378189 /system/lib/libart.so (art::SignalCatcher::WaitForSignal(art::Thread*, art::SignalSet&)+137) F/art ( 7568): art/runtime/runtime.cc:272] native: #03 pc 00379f02 /system/lib/libart.so (art::SignalCatcher::Run(void*)+306) F/art ( 7568): art/runtime/runtime.cc:272] native: #04 pc 00024578 /system/lib/libc.so (__pthread_start(void*)+56) F/art ( 7568): art/runtime/runtime.cc:272] native: #05 pc 0001ffd9 /system/lib/libc.so (__bionic_clone_entry+25) F/art ( 7568): art/runtime/runtime.cc:272] native: #06 pc 00016749 /system/lib/libc.so (__bionic_clone+73) F/art ( 7568): art/runtime/runtime.cc:272] (no managed stack frames) F/art ( 7568): art/runtime/runtime.cc:272] F/art ( 7568): art/runtime/runtime.cc:272] ""JDWP"" prio=5 tid=3 WaitingInMainDebuggerLoop F/art ( 7568): art/runtime/runtime.cc:272] | group="""" sCount=0 dsCount=0 obj=0x78d4c080 self=0xb8c7df50 F/art ( 7568): art/runtime/runtime.cc:272] | sysTid=7572 nice=0 cgrp=default sched=0/0 handle=0xb8c7f060 F/art ( 7568): art/runtime/runtime.cc:272] | state=S schedstat=( 0 0 0 ) utm=0 stm=0 core=0 HZ=100 F/art ( 7568): art/runtime/runtime.cc:272] | stack=0xafa43000-0xafa49000 stackSize=1016KB F/art ( 7568): art/runtime/runtime.cc:272] kernel: poll_schedule_timeout+0x20/0x3d F/art ( 7568): art/runtime/runtime.cc:272] kernel: do_select+0x4d9/0x505 F/art ( 7568): art/runtime/runtime.cc:272] kernel: core_sys_select+0x27b/0x298 F/art ( 7568): art/runtime/runtime.cc:272] kernel: sys_pselect6+0xd0/0x13b F/art ( 7568): art/runtime/runtime.cc:272] kernel: syscall_call+0x7/0xb F/art ( 7568): art/runtime/runtime.cc:272] native: #00 pc 0007d735 /system/lib/libc.so (__pselect6+37) F/art ( 7568): art/runtime/runtime.cc:272] native: #01 pc 000233e3 /system/lib/libc.so (short+179) F/art ( 7568): art/runtime/runtime.cc:272] native: #02 pc 00428187 /system/lib/libart.so (art::JDWP::JdwpAdbState::ProcessIncoming(void)+551) F/art ( 7568): art/runtime/runtime.cc:272] native: #03 pc 002a196f /system/lib/libart.so (art::JDWP::JdwpState::Run(void)+415) F/art ( 7568): art/runtime/runtime.cc:272] native: #04 pc 002a38c0 /system/lib/libart.so (art::JDWP::StartJdwpThread(void*)+32) F/art ( 7568): art/runtime/runtime.cc:272] native: #05 pc 00024578 /system/lib/libc.so (__pthread_start(void*)+56) F/art ( 7568): art/runtime/runtime.cc:272] native: #06 pc 0001ffd9 /system/lib/libc.so (__bionic_clone_entry+25) F/art ( 7568): art/runtime/runtime.cc:272] native: #07 pc 00016749 /system/lib/libc.so (__bionic_clone+73) F/art ( 7568): art/runtime/runtime.cc:272] (no managed stack frames) F/art ( 7568): art/runtime/runtime.cc:272] F/art ( 7568): art/runtime/runtime.cc:272] ""ReferenceQueueDaemon"" prio=5 tid=4 Waiting F/art ( 7568): art/runtime/runtime.cc:272] | group="""" sCount=0 dsCount=0 obj=0x78d65080 self=0xb8db11d0 F/art ( 7568): art/runtime/runtime.cc:272] | sysTid=7574 nice=0 cgrp=default sched=0/0 handle=0xb8c7e290 F/art ( 7568): art/runtime/runtime.cc:272] | state=S schedstat=( 0 0 0 ) utm=7 stm=4 core=0 HZ=100 F/art ( 7568): art/runtime/runtime.cc:272] | stack=0xaf937000-0xaf93d000 stackSize=1048KB F/art ( 7568): art/runtime/runtime.cc:272] kernel: futex_wait_queue_me+0xbd/0xd0 F/art ( 7568): art/runtime/runtime.cc:272] kernel: futex_wait+0xba/0x1bc F/art ( 7568): art/runtime/runtime.cc:272] kernel: do_futex+0x90/0x7d8 F/art ( 7568): art/runtime/runtime.cc:272] kernel: sys_futex+0xc0/0xdb F/art ( 7568): art/runtime/runtime.cc:272] kernel: syscall_call+0x7/0xb F/art ( 7568): art/runtime/runtime.cc:272] native: #00 pc 000168d0 /system/lib/libc.so (short+32) F/art ( 7568): art/runtime/runtime.cc:272] native: #01 pc 00104987 [stack:7574] (???) F/art ( 7568): art/runtime/runtime.cc:272] at java.lang.Object.wait!(Native method) F/art ( 7568): art/runtime/runtime.cc:272] - waiting on <0x23aa7855> (a java.lang.Class) F/art ( 7568): art/runtime/runtime.cc:272] at java.lang.Daemons$ReferenceQueueDaemon.run(Daemons.java:133) F/art ( 7568): art/runtime/runtime.cc:272] - locked <0x23aa7855> (a java.lang.Class) F/art ( 7568): art/runtime/runtime.cc:272] at java.lang.Thread.run(Thread.java:818) F/art ( 7568): art/runtime/runtime.cc:272] F/art ( 7568): art/runtime/runtime.cc:272] ""FinalizerDaemon"" prio=5 tid=5 Waiting F/art ( 7568): art/runtime/runtime.cc:272] | group="""" sCount=0 dsCount=0 obj=0x78d650e0 self=0xb8db1510 F/art ( 7568): art/runtime/runtime.cc:272] | sysTid=7575 nice=0 cgrp=default sched=0/0 handle=0xb8db1850 F/art ( 7568): art/runtime/runtime.cc:272] | state=S schedstat=( 0 0 0 ) utm=46 stm=12 core=0 HZ=100 F/art ( 7568): art/runtime/runtime.cc:272] | stack=0xa786e000-0xa7874000 stackSize=1048KB F/art ( 7568): art/runtime/runtime.cc:272] kernel: futex_wait_queue_me+0xbd/0xd0 F/art ( 7568): art/runtime/runtime.cc:272] kernel: futex_wait+0xba/0x1bc F/art ( 7568): art/runtime/runtime.cc:272] kernel: do_futex+0x90/0x7d8 F/art ( 7568): art/runtime/runtime.cc:272] kernel: sys_futex+0xc0/0xdb F/art ( 7568): art/runtime/runtime.cc:272] kernel: syscall_call+0x7/0xb F/art ( 7568): art/runtime/runtime.cc:272] native: #00 pc 000168d0 /system/lib/libc.so (short+32) F/art ( 7568): art/runtime/runtime.cc:272] native: #01 pc 001048a7 [stack:7575] (???) F/art ( 7568): art/runtime/runtime.cc:272] at java.lang.Object.wait!(Native method) F/art ( 7568): art/runtime/runtime.cc:272] - waiting on <0x06fd526a> (a java.lang.ref.ReferenceQueue) F/art ( 7568): art/runtime/runtime.cc:272] at java.lang.Object.wait(Object.java:416) F/art ( 7568): art/runtime/runtime.cc:272] at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:101) F/art ( 7568): art/runtime/runtime.cc:272] - locked <0x06fd526a> (a java.lang.ref.ReferenceQueue) F/art ( 7568): art/runtime/runtime.cc:272] at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:72) F/art ( 7568): art/runtime/runtime.cc:272] at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:173) F/art ( 7568): art/runtime/runtime.cc:272] at java.lang.Thread.run(Thread.java:818) F/art ( 7568): art/runtime/runtime.cc:272] F/art ( 7568): art/runtime/runtime.cc:272] ""FinalizerWatchdogDaemon"" prio=5 tid=6 Sleeping F/art ( 7568): art/runtime/runtime.cc:272] | group="""" sCount=0 dsCount=0 obj=0x78d65140 self=0xb8db1aa0 F/art ( 7568): art/runtime/runtime.cc:272] | sysTid=7577 nice=0 cgrp=default sched=0/0 handle=0xb8db1de0 F/art ( 7568): art/runtime/runtime.cc:272] | state=S schedstat=( 0 0 0 ) utm=0 stm=1 core=0 HZ=100 F/art ( 7568): art/runtime/runtime.cc:272] | stack=0xa775c000-0xa7762000 stackSize=1048KB F/art ( 7568): art/runtime/runtime.cc:272] kernel: futex_wait_queue_me+0xbd/0xd0 F/art ( 7568): art/runtime/runtime.cc:272] kernel: futex_wait+0xba/0x1bc F/art ( 7568): art/runtime/runtime.cc:272] kernel: do_futex+0x90/0x7d8 F/art ( 7568): art/runtime/runtime.cc:272] kernel: sys_futex+0xc0/0xdb F/art ( 7568): art/runtime/runtime.cc:272] kernel: syscall_call+0x7/0xb F/art ( 7568): art/runtime/runtime.cc:272] native: #00 pc 000168d2 /system/lib/libc.so (short+34) F/art ( 7568): art/runtime/runtime.cc:272] native: #01 pc 00104847 [stack:7577] (???) F/art ( 7568): art/runtime/runtime.cc:272] at java.lang.Thread.sleep!(Native method) F/art ( 7568): art/runtime/runtime.cc:272] - sleeping on <0x10f4935b> (a java.lang.Object) F/art ( 7568): art/runtime/runtime.cc:272] at java.lang.Thread.sleep(Thread.java:1031) F/art ( 7568): art/runtime/runtime.cc:272] - locked <0x10f4935b> (a java.lang.Object) F/art ( 7568): art/runtime/runtime.cc:272] at java.lang.Thread.sleep(Thread.java:985) F/art ( 7568): art/runtime/runtime.cc:272] at java.lang.Daemons$FinalizerWatchdogDaemon.sleepFor(Daemons.java:251) F/art ( 7568): art/runtime/runtime.cc:272] at java.lang.Daemons$FinalizerWatchdogDaemon.waitForFinalization(Daemons.java:261) F/art ( 7568): art/runtime/runtime.cc:272] at java.lang.Daemons$FinalizerWatchdogDaemon.run(Daemons.java:215) F/art ( 7568): art/runtime/runtime.cc:272] at java.lang.Thread.run(Thread.java:818) F/art ( 7568): art/runtime/runtime.cc:272] F/art ( 7568): art/runtime/runtime.cc:272] ""HeapTrimmerDaemon"" prio=5 tid=7 Waiting F/art ( 7568): art/runtime/runtime.cc:272] | group="""" sCount=0 dsCount=0 obj=0x78d651a0 self=0xb8db2210 F/art ( 7568): art/runtime/runtime.cc:272] | sysTid=7581 nice=0 cgrp=default sched=0/0 handle=0xb8db2550 F/art ( 7568): art/runtime/runtime.cc:272] | state=S schedstat=( 0 0 0 ) utm=0 stm=0 core=0 HZ=100 F/art ( 7568): art/runtime/runtime.cc:272] | stack=0xa7650000-0xa7656000 stackSize=1048KB F/art ( 7568): art/runtime/runtime.cc:272] kernel: futex_wait_queue_me+0xbd/0xd0 F/art ( 7568): art/runtime/runtime.cc:272] kernel: futex_wait+0xba/0x1bc F/art ( 7568): art/runtime/runtime.cc:272] kernel: do_futex+0x90/0x7d8 F/art ( 7568): art/runtime/runtime.cc:272] kernel: sys_futex+0xc0/0xdb F/art ( 7568): art/runtime/runtime.cc:272] kernel: syscall_call+0x7/0xb F/art ( 7568): art/runtime/runtime.cc:272] native: #00 pc 000168d0 /system/lib/libc.so (short+32) F/art ( 7568): art/runtime/runtime.cc:272] native: #01 pc 00104997 [stack:7581] (???) F/art ( 7568): art/runtime/runtime.cc:272] at java.lang.Object.wait!(Native method) F/art ( 7568): art/runtime/runtime.cc:272] - waiting on <0x106aa7f8> (a java.lang.Daemons$HeapTrimmerDaemon) F/art ( 7568): art/runtime/runtime.cc:272] at java.lang.Daemons$HeapTrimmerDaemon.run(Daemons.java:299) F/art ( 7568): art/runtime/runtime.cc:272] - locked <0x106aa7f8> (a java.lang.Daemons$HeapTrimmerDaemon) F/art ( 7568): art/runtime/runtime.cc:272] at java.lang.Thread.run(Thread.java:818) F/art ( 7568): art/runtime/runtime.cc:272] F/art ( 7568): art/runtime/runtime.cc:272] ""GCDaemon"" prio=5 tid=8 Waiting F/art ( 7568): art/runtime/runtime.cc:272] | group="""" sCount=0 dsCount=0 obj=0x78d65200 self=0xb8db27a0 F/art ( 7568): art/runtime/runtime.cc:272] | sysTid=7582 nice=0 cgrp=default sched=0/0 handle=0xb8db2ae0 F/art ( 7568): art/runtime/runtime.cc:272] | state=S schedstat=( 0 0 0 ) utm=304 stm=20 core=0 HZ=100 F/art ( 7568): art/runtime/runtime.cc:272] | stack=0xa7544000-0xa754a000 stackSize=1048KB F/art ( 7568): art/runtime/runtime.cc:272] kernel: futex_wait_queue_me+0xbd/0xd0 F/art ( 7568): art/runtime/runtime.cc:272] kernel: futex_wait+0xba/0x1bc F/art ( 7568): art/runtime/runtime.cc:272] kernel: do_futex+0x90/0x7d8 F/art ( 7568): art/runtime/runtime.cc:272] kernel: sys_futex+0xc0/0xdb F/art ( 7568): art/runtime/runtime.cc:272] kernel: syscall_call+0x7/0xb F/art ( 7568): art/runtime/runtime.cc:272] native: #00 pc 000168d0 /system/lib/libc.so (short+32) F/art ( 7568): art/runtime/runtime.cc:272] native: #01 pc 00104997 [stack:7582] (???) F/art ( 7568): art/runtime/runtime.cc:272] at java.lang.Object.wait!(Native method) F/art ( 7568): art/runtime/runtime.cc:272] - waiting on <0x1e6744d1> (a java.lang.Daemons$GCDaemon) F/art ( 7568): art/runtime/runtime.cc:272] at java.lang.Daemons$GCDaemon.run(Daemons.java:330) F/art ( 7568): art/runtime/runtime.cc:272] - locked <0x1e6744d1> (a java.lang.Daemons$GCDaemon) F/art ( 7568): art/runtime/runtime.cc:272] at java.lang.Thread.run(Thread.java:818) F/art ( 7568): art/runtime/runtime.cc:272] F/art ( 7568): art/runtime/runtime.cc:272] ""Binder_1"" prio=5 tid=9 Native F/art ( 7568): art/runtime/runtime.cc:272] | group="""" sCount=0 dsCount=0 obj=0x78d77080 self=0xb8db2f80 F/art ( 7568): art/runtime/runtime.cc:272] | sysTid=7583 nice=0 cgrp=default sched=0/0 handle=0xb8db2d30 F/art ( 7568): art/runtime/runtime.cc:272] | state=S schedstat=( 0 0 0 ) utm=12 stm=8 core=0 HZ=100 F/art ( 7568): art/runtime/runtime.cc:272] | stack=0xa7342000-0xa7348000 stackSize=1016KB F/art ( 7568): art/runtime/runtime.cc:272] kernel: binder_thread_read+0x311/0xb64 F/art ( 7568): art/runtime/runtime.cc:272] kernel: binder_ioctl+0x2ad/0x66e F/art ( 7568): art/runtime/runtime.cc:272] kernel: vfs_ioctl+0x1b/0x25 F/art ( 7568): art/runtime/runtime.cc:272] kernel: do_vfs_ioctl+0x410/0x44c F/art ( 7568): art/runtime/runtime.cc:272] kernel: sys_ioctl+0x39/0x5c F/art ( 7568): art/runtime/runtime.cc:272] kernel: syscall_call+0x7/0xb F/art ( 7568): art/runtime/runtime.cc:272] native: #00 pc 0007c504 /system/lib/libc.so (__ioctl+20) F/art ( 7568): art/runtime/runtime.cc:272] native: #01 pc 000904aa /system/lib/libc.so (int+42) F/art ( 7568): art/runtime/runtime.cc:272] native: #02 pc 0002b99b /system/lib/libbinder.so (android::IPCThreadState::joinThreadPool(bool)+395) F/art ( 7568): art/runtime/runtime.cc:272] native: #03 pc 0003b9d8 /system/lib/libbinder.so (android::PoolThread::threadLoop(void)+40) F/art ( 7568): art/runtime/runtime.cc:272] native: #04 pc 00017112 /system/lib/libutils.so (android::Thread::_threadLoop(void*)+402) F/art ( 7568): art/runtime/runtime.cc:272] native: #05 pc 00067da0 /system/lib/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+96) F/art ( 7568): art/runtime/runtime.cc:272] native: #06 pc 00016f56 /system/lib/libutils.so (thread_data_t::trampoline(thread_data_t const*)+246) F/art ( 7568): art/runtime/runtime.cc:272] native: #07 pc 00024578 /system/lib/libc.so (__pthread_start(void*)+56) F/art ( 7568): art/runtime/runtime.cc:272] native: #08 pc 0001ffd9 /system/lib/libc.so (__bionic_clone_entry+25) F/art ( 7568): art/runtime/runtime.cc:272] native: #09 pc 00016749 /system/lib/libc.so (__bionic_clone+73) F/art ( 7568): art/runtime/runtime.cc:272] (no managed stack frames) F/art ( 7568): art/runtime/runtime.cc:272] F/art ( 7568): art/runtime/runtime.cc:272] ""Binder_2"" prio=5 tid=10 Native F/art ( 7568): art/runtime/runtime.cc:272] | group="""" sCount=0 dsCount=0 obj=0x78d7b080 self=0xb8db7c30 F/art ( 7568): art/runtime/runtime.cc:272] | sysTid=7584 nice=0 cgrp=default sched=0/0 handle=0xb8db76a0 F/art ( 7568): art/runtime/runtime.cc:272] | state=S schedstat=( 0 0 0 ) utm=7 stm=10 core=0 HZ=100 F/art ( 7568): art/runtime/runtime.cc:272] | stack=0xa723e000-0xa7244000 stackSize=1016KB F/art ( 7568): art/runtime/runtime.cc:272] kernel: binder_thread_read+0x311/0xb64 F/art ( 7568): art/runtime/runtime.cc:272] kernel: binder_ioctl+0x2ad/0x66e F/art ( 7568): art/runtime/runtime.cc:272] kernel: vfs_ioctl+0x1b/0x25 F/art ( 7568): art/runtime/runtime.cc:272] kernel: do_vfs_ioctl+0x410/0x44c F/art ( 7568): art/runtime/runtime.cc:272] kernel: sys_ioctl+0x39/0x5c F/art ( 7568): art/runtime/runtime.cc:272] kernel: syscall_call+0x7/0xb F/art ( 7568): art/runtime/runtime.cc:272] native: #00 pc 0007c504 /system/lib/libc.so (__ioctl+20) F/art ( 7568): art/runtime/runtime.cc:272] native: #01 pc 000904aa /system/lib/libc.so (int+42) F/art ( 7568): art/runtime/runtime.cc:272] native: #02 pc 0002b99b /system/lib/libbinder.so (android::IPCThreadState::joinThreadPool(bool)+395) F/art ( 7568): art/runtime/runtime.cc:272] native: #03 pc 0003b9d8 /system/lib/libbinder.so (android::PoolThread::threadLoop(void)+40) F/art ( 7568): art/runtime/runtime.cc:272] native: #04 pc 00017112 /system/lib/libutils.so (android::Thread::_threadLoop(void*)+402) F/art ( 7568): art/runtime/runtime.cc:272] native: #05 pc 00067da0 /system/lib/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+96) F/art ( 7568): art/runtime/runtime.cc:272] native: #06 pc 00016f56 /system/lib/libutils.so (thread_data_t::trampoline(thread_data_t const*)+246) F/art ( 7568): art/runtime/runtime.cc:272] native: #07 pc 00024578 /system/lib/libc.so (__pthread_start(void*)+56) F/art ( 7568): art/runtime/runtime.cc:272] native: #08 pc 0001ffd9 /system/lib/libc.so (__bionic_clone_entry+25) F/art ( 7568): art/runtime/runtime.cc:272] native: #09 pc 00016749 /system/lib/libc.so (__bionic_clone+73) F/art ( 7568): art/runtime/runtime.cc:272] (no managed stack frames) F/art ( 7568): art/runtime/runtime.cc:272] F/art ( 7568): art/runtime/runtime.cc:272] ""KrollRuntimeThread"" prio=5 tid=11 Native F/art ( 7568): art/runtime/runtime.cc:272] | group="""" sCount=0 dsCount=0 obj=0x790350a0 self=0xb8dc95d0 F/art ( 7568): art/runtime/runtime.cc:272] | sysTid=7603 nice=0 cgrp=default sched=0/0 handle=0xb8dbaf50 F/art ( 7568): art/runtime/runtime.cc:272] | state=R schedstat=( 0 0 0 ) utm=1239 stm=94 core=0 HZ=100 F/art ( 7568): art/runtime/runtime.cc:272] | stack=0xa6c79000-0xa6c7f000 stackSize=1064KB F/art ( 7568): art/runtime/runtime.cc:272] native: #00 pc 00005baf /system/lib/libbacktrace_libc++.so (UnwindCurrent::Unwind(unsigned int, ucontext*)+95) F/art ( 7568): art/runtime/runtime.cc:272] native: #01 pc 00002751 /system/lib/libbacktrace_libc++.so (Backtrace::Unwind(unsigned int, ucontext*)+33) F/art ( 7568): art/runtime/runtime.cc:272] native: #03 pc 0038bc10 /system/lib/libart.so (art::Thread::Dump(std::__1::basic_ostream >&) const+272) F/art ( 7568): art/runtime/runtime.cc:272] native: #04 pc 0039767e /system/lib/libart.so (art::ThreadList::DumpLocked(std::__1::basic_ostream >&)+478) F/art ( 7568): art/runtime/runtime.cc:272] native: #05 pc 0037272a /system/lib/libart.so (_ZN3art10AbortState4DumpERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEE.isra.124+410) F/art ( 7568): art/runtime/runtime.cc:272] native: #06 pc 003729d1 /system/lib/libart.so (art::Runtime::Abort(void)+129) F/art ( 7568): art/runtime/runtime.cc:272] native: #07 pc 00116bbc /system/lib/libart.so (art::LogMessage::~LogMessage(void)+1644) F/art ( 7568): art/runtime/runtime.cc:272] native: #08 pc 00129f1d /system/lib/libart.so (art::JniAbort(char const*, char const)+2237) F/art ( 7568): art/runtime/runtime.cc:272] native: #09 pc 0012aa1c /system/lib/libart.so (art::JniAbortF(char const*, char const, ellipsis)+108) F/art ( 7568): art/runtime/runtime.cc:272] native: #10 pc 0008412b /system/lib/libart.so (art::CheckMethodArguments(art::mirror::ArtMethod*, unsigned int*)+844) F/art ( 7568): art/runtime/runtime.cc:272] native: #11 pc 0036c1fb /system/lib/libart.so (art::InvokeVirtualOrInterfaceWithJValues(art::ScopedObjectAccessAlreadyRunnable const&, art::mirror::Object*, _jmethodID*, jvalue*)+1147) F/art ( 7568): art/runtime/runtime.cc:272] native: #12 pc 002d4570 /system/lib/libart.so (art::JNI::CallObjectMethodA(_JNIEnv*, _jobject*, _jmethodID*, jvalue*)+336) F/art ( 7568): art/runtime/runtime.cc:272] native: #13 pc 0013c8af /system/lib/libart.so (art::CheckJNI::CallObjectMethodA(_JNIEnv*, _jobject*, _jmethodID*, jvalue*)+175) F/art ( 7568): art/runtime/runtime.cc:272] native: #14 pc 000c00e4 /data/app-lib/com.appcelerator.kitchensink-1/libkroll-v8.so (titanium::MenuProxy::add(v8::Arguments const&)+244) F/art ( 7568): art/runtime/runtime.cc:272] native: #15 pc 00267dd6 /data/app-lib/com.appcelerator.kitchensink-1/libkroll-v8.so (???) F/art ( 7568): art/runtime/runtime.cc:272] at org.appcelerator.kroll.runtime.v8.V8Function.nativeInvoke(Native method) F/art ( 7568): art/runtime/runtime.cc:272] at org.appcelerator.kroll.runtime.v8.V8Function.callSync(V8Function.java:57) F/art ( 7568): art/runtime/runtime.cc:272] at org.appcelerator.kroll.runtime.v8.V8Function.handleMessage(V8Function.java:82) F/art ( 7568): art/runtime/runtime.cc:272] at android.os.Handler.dispatchMessage(Handler.java:98) F/art ( 7568): art/runtime/runtime.cc:272] at android.os.Looper.loop(Looper.java:135) F/art ( 7568): art/runtime/runtime.cc:272] at org.appcelerator.kroll.KrollRuntime$KrollRuntimeThread.run(KrollRuntime.java:112) F/art ( 7568): art/runtime/runtime.cc:272] F/art ( 7568): art/runtime/runtime.cc:272] ""pool-1-thread-1"" prio=5 tid=12 Waiting F/art ( 7568): art/runtime/runtime.cc:272] | group="""" sCount=0 dsCount=0 obj=0x790481a0 self=0xb8dfdc70 F/art ( 7568): art/runtime/runtime.cc:272] | sysTid=7610 nice=0 cgrp=default sched=0/0 handle=0xb8dfe0f0 F/art ( 7568): art/runtime/runtime.cc:272] | state=S schedstat=( 0 0 0 ) utm=0 stm=0 core=0 HZ=100 F/art ( 7568): art/runtime/runtime.cc:272] | stack=0xa6418000-0xa641e000 stackSize=1048KB F/art ( 7568): art/runtime/runtime.cc:272] kernel: futex_wait_queue_me+0xbd/0xd0 F/art ( 7568): art/runtime/runtime.cc:272] kernel: futex_wait+0xba/0x1bc F/art ( 7568): art/runtime/runtime.cc:272] kernel: do_futex+0x90/0x7d8 F/art ( 7568): art/runtime/runtime.cc:272] kernel: sys_futex+0xc0/0xdb F/art ( 7568): art/runtime/runtime.cc:272] kernel: syscall_call+0x7/0xb F/art ( 7568): art/runtime/runtime.cc:272] native: #00 pc 000168d0 /system/lib/libc.so (short+32) F/art ( 7568): art/runtime/runtime.cc:272] native: #01 pc 00104747 [stack:7610] (???) F/art ( 7568): art/runtime/runtime.cc:272] at java.lang.Object.wait!(Native method) F/art ( 7568): art/runtime/runtime.cc:272] - waiting on <0x33962b36> (a java.lang.Object) F/art ( 7568): art/runtime/runtime.cc:272] at java.lang.Thread.parkFor(Thread.java:1220) F/art ( 7568): art/runtime/runtime.cc:272] - locked <0x33962b36> (a java.lang.Object) F/art ( 7568): art/runtime/runtime.cc:272] at sun.misc.Unsafe.park(Unsafe.java:299) F/art ( 7568): art/runtime/runtime.cc:272] at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157) F/art ( 7568): art/runtime/runtime.cc:272] at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2017) F/art ( 7568): art/runtime/runtime.cc:272] at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1050) F/art ( 7568): art/runtime/runtime.cc:272] at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:778) F/art ( 7568): art/runtime/runtime.cc:272] at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035) F/art ( 7568): art/runtime/runtime.cc:272] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097) F/art ( 7568): art/runtime/runtime.cc:272] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) F/art ( 7568): art/runtime/runtime.cc:272] at java.lang.Thread.run(Thread.java:818) F/art ( 7568): art/runtime/runtime.cc:272] F/art ( 7568): art/runtime/runtime.cc:272] ""RenderThread"" prio=5 tid=14 Native F/art ( 7568): art/runtime/runtime.cc:272] | group="""" sCount=0 dsCount=0 obj=0x790d6080 self=0xb8dc0e70 F/art ( 7568): art/runtime/runtime.cc:272] | sysTid=7776 nice=0 cgrp=default sched=0/0 handle=0xb8e2e890 F/art ( 7568): art/runtime/runtime.cc:272] | state=S schedstat=( 0 0 0 ) utm=643 stm=108 core=0 HZ=100 F/art ( 7568): art/runtime/runtime.cc:272] | stack=0xa584b000-0xa5851000 stackSize=1016KB F/art ( 7568): art/runtime/runtime.cc:272] kernel: sys_epoll_wait+0x186/0x29f F/art ( 7568): art/runtime/runtime.cc:272] kernel: sys_epoll_pwait+0x4d/0xaa F/art ( 7568): art/runtime/runtime.cc:272] kernel: syscall_call+0x7/0xb F/art ( 7568): art/runtime/runtime.cc:272] native: #00 pc 0007d9b5 /system/lib/libc.so (__epoll_pwait+37) F/art ( 7568): art/runtime/runtime.cc:272] native: #01 pc 00020712 /system/lib/libc.so (long double+98) F/art ( 7568): art/runtime/runtime.cc:272] native: #02 pc 0002075a /system/lib/libc.so (long double+58) F/art ( 7568): art/runtime/runtime.cc:272] native: #03 pc 00020783 /system/lib/libutils.so (android::Looper::pollInner(int)+211) F/art ( 7568): art/runtime/runtime.cc:272] native: #04 pc 00020d5f /system/lib/libutils.so (android::Looper::pollOnce(int, int*, android::Looper::pollOnce, void**)+47) F/art ( 7568): art/runtime/runtime.cc:272] native: #05 pc 00089a42 /system/lib/libhwui.so (android::uirenderer::renderthread::RenderThread::threadLoop(void)+82) F/art ( 7568): art/runtime/runtime.cc:272] native: #06 pc 00017112 /system/lib/libutils.so (android::Thread::_threadLoop(void*)+402) F/art ( 7568): art/runtime/runtime.cc:272] native: #07 pc 00067da0 /system/lib/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+96) F/art ( 7568): art/runtime/runtime.cc:272] native: #08 pc 00016f56 /system/lib/libutils.so (thread_data_t::trampoline(thread_data_t const*)+246) F/art ( 7568): art/runtime/runtime.cc:272] native: #09 pc 00024578 /system/lib/libc.so (__pthread_start(void*)+56) F/art ( 7568): art/runtime/runtime.cc:272] native: #10 pc 0001ffd9 /system/lib/libc.so (__bionic_clone_entry+25) F/art ( 7568): art/runtime/runtime.cc:272] native: #11 pc 00016749 /system/lib/libc.so (__bionic_clone+73) F/art ( 7568): art/runtime/runtime.cc:272] (no managed stack frames) F/art ( 7568): art/runtime/runtime.cc:272] F/art ( 7568): art/runtime/runtime.cc:272] ""Binder_3"" prio=5 tid=13 Native F/art ( 7568): art/runtime/runtime.cc:272] | group="""" sCount=0 dsCount=0 obj=0x78d3f1a0 self=0xb8ebd400 F/art ( 7568): art/runtime/runtime.cc:272] | sysTid=8104 nice=0 cgrp=default sched=0/0 handle=0xb8ec6340 F/art ( 7568): art/runtime/runtime.cc:272] | state=S schedstat=( 0 0 0 ) utm=11 stm=5 core=0 HZ=100 F/art ( 7568): art/runtime/runtime.cc:272] | stack=0xa50c0000-0xa50c6000 stackSize=1016KB F/art ( 7568): art/runtime/runtime.cc:272] kernel: binder_thread_read+0x311/0xb64 F/art ( 7568): art/runtime/runtime.cc:272] kernel: binder_ioctl+0x2ad/0x66e F/art ( 7568): art/runtime/runtime.cc:272] kernel: vfs_ioctl+0x1b/0x25 F/art ( 7568): art/runtime/runtime.cc:272] kernel: do_vfs_ioctl+0x410/0x44c F/art ( 7568): art/runtime/runtime.cc:272] kernel: sys_ioctl+0x39/0x5c F/art ( 7568): art/runtime/runtime.cc:272] kernel: syscall_call+0x7/0xb F/art ( 7568): art/runtime/runtime.cc:272] native: #00 pc 0007c504 /system/lib/libc.so (__ioctl+20) F/art ( 7568): art/runtime/runtime.cc:272] native: #01 pc 000904aa /system/lib/libc.so (int+42) F/art ( 7568): art/runtime/runtime.cc:272] native: #02 pc 0002b99b /system/lib/libbinder.so (android::IPCThreadState::joinThreadPool(bool)+395) F/art ( 7568): art/runtime/runtime.cc:272] native: #03 pc 0003b9d8 /system/lib/libbinder.so (android::PoolThread::threadLoop(void)+40) F/art ( 7568): art/runtime/runtime.cc:272] native: #04 pc 00017112 /system/lib/libutils.so (android::Thread::_threadLoop(void*)+402) F/art ( 7568): art/runtime/runtime.cc:272] native: #05 pc 00067da0 /system/lib/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+96) F/art ( 7568): art/runtime/runtime.cc:272] native: #06 pc 00016f56 /system/lib/libutils.so (thread_data_t::trampoline(thread_data_t const*)+246) F/art ( 7568): art/runtime/runtime.cc:272] native: #07 pc 00024578 /system/lib/libc.so (__pthread_start(void*)+56) F/art ( 7568): art/runtime/runtime.cc:272] native: #08 pc 0001ffd9 /system/lib/libc.so (__bionic_clone_entry+25) F/art ( 7568): art/runtime/runtime.cc:272] native: #09 pc 00016749 /system/lib/libc.so (__bionic_clone+73) F/art ( 7568): art/runtime/runtime.cc:272] (no managed stack frames) F/art ( 7568): art/runtime/runtime.cc:272] F/art ( 7568): art/runtime/runtime.cc:272] ""pool-3-thread-1"" prio=5 tid=15 Waiting F/art ( 7568): art/runtime/runtime.cc:272] | group="""" sCount=0 dsCount=0 obj=0x790d7a60 self=0xb90009f0 F/art ( 7568): art/runtime/runtime.cc:272] | sysTid=8135 nice=0 cgrp=default sched=0/0 handle=0xb8e6aaa0 F/art ( 7568): art/runtime/runtime.cc:272] | state=S schedstat=( 0 0 0 ) utm=74 stm=24 core=0 HZ=100 F/art ( 7568): art/runtime/runtime.cc:272] | stack=0xa4b91000-0xa4b97000 stackSize=1048KB F/art ( 7568): art/runtime/runtime.cc:272] kernel: futex_wait_queue_me+0xbd/0xd0 F/art ( 7568): art/runtime/runtime.cc:272] kernel: futex_wait+0xba/0x1bc F/art ( 7568): art/runtime/runtime.cc:272] kernel: do_futex+0x90/0x7d8 F/art ( 7568): art/runtime/runtime.cc:272] kernel: sys_futex+0xc0/0xdb F/art ( 7568): art/runtime/runtime.cc:272] kernel: syscall_call+0x7/0xb F/art ( 7568): art/runtime/runtime.cc:272] native: #00 pc 000168d0 /system/lib/libc.so (short+32) F/art ( 7568): art/runtime/runtime.cc:272] native: #01 pc 00104787 [stack:8135] (???) F/art ( 7568): art/runtime/runtime.cc:272] at java.lang.Object.wait!(Native method) F/art ( 7568): art/runtime/runtime.cc:272] - waiting on <0x19df0a37> (a java.lang.Object) F/art ( 7568): art/runtime/runtime.cc:272] at java.lang.Thread.parkFor(Thread.java:1220) F/art ( 7568): art/runtime/runtime.cc:272] - locked <0x19df0a37> (a java.lang.Object) F/art ( 7568): art/runtime/runtime.cc:272] at sun.misc.Unsafe.park(Unsafe.java:299) F/art ( 7568): art/runtime/runtime.cc:272] at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157) F/art ( 7568): art/runtime/runtime.cc:272] at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2017) F/art ( 7568): art/runtime/runtime.cc:272] at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:410) F/art ( 7568): art/runtime/runtime.cc:272] at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035) F/art ( 7568): art/runtime/runtime.cc:272] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097) F/art ( 7568): art/runtime/runtime.cc:272] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) F/art ( 7568): art/runtime/runtime.cc:272] at java.lang.Thread.run(Thread.java:818) F/art ( 7568): art/runtime/runtime.cc:272] F/art ( 7568): art/runtime/runtime.cc:272] ""pool-3-thread-2"" prio=5 tid=16 Waiting F/art ( 7568): art/runtime/runtime.cc:272] | group="""" sCount=0 dsCount=0 obj=0x79148aa0 self=0xb901ac00 F/art ( 7568): art/runtime/runtime.cc:272] | sysTid=8144 nice=0 cgrp=default sched=0/0 handle=0xb901b090 F/art ( 7568): art/runtime/runtime.cc:272] | state=S schedstat=( 0 0 0 ) utm=65 stm=29 core=0 HZ=100 F/art ( 7568): art/runtime/runtime.cc:272] | stack=0xa4a8b000-0xa4a91000 stackSize=1048KB F/art ( 7568): art/runtime/runtime.cc:272] kernel: futex_wait_queue_me+0xbd/0xd0 F/art ( 7568): art/runtime/runtime.cc:272] kernel: futex_wait+0xba/0x1bc F/art ( 7568): art/runtime/runtime.cc:272] kernel: do_futex+0x90/0x7d8 F/art ( 7568): art/runtime/runtime.cc:272] kernel: sys_futex+0xc0/0xdb F/art ( 7568): art/runtime/runtime.cc:272] kernel: syscall_call+0x7/0xb F/art ( 7568): art/runtime/runtime.cc:272] native: #00 pc 000168d0 /system/lib/libc.so (short+32) F/art ( 7568): art/runtime/runtime.cc:272] native: #01 pc 00104787 [stack:8144] (???) F/art ( 7568): art/runtime/runtime.cc:272] at java.lang.Object.wait!(Native method) F/art ( 7568): art/runtime/runtime.cc:272] - waiting on <0x169e4ba4> (a java.lang.Object) F/art ( 7568): art/runtime/runtime.cc:272] at java.lang.Thread.parkFor(Thread.java:1220) F/art ( 7568): art/runtime/runtime.cc:272] - locked <0x169e4ba4> (a java.lang.Object) F/art ( 7568): art/runtime/runtime.cc:272] at sun.misc.Unsafe.park(Unsafe.java:299) F/art ( 7568): art/runtime/runtime.cc:272] at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157) F/art ( 7568): art/runtime/runtime.cc:272] at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2017) F/art ( 7568): art/runtime/runtime.cc:272] at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:410) F/art ( 7568): art/runtime/runtime.cc:272] at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035) F/art ( 7568): art/runtime/runtime.cc:272] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097) F/art ( 7568): art/runtime/runtime.cc:272] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) F/art ( 7568): art/runtime/runtime.cc:272] at java.lang.Thread.run(Thread.java:818) F/art ( 7568): art/runtime/runtime.cc:272] F/art ( 7568): art/runtime/runtime.cc:272] ""pool-4-thread-1"" prio=5 tid=17 Waiting F/art ( 7568): art/runtime/runtime.cc:272] | group="""" sCount=0 dsCount=0 obj=0x79586860 self=0xb9147010 F/art ( 7568): art/runtime/runtime.cc:272] | sysTid=9858 nice=0 cgrp=default sched=0/0 handle=0xb927c960 F/art ( 7568): art/runtime/runtime.cc:272] | state=S schedstat=( 0 0 0 ) utm=2 stm=1 core=0 HZ=100 F/art ( 7568): art/runtime/runtime.cc:272] | stack=0xa42a7000-0xa42ad000 stackSize=1048KB F/art ( 7568): art/runtime/runtime.cc:272] kernel: futex_wait_queue_me+0xbd/0xd0 F/art ( 7568): art/runtime/runtime.cc:272] kernel: futex_wait+0xba/0x1bc F/art ( 7568): art/runtime/runtime.cc:272] kernel: do_futex+0x90/0x7d8 F/art ( 7568): art/runtime/runtime.cc:272] kernel: sys_futex+0xc0/0xdb F/art ( 7568): art/runtime/runtime.cc:272] kernel: syscall_call+0x7/0xb F/art ( 7568): art/runtime/runtime.cc:272] native: #00 pc 000168d0 /system/lib/libc.so (short+32) F/art ( 7568): art/runtime/runtime.cc:272] native: #01 pc 00104787 [stack:9858] (???) F/art ( 7568): art/runtime/runtime.cc:272] at java.lang.Object.wait!(Native method) F/art ( 7568): art/runtime/runtime.cc:272] - waiting on <0x014a5d0d> (a java.lang.Object) F/art ( 7568): art/runtime/runtime.cc:272] at java.lang.Thread.parkFor(Thread.java:1220) F/art ( 7568): art/runtime/runtime.cc:272] - locked <0x014a5d0d> (a java.lang.Object) F/art ( 7568): art/runtime/runtime.cc:272] at sun.misc.Unsafe.park(Unsafe.java:299) F/art ( 7568): art/runtime/runtime.cc:272] at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157) F/art ( 7568): art/runtime/runtime.cc:272] at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2017) F/art ( 7568): art/runtime/runtime.cc:272] at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:410) F/art ( 7568): art/runtime/runtime.cc:272] at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035) F/art ( 7568): art/runtime/runtime.cc:272] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097) F/art ( 7568): art/runtime/runtime.cc:272] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) F/art ( 7568): art/runtime/runtime.cc:272] at java.lang.Thread.run(Thread.java:818) F/art ( 7568): art/runtime/runtime.cc:272] F/art ( 7568): art/runtime/runtime.cc:272] ""pool-4-thread-2"" prio=5 tid=18 Waiting F/art ( 7568): art/runtime/runtime.cc:272] | group="""" sCount=0 dsCount=0 obj=0x795870a0 self=0xb921a920 F/art ( 7568): art/runtime/runtime.cc:272] | sysTid=9863 nice=0 cgrp=default sched=0/0 handle=0xb92bcd70 F/art ( 7568): art/runtime/runtime.cc:272] | state=S schedstat=( 0 0 0 ) utm=2 stm=0 core=0 HZ=100 F/art ( 7568): art/runtime/runtime.cc:272] | stack=0xa3bdb000-0xa3be1000 stackSize=1048KB F/art ( 7568): art/runtime/runtime.cc:272] kernel: futex_wait_queue_me+0xbd/0xd0 F/art ( 7568): art/runtime/runtime.cc:272] kernel: futex_wait+0xba/0x1bc F/art ( 7568): art/runtime/runtime.cc:272] kernel: do_futex+0x90/0x7d8 F/art ( 7568): art/runtime/runtime.cc:272] kernel: sys_futex+0xc0/0xdb F/art ( 7568): art/runtime/runtime.cc:272] kernel: syscall_call+0x7/0xb F/art ( 7568): art/runtime/runtime.cc:272] native: #00 pc 000168d0 /system/lib/libc.so (short+32) F/art ( 7568): art/runtime/runtime.cc:272] native: #01 pc 00104787 [stack:9863] (???) F/art ( 7568): art/runtime/runtime.cc:272] at java.lang.Object.wait!(Native method) F/art ( 7568): art/runtime/runtime.cc:272] - waiting on <0x3a11c4c2> (a java.lang.Object) F/art ( 7568): art/runtime/runtime.cc:272] at java.lang.Thread.parkFor(Thread.java:1220) F/art ( 7568): art/runtime/runtime.cc:272] - locked <0x3a11c4c2> (a java.lang.Object) F/art ( 7568): art/runtime/runtime.cc:272] at sun.misc.Unsafe.park(Unsafe.java:299) F/art ( 7568): art/runtime/runtime.cc:272] at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157) F/art ( 7568): art/runtime/runtime.cc:272] at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2017) F/art ( 7568): art/runtime/runtime.cc:272] at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:410) F/art ( 7568): art/runtime/runtime.cc:272] at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035) F/art ( 7568): art/runtime/runtime.cc:272] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097) F/art ( 7568): art/runtime/runtime.cc:272] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) F/art ( 7568): art/runtime/runtime.cc:272] at java.lang.Thread.run(Thread.java:818) F/art ( 7568): art/runtime/runtime.cc:272] F/art ( 7568): art/runtime/runtime.cc:272] ""pool-5-thread-1"" prio=5 tid=19 Waiting F/art ( 7568): art/runtime/runtime.cc:272] | group="""" sCount=0 dsCount=0 obj=0x7919a7a0 self=0xb92a63d0 F/art ( 7568): art/runtime/runtime.cc:272] | sysTid=11086 nice=0 cgrp=default sched=0/0 handle=0xb8f71ed0 F/art ( 7568): art/runtime/runtime.cc:272] | state=S schedstat=( 0 0 0 ) utm=2 stm=0 core=0 HZ=100 F/art ( 7568): art/runtime/runtime.cc:272] | stack=0xa3d8b000-0xa3d91000 stackSize=1048KB F/art ( 7568): art/runtime/runtime.cc:272] kernel: futex_wait_queue_me+0xbd/0xd0 F/art ( 7568): art/runtime/runtime.cc:272] kernel: futex_wait+0xba/0x1bc F/art ( 7568): art/runtime/runtime.cc:272] kernel: do_futex+0x90/0x7d8 F/art ( 7568): art/runtime/runtime.cc:272] kernel: sys_futex+0xc0/0xdb F/art ( 7568): art/runtime/runtime.cc:272] kernel: syscall_call+0x7/0xb F/art ( 7568): art/runtime/runtime.cc:272] native: #00 pc 000168d0 /system/lib/libc.so (short+32) F/art ( 7568): art/runtime/runtime.cc:272] native: #01 pc 00104787 [stack:11086] (???) F/art ( 7568): art/runtime/runtime.cc:272] at java.lang.Object.wait!(Native method) F/art ( 7568): art/runtime/runtime.cc:272] - waiting on <0x139012d3> (a java.lang.Object) F/art ( 7568): art/runtime/runtime.cc:272] at java.lang.Thread.parkFor(Thread.java:1220) F/art ( 7568): art/runtime/runtime.cc:272] - locked <0x139012d3> (a java.lang.Object) F/art ( 7568): art/runtime/runtime.cc:272] at sun.misc.Unsafe.park(Unsafe.java:299) F/art ( 7568): art/runtime/runtime.cc:272] at java.util.concurrent.locks.LockSupport.park(LockSupport.java:157) F/art ( 7568): art/runtime/runtime.cc:272] at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2017) F/art ( 7568): art/runtime/runtime.cc:272] at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:410) F/art ( 7568): art/runtime/runtime.cc:272] at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1035) F/art ( 7568): art/runtime/runtime.cc:272] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1097) F/art ( 7568): art/runtime/runtime.cc:272] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) F/art ( 7568): art/runtime/runtime.cc:272] at java.lang.Thread.run(Thread.java:818) F/art ( 7568): art/runtime/runtime.cc:272] F/art ( 7568): art/runtime/runtime.cc:272] F/libc ( 7568): Fatal signal 6 (SIGABRT), code -6 in tid 7603 (KrollRuntimeThr) I/DEBUG ( 940): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** I/DEBUG ( 940): Build fingerprint: 'generic_x86/google_sdk_x86/generic_x86:L/LPV81B/1242878:eng/test-keys' I/DEBUG ( 940): Revision: '0' I/DEBUG ( 940): pid: 7568, tid: 7603, name: KrollRuntimeThr >>> com.appcelerator.kitchensink <<< I/DEBUG ( 940): signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr -------- I/DEBUG ( 940): Abort message: 'art/runtime/check_jni.cc:65] JNI DETECTED ERROR IN APPLICATION: bad arguments passed to org.appcelerator.titanium.proxy.MenuItemProxy org.appcelerator.titanium.proxy.MenuProxy.add(org.appcelerator.kroll.KrollDict) (see above for details)' I/DEBUG ( 940): eax 00000000 ebx 00001d90 ecx 00001db3 edx 00000006 I/DEBUG ( 940): esi 00000002 edi 00001db3 I/DEBUG ( 940): xcs 00000073 xds 0000007b xes 0000007b xfs 00000057 xss 0000007b I/DEBUG ( 940): eip b7723776 ebp b776a2ac esp a6d812c0 flags 00200213 I/DEBUG ( 940): I/DEBUG ( 940): backtrace: I/DEBUG ( 940): #00 pc 0007c776 /system/lib/libc.so (tgkill+22) I/DEBUG ( 940): #01 pc 00025453 /system/lib/libc.so (pthread_kill+147) I/DEBUG ( 940): #02 pc 00026a54 /system/lib/libc.so (raise+36) I/DEBUG ( 940): #03 pc 0001fb14 /system/lib/libc.so (abort+84) I/DEBUG ( 940): #04 pc 00372a8a /system/lib/libart.so (art::Runtime::Abort()+314) I/DEBUG ( 940): #05 pc 00116bbc /system/lib/libart.so (art::LogMessage::~LogMessage()+1644) I/DEBUG ( 940): #06 pc 00129f1d /system/lib/libart.so (art::JniAbort(char const*, char const*)+2237) I/DEBUG ( 940): #07 pc 0012aa1c /system/lib/libart.so (art::JniAbortF(char const*, char const*, ...)+108) I/DEBUG ( 940): #08 pc 0008412b /system/lib/libart.so (art::CheckMethodArguments(art::mirror::ArtMethod*, unsigned int*)+844) I/DEBUG ( 940): #09 pc 0036c1fb /system/lib/libart.so (art::InvokeVirtualOrInterfaceWithJValues(art::ScopedObjectAccessAlreadyRunnable const&, art::mirror::Object*, _jmethodID*, jvalue*)+1147) I/DEBUG ( 940): #10 pc 002d4570 /system/lib/libart.so (art::JNI::CallObjectMethodA(_JNIEnv*, _jobject*, _jmethodID*, jvalue*)+336) I/DEBUG ( 940): #11 pc 0013c8af /system/lib/libart.so (art::CheckJNI::CallObjectMethodA(_JNIEnv*, _jobject*, _jmethodID*, jvalue*)+175) I/DEBUG ( 940): #12 pc 000c00e4 /data/app-lib/com.appcelerator.kitchensink-1/libkroll-v8.so (titanium::MenuProxy::add(v8::Arguments const&)+244) I/DEBUG ( 940): #13 pc 00267dd6 /data/app-lib/com.appcelerator.kitchensink-1/libkroll-v8.so I/DEBUG ( 940): I/DEBUG ( 940): stack: I/DEBUG ( 940): a6d81280 b7769d40 I/DEBUG ( 940): a6d81284 00000013 I/DEBUG ( 940): a6d81288 0000000d I/DEBUG ( 940): a6d8128c b76cc800 /system/lib/libc.so (pthread_mutex_unlock+16) I/DEBUG ( 940): a6d81290 b9044b50 [heap] I/DEBUG ( 940): a6d81294 b9044be8 [heap] I/DEBUG ( 940): a6d81298 a346b000 I/DEBUG ( 940): a6d8129c 00000008 I/DEBUG ( 940): a6d812a0 b9044b54 [heap] I/DEBUG ( 940): a6d812a4 b8c74680 [heap] I/DEBUG ( 940): a6d812a8 00000000 I/DEBUG ( 940): a6d812ac b7765fc4 /system/lib/libc.so I/DEBUG ( 940): a6d812b0 b9044b50 [heap] I/DEBUG ( 940): a6d812b4 a6d8138c [stack:7603] I/DEBUG ( 940): a6d812b8 a6d81358 [stack:7603] I/DEBUG ( 940): a6d812bc b7765fc4 /system/lib/libc.so I/DEBUG ( 940): #00 a6d812c0 00000006 I/DEBUG ( 940): a6d812c4 00000001 I/DEBUG ( 940): a6d812c8 b7765fc4 /system/lib/libc.so I/DEBUG ( 940): a6d812cc b76cc454 /system/lib/libc.so (pthread_kill+148) I/DEBUG ( 940): #01 a6d812d0 00001d90 I/DEBUG ( 940): a6d812d4 00001db3 I/DEBUG ( 940): a6d812d8 00000006 I/DEBUG ( 940): a6d812dc 00000000 I/DEBUG ( 940): a6d812e0 a6d81308 [stack:7603] I/DEBUG ( 940): a6d812e4 00000005 I/DEBUG ( 940): a6d812e8 b76cc3c9 /system/lib/libc.so (pthread_kill+9) I/DEBUG ( 940): a6d812ec b7765fc4 /system/lib/libc.so I/DEBUG ( 940): a6d812f0 a6d8133c [stack:7603] I/DEBUG ( 940): a6d812f4 a6d81340 [stack:7603] I/DEBUG ( 940): a6d812f8 a6d813f8 [stack:7603] I/DEBUG ( 940): a6d812fc b76cda55 /system/lib/libc.so (raise+37) I/DEBUG ( 940): #02 a6d81300 b8dbaf50 [heap] I/DEBUG ( 940): a6d81304 00000006 I/DEBUG ( 940): a6d81308 00001204 I/DEBUG ( 940): a6d8130c 00000000 I/DEBUG ( 940): a6d81310 b76cda37 /system/lib/libc.so (raise+7) I/DEBUG ( 940): a6d81314 b7765fc4 /system/lib/libc.so I/DEBUG ( 940): a6d81318 a6d8133c [stack:7603] I/DEBUG ( 940): a6d8131c b76c6b15 /system/lib/libc.so (abort+85) {code}",3 +"TIMOB-17477","08/08/2014 22:45:04","Android 5.0: KS->Photo Gallery crashes ","Build KS with android-L. Go to Phone->Photo Gallery. 1. On emulator, the app crashes with log {code} E/art (15583): JNI ERROR (app bug): attempt to pass an instance of java.util.HashMap as argument 1 to void ti.modules.titanium.media.MediaModule.openPhotoGallery(org.appcelerator.kroll.KrollDict) I/am_on_resume_called(15583): [0,org.appcelerator.titanium.TiActivity] W/EGL_emulation(15583): eglSurfaceAttrib not implemented W/CanvasContext(15583): Failed to set EGL_SWAP_BEHAVIOR on surface 0xb8e20740, error=EGL_SUCCESS D/TiCompositeLayout(15583): (main) [606,238323] org.appcelerator.titanium.view.TiCompositeLayout {0,0,1080,1557} D/TiCompositeLayout(15583): (main) [1,238324] ti.modules.titanium.ui.widget.TiImageView {30,60,630,660} D/TiCompositeLayout(15583): (main) [152,238476] org.appcelerator.titanium.view.TiCompositeLayout {0,0,1080,1557} D/TiCompositeLayout(15583): (main) [1,238477] ti.modules.titanium.ui.widget.TiImageView {30,60,630,660} F/art (15583): art/runtime/check_jni.cc:65] JNI DETECTED ERROR IN APPLICATION: bad arguments passed to void ti.modules.titanium.media.MediaModule.openPhotoGallery(org.appcelerator.kroll.KrollDict) (see above for details) F/art (15583): art/runtime/check_jni.cc:65] from boolean org.appcelerator.kroll.runtime.v8.V8Object.nativeFireEvent(long, java.lang.Object, long, java.lang.String, java.lang.Object, boolean, boolean, int, java.lang.String) F/art (15583): art/runtime/check_jni.cc:65] ""KrollRuntimeThread"" prio=5 tid=11 Runnable F/art (15583): art/runtime/check_jni.cc:65] | group=""main"" sCount=0 dsCount=0 obj=0x7901f0a0 self=0xb8ddae30 F/art (15583): art/runtime/check_jni.cc:65] | sysTid=15623 nice=0 cgrp=default sched=0/0 handle=0xb8c7fa10 F/art (15583): art/runtime/check_jni.cc:65] | state=R schedstat=( 0 0 0 ) utm=404 stm=37 core=0 HZ=100 F/art (15583): art/runtime/check_jni.cc:65] | stack=0xa6c79000-0xa6c7f000 stackSize=1064KB F/art (15583): art/runtime/check_jni.cc:65] native: #00 pc 00005baf /system/lib/libbacktrace_libc++.so (UnwindCurrent::Unwind(unsigned int, ucontext*)+95) F/art (15583): art/runtime/check_jni.cc:65] native: #01 pc 00002751 /system/lib/libbacktrace_libc++.so (Backtrace::Unwind(unsigned int, ucontext*)+33) F/art (15583): art/runtime/check_jni.cc:65] native: #02 pc 003ba727 /system/lib/libart.so (art::DumpNativeStack(std::__1::basic_ostream >&, int, char const*, art::mirror::ArtMethod*)+135) F/art (15583): art/runtime/check_jni.cc:65] native: #03 pc 0038bc10 /system/lib/libart.so (art::Thread::Dump(std::__1::basic_ostream >&) const+272) F/art (15583): art/runtime/check_jni.cc:65] native: #04 pc 00129a18 /system/lib/libart.so (art::JniAbort(char const*, char const)+952) F/art (15583): art/runtime/check_jni.cc:65] native: #05 pc 0012aa1c /system/lib/libart.so (art::JniAbortF(char const*, char const, ellipsis)+108) F/art (15583): art/runtime/check_jni.cc:65] native: #06 pc 0008412b /system/lib/libart.so (art::CheckMethodArguments(art::mirror::ArtMethod*, unsigned int*)+844) F/art (15583): art/runtime/check_jni.cc:65] native: #07 pc 0036c1fb /system/lib/libart.so (art::InvokeVirtualOrInterfaceWithJValues(art::ScopedObjectAccessAlreadyRunnable const&, art::mirror::Object*, _jmethodID*, jvalue*)+1147) F/art (15583): art/runtime/check_jni.cc:65] native: #08 pc 002d11fe /system/lib/libart.so (art::JNI::CallVoidMethodA(_JNIEnv*, _jobject*, _jmethodID*, jvalue*)+334) F/art (15583): art/runtime/check_jni.cc:65] native: #09 pc 0013aeff /system/lib/libart.so (art::CheckJNI::CallVoidMethodA(_JNIEnv*, _jobject*, _jmethodID*, jvalue*)+175) F/art (15583): art/runtime/check_jni.cc:65] native: #10 pc 0016d8f6 /data/app-lib/com.appcelerator.kitchensink-1/libkroll-v8.so (titanium::MediaModule::openPhotoGallery(v8::Arguments const&)+246) F/art (15583): art/runtime/check_jni.cc:65] native: #11 pc 00267dd6 /data/app-lib/com.appcelerator.kitchensink-1/libkroll-v8.so (???) F/art (15583): art/runtime/check_jni.cc:65] at org.appcelerator.kroll.runtime.v8.V8Object.nativeFireEvent(Native method) F/art (15583): art/runtime/check_jni.cc:65] at org.appcelerator.kroll.runtime.v8.V8Object.fireEvent(V8Object.java:62) F/art (15583): art/runtime/check_jni.cc:65] at org.appcelerator.kroll.KrollProxy.doFireEvent(KrollProxy.java:884) F/art (15583): art/runtime/check_jni.cc:65] at org.appcelerator.kroll.KrollProxy.handleMessage(KrollProxy.java:1107) F/art (15583): art/runtime/check_jni.cc:65] at org.appcelerator.titanium.proxy.TiViewProxy.handleMessage(TiViewProxy.java:347) F/art (15583): art/runtime/check_jni.cc:65] at org.appcelerator.titanium.proxy.TiWindowProxy.handleMessage(TiWindowProxy.java:99) F/art (15583): art/runtime/check_jni.cc:65] at ti.modules.titanium.ui.WindowProxy.handleMessage(WindowProxy.java:409) F/art (15583): art/runtime/check_jni.cc:65] at android.os.Handler.dispatchMessage(Handler.java:98) F/art (15583): art/runtime/check_jni.cc:65] at android.os.Looper.loop(Looper.java:135) F/art (15583): art/runtime/check_jni.cc:65] at org.appcelerator.kroll.KrollRuntime$KrollRuntimeThread.run(KrollRuntime.java:112) F/art (15583): art/runtime/check_jni.cc:65] I/am_activity_launch_time( 1280): [0,941708455,com.appcelerator.kitchensink/org.appcelerator.titanium.TiActivity,2879,2879] I/ActivityManager( 1280): Displayed com.appcelerator.kitchensink/org.appcelerator.titanium.TiActivity: +2s879ms I/sf_frame_dur( 942): [com.appcelerator.kitchensink/org.appcelerator.titanium.TiActivity,1,5,3,0,2,2,1] D/TiBaseActivity(15583): (main) [834,239311] Activity org.appcelerator.titanium.TiActivity@2ff04d06 onStop F/libc (15583): Fatal signal 11 (SIGSEGV), code 1, fault addr 0x6e009d in tid 15623 (KrollRuntimeThr) I/DEBUG ( 940): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** I/DEBUG ( 940): Build fingerprint: 'generic_x86/google_sdk_x86/generic_x86:L/LPV81B/1242878:eng/test-keys' I/DEBUG ( 940): Revision: '0' I/DEBUG ( 940): pid: 15583, tid: 15623, name: KrollRuntimeThr >>> com.appcelerator.kitchensink <<< I/DEBUG ( 940): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x6e009d I/DEBUG ( 940): Abort message: 'art/runtime/check_jni.cc:65] JNI DETECTED ERROR IN APPLICATION: bad arguments passed to void ti.modules.titanium.media.MediaModule.openPhotoGallery(org.appcelerator.kroll.KrollDict) (see above for details)' I/DEBUG ( 940): eax 006e0061 ebx b47b2cf8 ecx a6d801d0 edx e90c383e I/DEBUG ( 940): esi a6d80310 edi b8f4d410 I/DEBUG ( 940): xcs 00000073 xds 0000007b xes 0000007b xfs 00000057 xss 0000007b I/DEBUG ( 940): eip b45c2ce7 ebp a6d801b8 esp a6d8010c flags 00200246 I/DEBUG ( 940): I/DEBUG ( 940): backtrace: I/DEBUG ( 940): #00 pc 0030fce7 /system/lib/libart.so (art::mirror::ArtMethod::IsProxyMethod()+7) I/DEBUG ( 940): #01 pc 00327cbf /system/lib/libart.so (art::Monitor::VisitLocks(art::StackVisitor*, void (*)(art::mirror::Object*, void*), void*)+143) I/DEBUG ( 940): #02 pc 003891a0 /system/lib/libart.so (art::StackDumpVisitor::VisitFrame()+704) I/DEBUG ( 940): #03 pc 0037d79f /system/lib/libart.so (art::StackVisitor::WalkStack(bool)+159) I/DEBUG ( 940): #04 pc 0038bca0 /system/lib/libart.so (art::Thread::Dump(std::__1::basic_ostream >&) const+416) I/DEBUG ( 940): #05 pc 0039767e /system/lib/libart.so (art::ThreadList::DumpLocked(std::__1::basic_ostream >&)+478) I/DEBUG ( 940): #06 pc 0037272a /system/lib/libart.so (_ZN3art10AbortState4DumpERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEE.isra.124+410) I/DEBUG ( 940): #07 pc 003729d1 /system/lib/libart.so (art::Runtime::Abort()+129) I/DEBUG ( 940): #08 pc 00116bbc /system/lib/libart.so (art::LogMessage::~LogMessage()+1644) I/DEBUG ( 940): #09 pc 00129f1d /system/lib/libart.so (art::JniAbort(char const*, char const*)+2237) I/DEBUG ( 940): #10 pc 0012aa1c /system/lib/libart.so (art::JniAbortF(char const*, char const*, ...)+108) I/DEBUG ( 940): #11 pc 0008412b /system/lib/libart.so (art::CheckMethodArguments(art::mirror::ArtMethod*, unsigned int*)+844) I/DEBUG ( 940): #12 pc 0036c1fb /system/lib/libart.so (art::InvokeVirtualOrInterfaceWithJValues(art::ScopedObjectAccessAlreadyRunnable const&, art::mirror::Object*, _jmethodID*, jvalue*)+1147) I/DEBUG ( 940): #13 pc 002d11fe /system/lib/libart.so (art::JNI::CallVoidMethodA(_JNIEnv*, _jobject*, _jmethodID*, jvalue*)+334) I/DEBUG ( 940): #14 pc 0013aeff /system/lib/libart.so (art::CheckJNI::CallVoidMethodA(_JNIEnv*, _jobject*, _jmethodID*, jvalue*)+175) I/DEBUG ( 940): #15 pc 0016d8f6 /data/app-lib/com.appcelerator.kitchensink-1/libkroll-v8.so (titanium::MediaModule::openPhotoGallery(v8::Arguments const&)+246) I/DEBUG ( 940): #16 pc 00267dd6 /data/app-lib/com.appcelerator.kitchensink-1/libkroll-v8.so I/DEBUG ( 940): I/DEBUG ( 940): stack: I/DEBUG ( 940): a6d800cc a6d80140 [stack:15623] I/DEBUG ( 940): a6d800d0 a6d8013c [stack:15623] I/DEBUG ( 940): a6d800d4 b596ee18 /system/lib/libc++.so I/DEBUG ( 940): a6d800d8 a6d80110 [stack:15623] I/DEBUG ( 940): a6d800dc b5907a43 /system/lib/libc++.so (std::__1::num_put > >::do_put(std::__1::ostreambuf_iterator >, std::__1::ios_base&, char, long) const+499) I/DEBUG ( 940): a6d800e0 a6d8018c [stack:15623] I/DEBUG ( 940): a6d800e4 b8fcf144 [heap] I/DEBUG ( 940): a6d800e8 a6d80127 [stack:15623] I/DEBUG ( 940): a6d800ec a6d80127 [stack:15623] I/DEBUG ( 940): a6d800f0 a6d8012b [stack:15623] I/DEBUG ( 940): a6d800f4 b8fcf178 [heap] I/DEBUG ( 940): a6d800f8 00000020 I/DEBUG ( 940): a6d800fc b7765fc4 /system/lib/libc.so I/DEBUG ( 940): a6d80100 716542ea /system/framework/x86/boot.oat I/DEBUG ( 940): a6d80104 a6d8013c [stack:15623] I/DEBUG ( 940): a6d80108 b8fcf144 [heap] I/DEBUG ( 940): #00 a6d8010c b45dacc0 /system/lib/libart.so (art::Monitor::VisitLocks(art::StackVisitor*, void (*)(art::mirror::Object*, void*), void*)+144) I/DEBUG ( 940): #01 a6d80110 b8f4d410 [heap] I/DEBUG ( 940): a6d80114 00000000 I/DEBUG ( 940): a6d80118 a6d8012b [stack:15623] I/DEBUG ( 940): a6d8011c a6d80127 [stack:15623] I/DEBUG ( 940): a6d80120 00646c25 I/DEBUG ( 940): a6d80124 316b0000 I/DEBUG ( 940): a6d80128 b7393033 /system/lib/libGLES_trace.so (android::gltrace::GLTrace_glDeleteFramebuffers(int, unsigned int const*)+435) I/DEBUG ( 940): a6d8012c b592113b /system/lib/libc++.so (std::__1::locale::use_facet(std::__1::locale::id&) const+11) I/DEBUG ( 940): a6d80130 b8f01c70 [heap] I/DEBUG ( 940): a6d80134 00000000 I/DEBUG ( 940): a6d80138 00000000 I/DEBUG ( 940): a6d8013c 39303331 I/DEBUG ( 940): a6d80140 b8fcf140 [heap] I/DEBUG ( 940): a6d80144 00000001 I/DEBUG ( 940): a6d80148 a6d801b8 [stack:15623] I/DEBUG ( 940): a6d8014c b43c3f03 /system/lib/libart.so (std::__1::basic_ostream >& std::__1::operator<< >(std::__1::basic_ostream >&, char const*)+611) I/DEBUG ( 940): ........ ........ I/DEBUG ( 940): #02 a6d801d0 a6d80310 [stack:15623] I/DEBUG ( 940): a6d801d4 b463bcc0 /system/lib/libart.so (art::StackDumpVisitor::DumpLockedObject(art::mirror::Object*, void*)) I/DEBUG ( 940): a6d801d8 b8fcf140 [heap] I/DEBUG ( 940): a6d801dc b4716b48 /system/lib/libart.so (art::x86::X86Context::FillCalleeSaves(art::StackVisitor const&)+168) I/DEBUG ( 940): a6d801e0 000001e0 I/DEBUG ( 940): a6d801e4 706ce128 /system/framework/x86/boot.art I/DEBUG ( 940): a6d801e8 0000051d I/DEBUG ( 940): a6d801ec 0000051d I/DEBUG ( 940): a6d801f0 00000041 I/DEBUG ( 940): a6d801f4 00000028 I/DEBUG ( 940): a6d801f8 b8e71af0 [heap] I/DEBUG ( 940): a6d801fc e90c383e I/DEBUG ( 940): a6d80200 b8da5430 [heap] I/DEBUG ( 940): a6d80204 b47310c8 /system/lib/libart.so I/DEBUG ( 940): a6d80208 a6d80230 [stack:15623] I/DEBUG ( 940): a6d8020c b47b2cf8 /system/lib/libart.so I/DEBUG ( 940): ........ ........ I/DEBUG ( 940): I/DEBUG ( 940): memory map around fault addr 006e009d: I/DEBUG ( 940): (no map below) I/DEBUG ( 940): (no map for address) I/DEBUG ( 940): (no map above) I/am_crash( 1280): [1280,0,com.appcelerator.kitchensink,11058756,Native crash,Segmentation fault,unknown,0] I/BootReceiver( 1280): Copying /data/tombstones/tombstone_01 to DropBox (SYSTEM_TOMBSTONE) W/ActivityManager( 1280): Process com.appcelerator.kitchensink has crashed too many times: killing! {code} 2. After fixing the above ART runtime issue, on device (when backing out of the test), the app crashes with the following error {code} 08-21 15:38:20.384: E/TiApplication(10480): (main) [0,199305] Sending event: exception on thread: main msg:java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { (has extras) }} to activity {com.kitchen/org.appcelerator.titanium.TiActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.startsWith(java.lang.String)' on a null object reference; Titanium 1.0,N/A,N/A 08-21 15:38:20.384: E/TiApplication(10480): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { (has extras) }} to activity {com.kitchen/org.appcelerator.titanium.TiActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.startsWith(java.lang.String)' on a null object reference 08-21 15:38:20.384: E/TiApplication(10480): at android.app.ActivityThread.deliverResults(ActivityThread.java:3426) 08-21 15:38:20.384: E/TiApplication(10480): at android.app.ActivityThread.handleSendResult(ActivityThread.java:3469) 08-21 15:38:20.384: E/TiApplication(10480): at android.app.ActivityThread.access$1300(ActivityThread.java:143) 08-21 15:38:20.384: E/TiApplication(10480): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1305) 08-21 15:38:20.384: E/TiApplication(10480): at android.os.Handler.dispatchMessage(Handler.java:102) 08-21 15:38:20.384: E/TiApplication(10480): at android.os.Looper.loop(Looper.java:135) 08-21 15:38:20.384: E/TiApplication(10480): at android.app.ActivityThread.main(ActivityThread.java:5070) 08-21 15:38:20.384: E/TiApplication(10480): at java.lang.reflect.Method.invoke(Native Method) 08-21 15:38:20.384: E/TiApplication(10480): at java.lang.reflect.Method.invoke(Method.java:372) 08-21 15:38:20.384: E/TiApplication(10480): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:836) 08-21 15:38:20.384: E/TiApplication(10480): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:631) 08-21 15:38:20.384: E/TiApplication(10480): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.startsWith(java.lang.String)' on a null object reference 08-21 15:38:20.384: E/TiApplication(10480): at org.appcelerator.titanium.io.TiFileFactory.createTitaniumFile(TiFileFactory.java:56) 08-21 15:38:20.384: E/TiApplication(10480): at ti.modules.titanium.media.MediaModule.createDictForImage(MediaModule.java:823) 08-21 15:38:20.384: E/TiApplication(10480): at ti.modules.titanium.media.MediaModule$1.onResult(MediaModule.java:794) 08-21 15:38:20.384: E/TiApplication(10480): at org.appcelerator.titanium.util.TiActivitySupportHelper$1.onResult(TiActivitySupportHelper.java:58) 08-21 15:38:20.384: E/TiApplication(10480): at org.appcelerator.titanium.util.TiActivitySupportHelper.onActivityResult(TiActivitySupportHelper.java:107) 08-21 15:38:20.384: E/TiApplication(10480): at org.appcelerator.titanium.TiBaseActivity.onActivityResult(TiBaseActivity.java:632) 08-21 15:38:20.384: E/TiApplication(10480): at android.app.Activity.dispatchActivityResult(Activity.java:5922) 08-21 15:38:20.384: E/TiApplication(10480): at android.app.ActivityThread.deliverResults(ActivityThread.java:3422) 08-21 15:38:20.384: E/TiApplication(10480): ... 10 more 08-21 15:38:20.460: E/AndroidRuntime(10480): FATAL EXCEPTION: main 08-21 15:38:20.460: E/AndroidRuntime(10480): Process: com.kitchen, PID: 10480 08-21 15:38:20.460: E/AndroidRuntime(10480): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { (has extras) }} to activity {com.kitchen/org.appcelerator.titanium.TiActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.startsWith(java.lang.String)' on a null object reference 08-21 15:38:20.460: E/AndroidRuntime(10480): at android.app.ActivityThread.deliverResults(ActivityThread.java:3426) 08-21 15:38:20.460: E/AndroidRuntime(10480): at android.app.ActivityThread.handleSendResult(ActivityThread.java:3469) 08-21 15:38:20.460: E/AndroidRuntime(10480): at android.app.ActivityThread.access$1300(ActivityThread.java:143) 08-21 15:38:20.460: E/AndroidRuntime(10480): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1305) 08-21 15:38:20.460: E/AndroidRuntime(10480): at android.os.Handler.dispatchMessage(Handler.java:102) 08-21 15:38:20.460: E/AndroidRuntime(10480): at android.os.Looper.loop(Looper.java:135) 08-21 15:38:20.460: E/AndroidRuntime(10480): at android.app.ActivityThread.main(ActivityThread.java:5070) 08-21 15:38:20.460: E/AndroidRuntime(10480): at java.lang.reflect.Method.invoke(Native Method) 08-21 15:38:20.460: E/AndroidRuntime(10480): at java.lang.reflect.Method.invoke(Method.java:372) 08-21 15:38:20.460: E/AndroidRuntime(10480): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:836) 08-21 15:38:20.460: E/AndroidRuntime(10480): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:631) 08-21 15:38:20.460: E/AndroidRuntime(10480): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.startsWith(java.lang.String)' on a null object reference 08-21 15:38:20.460: E/AndroidRuntime(10480): at org.appcelerator.titanium.io.TiFileFactory.createTitaniumFile(TiFileFactory.java:56) 08-21 15:38:20.460: E/AndroidRuntime(10480): at ti.modules.titanium.media.MediaModule.createDictForImage(MediaModule.java:823) 08-21 15:38:20.460: E/AndroidRuntime(10480): at ti.modules.titanium.media.MediaModule$1.onResult(MediaModule.java:794) 08-21 15:38:20.460: E/AndroidRuntime(10480): at org.appcelerator.titanium.util.TiActivitySupportHelper$1.onResult(TiActivitySupportHelper.java:58) 08-21 15:38:20.460: E/AndroidRuntime(10480): at org.appcelerator.titanium.util.TiActivitySupportHelper.onActivityResult(TiActivitySupportHelper.java:107) 08-21 15:38:20.460: E/AndroidRuntime(10480): at org.appcelerator.titanium.TiBaseActivity.onActivityResult(TiBaseActivity.java:632) 08-21 15:38:20.460: E/AndroidRuntime(10480): at android.app.Activity.dispatchActivityResult(Activity.java:5922) 08-21 15:38:20.460: E/AndroidRuntime(10480): at android.app.ActivityThread.deliverResults(ActivityThread.java:3422) 08-21 15:38:20.460: E/AndroidRuntime(10480): ... 10 more 08-21 15:38:40.965: I/Process(10480): Sending signal. PID: 10480 SIG: 9 {code}",3 +"TIMOB-17478","08/08/2014 22:47:54","Android 5.0: KS->Facebook crashes ","Build KS with android-L. Go to Mahups->Facebook->Login/Logout. App crashes with log {code} E/art (16298): JNI ERROR (app bug): attempt to pass an instance of java.lang.Object[] as argument 1 to void facebook.FacebookModule.setPermissions(java.lang.String[]) F/art (16298): art/runtime/check_jni.cc:65] JNI DETECTED ERROR IN APPLICATION: bad arguments passed to void facebook.FacebookModule.setPermissions(java.lang.String[]) (see above for details) F/art (16298): art/runtime/check_jni.cc:65] from boolean org.appcelerator.kroll.runtime.v8.V8Object.nativeFireEvent(long, java.lang.Object, long, java.lang.String, java.lang.Object, boolean, boolean, int, java.lang.String) F/art (16298): art/runtime/check_jni.cc:65] ""KrollRuntimeThread"" prio=5 tid=11 Runnable F/art (16298): art/runtime/check_jni.cc:65] | group=""main"" sCount=0 dsCount=0 obj=0x790380a0 self=0xb8dc2100 F/art (16298): art/runtime/check_jni.cc:65] | sysTid=16338 nice=0 cgrp=default sched=0/0 handle=0xb8dbda10 F/art (16298): art/runtime/check_jni.cc:65] | state=R schedstat=( 0 0 0 ) utm=393 stm=22 core=0 HZ=100 F/art (16298): art/runtime/check_jni.cc:65] | stack=0xa6c79000-0xa6c7f000 stackSize=1064KB F/art (16298): art/runtime/check_jni.cc:65] native: #00 pc 00005baf /system/lib/libbacktrace_libc++.so (UnwindCurrent::Unwind(unsigned int, ucontext*)+95) F/art (16298): art/runtime/check_jni.cc:65] native: #01 pc 00002751 /system/lib/libbacktrace_libc++.so (Backtrace::Unwind(unsigned int, ucontext*)+33) F/art (16298): art/runtime/check_jni.cc:65] native: #02 pc 003ba727 /system/lib/libart.so (art::DumpNativeStack(std::__1::basic_ostream >&, int, char const*, art::mirror::ArtMethod*)+135) F/art (16298): art/runtime/check_jni.cc:65] native: #03 pc 0038bc10 /system/lib/libart.so (art::Thread::Dump(std::__1::basic_ostream >&) const+272) F/art (16298): art/runtime/check_jni.cc:65] native: #04 pc 00129a18 /system/lib/libart.so (art::JniAbort(char const*, char const)+952) F/art (16298): art/runtime/check_jni.cc:65] native: #05 pc 0012aa1c /system/lib/libart.so (art::JniAbortF(char const*, char const, ellipsis)+108) F/art (16298): art/runtime/check_jni.cc:65] native: #06 pc 0008412b /system/lib/libart.so (art::CheckMethodArguments(art::mirror::ArtMethod*, unsigned int*)+844) F/art (16298): art/runtime/check_jni.cc:65] native: #07 pc 0036c1fb /system/lib/libart.so (art::InvokeVirtualOrInterfaceWithJValues(art::ScopedObjectAccessAlreadyRunnable const&, art::mirror::Object*, _jmethodID*, jvalue*)+1147) F/art (16298): art/runtime/check_jni.cc:65] native: #08 pc 002d11fe /system/lib/libart.so (art::JNI::CallVoidMethodA(_JNIEnv*, _jobject*, _jmethodID*, jvalue*)+334) F/art (16298): art/runtime/check_jni.cc:65] native: #09 pc 0013aeff /system/lib/libart.so (art::CheckJNI::CallVoidMethodA(_JNIEnv*, _jobject*, _jmethodID*, jvalue*)+175) F/art (16298): art/runtime/check_jni.cc:65] native: #10 pc 00007dcd /data/app-lib/com.appcelerator.kitchensink-1/libfacebook.so (v8 facebook::FacebookModule::setter_permissions(v8::Local(facebook::FacebookModule::setter_permissions::AccessorInfo const&)+237) F/art (16298): art/runtime/check_jni.cc:65] native: #11 pc 00473c47 /data/app-lib/com.appcelerator.kitchensink-1/libkroll-v8.so (???) F/art (16298): art/runtime/check_jni.cc:65] native: #12 pc 00042140 (???) F/art (16298): art/runtime/check_jni.cc:65] native: #13 pc 0004a07f /system/lib/libskia.so (???) F/art (16298): art/runtime/check_jni.cc:65] at org.appcelerator.kroll.runtime.v8.V8Object.nativeFireEvent(Native method) F/art (16298): art/runtime/check_jni.cc:65] at org.appcelerator.kroll.runtime.v8.V8Object.fireEvent(V8Object.java:62) F/art (16298): art/runtime/check_jni.cc:65] at org.appcelerator.kroll.KrollProxy.doFireEvent(KrollProxy.java:884) F/art (16298): art/runtime/check_jni.cc:65] at org.appcelerator.kroll.KrollProxy.handleMessage(KrollProxy.java:1107) F/art (16298): art/runtime/check_jni.cc:65] at org.appcelerator.titanium.proxy.TiViewProxy.handleMessage(TiViewProxy.java:347) F/art (16298): art/runtime/check_jni.cc:65] at ti.modules.titanium.ui.TableViewProxy.handleMessage(TableViewProxy.java:942) F/art (16298): art/runtime/check_jni.cc:65] at android.os.Handler.dispatchMessage(Handler.java:98) F/art (16298): art/runtime/check_jni.cc:65] at android.os.Looper.loop(Looper.java:135) F/art (16298): art/runtime/check_jni.cc:65] at org.appcelerator.kroll.KrollRuntime$KrollRuntimeThread.run(KrollRuntime.java:112) F/art (16298): art/runtime/check_jni.cc:65] F/libc (16298): invalid address or address of corrupt block 0xb8ea8d58 passed to dlfree I/WindowState( 1280): WIN DEATH: Window{38cde3ee u0 com.appcelerator.kitchensink/com.appcelerator.kitchensink.KitchensinkActivity} I/ActivityManager( 1280): Process com.appcelerator.kitchensink (pid 16298) has died. {code}",3 +"TIMOB-18044","08/10/2014 01:17:30","Android: tiapp.xml of generated project has two modules tag","## Description tiapp.xml of generated project by '3.3.0.GA/module/builder.py' hans two modules tag. ## Reproducing steps 1. create Android Module. 2. run 'ant run' (app install to your device) 3. you got a runtime error ""Requested module not found"" 4. go generated example project dir. (You can find a path from 'ant run' log. it is something like this : /private/var/folders/cd/slc2125j7xz_kt9292dkp2v80000gn/T/mHgoLa_ti/test/) 5. open tiapp.xml. you can see it has a two modules tag. (attached) I will make a Pull Request. ",3 +"TIMOB-17482","08/11/2014 10:12:07","Android: App crashes when using searchBar border properties","App crashes if we use the searchBar properties borderRadius, borderColor, or borderWidth. And use this searchBar in a tableView using search property. h3.Testing Environment: Titanium SDK: 3.3.0.GA, 3.2.3.GA Titanium CLI: 3.3.0, Android SDK: 4.2.2, 4.4.2 OS X Version: 10.9.3, Appcelerator Studio: 3.3.0 h3.Steps to Reproduce the issue: 1. Create classic project. 2. Paste this code app.js file. 3. Run this code with the testing environment. h3.Test Code {code:title=app.js} var win = Titanium.UI.createWindow({ title : ""search bar"" }); // create table view data object var data = []; data[0] = Ti.UI.createTableViewRow({ hasChild : true, title : 'Row 1' }); data[1] = Ti.UI.createTableViewRow({ hasDetail : true, title : 'Row 2' }); data[2] = Ti.UI.createTableViewRow({ hasCheck : true, title : 'Row 3' }); data[3] = Ti.UI.createTableViewRow({ title : 'Row 4' }); var search = Titanium.UI.createSearchBar({ borderRadius : 10, borderColor : 'red', borderWidth : 2, showCancel : true, height : 60, hintText : ""Filter results"", }); // create table view var tableview = Titanium.UI.createTableView({ data : data, top : 40, search : search, filterAttribute : ""title"", }); win.add(tableview); win.open(); {code} {code:title=application log} [ERROR] : TiApplication: (main) [107,107] Sending event: exception on thread: main msg:java.lang.RuntimeException: Unable to start activity ComponentInfo{com.bd.apptest1/org.appcelerator.titanium.TiActivity}: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.; Titanium 3.2.3,2014/04/22 10:17,b958a70 [ERROR] : TiApplication: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.bd.apptest1/org.appcelerator.titanium.TiActivity}: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first. [ERROR] : TiApplication: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180) [ERROR] : TiApplication: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) [ERROR] : TiApplication: at android.app.ActivityThread.access$600(ActivityThread.java:141) [ERROR] : TiApplication: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) [ERROR] : TiApplication: at android.os.Handler.dispatchMessage(Handler.java:99) [ERROR] : TiApplication: at android.os.Looper.loop(Looper.java:137) [ERROR] : TiApplication: at android.app.ActivityThread.main(ActivityThread.java:5041) [ERROR] : TiApplication: at java.lang.reflect.Method.invokeNative(Native Method) [ERROR] : TiApplication: at java.lang.reflect.Method.invoke(Method.java:511) [ERROR] : TiApplication: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) [ERROR] : TiApplication: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) [ERROR] : TiApplication: at dalvik.system.NativeStart.main(Native Method) [ERROR] : TiApplication: Caused by: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first. [ERROR] : TiApplication: at android.view.ViewGroup.addViewInner(ViewGroup.java:3339) [ERROR] : TiApplication: at android.view.ViewGroup.addView(ViewGroup.java:3210) [ERROR] : TiApplication: at android.view.ViewGroup.addView(ViewGroup.java:3186) [ERROR] : TiApplication: at ti.modules.titanium.ui.widget.TiUITableView.processProperties(TiUITableView.java:155) [ERROR] : TiApplication: at org.appcelerator.kroll.KrollProxy.setModelListener(KrollProxy.java:1185) [ERROR] : TiApplication: at org.appcelerator.titanium.proxy.TiViewProxy.realizeViews(TiViewProxy.java:480) [ERROR] : TiApplication: at org.appcelerator.titanium.proxy.TiViewProxy.handleGetView(TiViewProxy.java:471) [ERROR] : TiApplication: at org.appcelerator.titanium.proxy.TiViewProxy.getOrCreateView(TiViewProxy.java:449) [ERROR] : TiApplication: at org.appcelerator.titanium.proxy.TiViewProxy.realizeViews(TiViewProxy.java:487) [ERROR] : TiApplication: at org.appcelerator.titanium.proxy.TiViewProxy.handleGetView(TiViewProxy.java:471) [ERROR] : TiApplication: at org.appcelerator.titanium.proxy.TiViewProxy.getOrCreateView(TiViewProxy.java:449) [ERROR] : TiApplication: at org.appcelerator.titanium.proxy.TiViewProxy.handleAdd(TiViewProxy.java:566) [ERROR] : TiApplication: at org.appcelerator.titanium.proxy.TiViewProxy.add(TiViewProxy.java:544) [ERROR] : TiApplication: at ti.modules.titanium.ui.WindowProxy.windowCreated(WindowProxy.java:303) [ERROR] : TiApplication: at org.appcelerator.titanium.TiActivityWindows.windowCreated(TiActivityWindows.java:32) [ERROR] : TiApplication: at org.appcelerator.titanium.TiBaseActivity.windowCreated(TiBaseActivity.java:452) [ERROR] : TiApplication: at org.appcelerator.titanium.TiBaseActivity.onCreate(TiBaseActivity.java:528) [ERROR] : TiApplication: at org.appcelerator.titanium.TiActivity.onCreate(TiActivity.java:18) [ERROR] : TiApplication: at android.app.Activity.performCreate(Activity.java:5104) [ERROR] : TiApplication: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) [ERROR] : TiApplication: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) [ERROR] : TiApplication: ... 11 more {code} Thanks",5 +"TIMOB-17491","08/11/2014 14:59:17","Android: contentOffset property of UI.ScrollView not accessible","The contentOffset property (reflecting what's currently visible in a ScrollView), is undefined on Android. Documentation of [UI.ScrollView|(http://docs.appcelerator.com/titanium/latest/#!/api/Titanium.UI.ScrollView-property-contentOffset] says it's available on Android since 0.9, however in version 3.3.0 GA it (still?) doesn't work. h4. Notes * contentOffset is not set manually anywhere in the test code * I'm talking about UI.ScrollView, not tableview or listview h3. How to reproduce Create a ScrollView {code:title=test.xml|borderStyle=solid} {code} In the controller, try to get the value of the property : {code:title=test.js|borderStyle=solid} alert($.myscrollview.contentOffset.x); {code} h3. Actual result On iOS : the value is properly displayed and reflects any scrolling (manual or not) done on the ScrollView On Android : a runtime error occurs with the following message : {panel:title=Runtime Error} Message: Uncaught TypeError: Cannot read property 'x' of undefined Source: alert($.myscrollview.contentOffset.x); {panel} h3. Expected result Both iOS & Android should produce the same result. Looking at the source of [TiUIScrollView.java|https://github.com/appcelerator/titanium_mobile/blob/master/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIScrollView.java] we see that indeed the property is supposed to be updated upon scrolling. However the property is not accessible from JavaScript on Android. (Could it be a problem in the proxy?)",3 +"TIMOB-17486","08/11/2014 23:13:29","iOS8: Support iOS 8","Set of tickets to support iOS 8.",0 +"TIMOB-17584","08/12/2014 20:26:51","iOS: HTTPClient: AutoRedirect = false returns 200 status code, not 301/302","h4. Problem Description When a GET request should be returning a status of ""301"" or ""302"", I have the 3.3.0 GA SDK returning a ""200"". Switching back to the 3.2.3 GA SDK fixes the problem. When we have tested using the following code, the status returned is ""302"" in 3.3.0.GA and ""301"" in 3.2.3.GA. h4. Steps to reproduce a) Create a simple project. b) Update this code in app.js: {code}var xhr = Titanium.Network.createHTTPClient(); xhr.autoRedirect = false; xhr.allResponseHeaders = true; // what to do if it loads xhr.onload = function(e) { Ti.API.log('Status = ' + this.getStatus()); if (this.getStatus() == 301) { Ti.API.log('Redirect to ' + this.getResponseHeader('location')); } else { Ti.API.log('This should have returned a 301 not a 200'); } }; xhr.open('GET', 'http://google.co.nz'); xhr.send();{code} c) Run this with testing environment h4. Test results In Titanium SDK: 3.3.0.GA [DEBUG]: Application booted in 125.191987 ms [INFO] : Status = 302 [INFO] : This should have returned a 301 not a 200 In Titanium SDK: 3.2.3.GA [DEBUG]: Application booted in 110.395968 ms [INFO] : Status = 301 [INFO] : Redirect to http://www.google.co.nz/ ",3 +"TIMOB-17621","08/14/2014 13:35:43","Android: Android ListView setDividerHeight is not exposed in Titanium","There is a native functionality in Android to set the DividerHeight on a ListView. This functionality is not exposed in Alloy. 3 weeks ago this issue was raised: https://developer.appcelerator.com/question/176416/remove-android-listview-separator In Android, to set the height of the Divider you need to call this function listView.setDividerHeight(1); (as explained here: http://stackoverflow.com/questions/11858180/change-the-divider-height-of-listview-dynamically) It seems trivial to expose this feature to Titanium Developers.",5 +"TIMOB-17513","08/19/2014 17:42:25","iOS: Refactor ioslib","ioslib is the communication library we use when interacting with iOS devices. It needs to be refactored to handle both the needs of the current Titanium CLI as well as the tiO2 project. https://github.com/appcelerator/ioslib This task involves both the initial refactoring, as well as re-integrating it back into https://github.com/appcelerator/tio2 and https://github.com/appcelerator/titanium.",0 +"TIMOB-17515","08/19/2014 17:46:44","Windows: Refactor windows detection code into windowslib","windowslib is the communication library we use when interacting with Windows devices. In this case, it does not yet exist, but needs to be pulled from the existing Windows detection code done for the Windows Hybrid SDK. It needs to both the needs of the current Titanium CLI as well as the tiO2 project. https://github.com/appcelerator/windowslib This task involves both the initial refactoring, as well as integrating it back into https://github.com/appcelerator/tio2 and https://github.com/appcelerator/titanium.",0 +"TIMOB-17525","08/20/2014 20:21:17","CLI: Support Android 5.0","Android ""L"" is the first version with a letter instead of a number for the version identifier. It may be that Google will now switch to using non-numeric version numbers fr betas in the future. To make it easier for users to beta-test Android L and future versions, we update the CLI to support the Android L ""version""",8 +"TIMOB-17531","08/20/2014 20:40:15","Add device-specific logic to ioslib","Querying what devices are present, installing to device, logging messages from device",5 +"TIMOB-17545","08/25/2014 17:18:39","CLI: Choosing the latest version of a module does not pick the latest compatible one","h2. Description When adding a module to a project, the list of available versions shows only the ones compatible with the chosen SDK. For example, ti.cloudpush 3.3.0 will not show up if the SDK chosen is 3.2.3. The issue is when chosing the [latest] option: in that case, the system is using the latest version, and the build fails because ti.cloudpush 3.3.0 is not compatible with SDK 3.2.3",5 +"TIMOB-17561","08/26/2014 18:59:25","Android: When adding swipe event to a tabGroup, the inside tableview's inside won't scroll nice (parity issue)","h4. Problem Description I found that attaching a 'swipe' event handler to a tab group with the goal of allowing swiping left and right to change tabs is having the unintended side effect of preventing the native scroll behavior on a table view contained in the tab group on Android. Normally when you swipe down (fling) on a table view, there's some inertia and the table view keeps scrolling for a little bit. When there is a 'swipe' event handler on a tab group and you swipe down on a table view, as soon as you lift your finger off the screen the table view motion stops. There is no inertia. The scrolling stops as soon as the finger is lifted, making it hard to scroll through a long list. iOS doesn't seem affected. The swipe handler works and native scroll works as expected. h4. Test Case {code} // create table view 1 var win1 = Ti.UI.createWindow({ title:'Tab 1', backgroundColor:'#fff' }); var tab1 = Titanium.UI.createTab({ icon:'KS_nav_views.png', title:'Tab 1', window:win1 }); var rows1 = []; for(var i = 0; i < 50; i++) { rows1.push({ title: 'Row 1:' + i}); } var table1 = Titanium.UI.createTableView({ data: rows1, width: 'auto', height: 'auto' }); win1.add(table1); // create table view 2 var win2 = Titanium.UI.createWindow({ title:'Tab 2', backgroundColor:'#fff' }); var tab2 = Titanium.UI.createTab({ icon:'KS_nav_ui.png', title:'Tab 2', window:win2 }); var rows2 = []; for(var i = 0; i < 50; i++) { rows2.push({ title: 'Row 2:' + i}); } var table2 = Titanium.UI.createTableView({ data: rows2, width: 'auto', height: 'auto' }); win2.add(table2); // create tabgroup and tabs var tabGroup = Ti.UI.createTabGroup(); tabGroup.addTab(tab1); tabGroup.addTab(tab2); // Event handler to change tab on left/right swipe // This is where the problem comes in. // Comment out the 'swipe' listener and normal table view scroll behavior will be back tabGroup.addEventListener('swipe', function(e) { var activeTabIndex = tabGroup.tabs.indexOf(tabGroup.activeTab); if(e.direction === 'right' && activeTabIndex > 0) { tabGroup.setActiveTab(activeTabIndex - 1); } else if(e.direction === 'left' && activeTabIndex < tabGroup.tabs.length - 1) { tabGroup.setActiveTab(activeTabIndex + 1); } // Is there something missing in this event handler to have native behavior when the swipe // direction is not left or right? }); // open tab group tabGroup.open(); {code} h4. Steps to reproduce 1. Create a new mobile project (Classic Titanium) 2. Paste the test case to app.js 3. Run the sample into a device (Nexus 4) 4. Scroll down and let the tableview roll (it usually continue to scroll until momentum is lost) 5. The scroll will stop right away you stop. h4. Extra info Q&A: http://developer.appcelerator.com/question/161747/swipe-event-handler-prevents-native-table-view-scroll-behavior-on-android",3 +"TIMOB-17563","08/26/2014 22:41:50","Android: Image incorrectly sized when using windowBackground with custom theme ","h4. Problem Description There is a strange behavior when using custom theme, basically if you don't use this one: {code} @drawable/splash {code} it will fail (it shows a smaller screen/view in android) - Check Image1.png If you remove it, it will work just fine. - Check Image2.png h4. Steps to reproduce 1. Create a new mobile project (classic titanium) 2. Add this app.js: {code} var mainView = Ti.UI.createView({ layout: 'vertical', height: Ti.UI.FILL }); var textField = Ti.UI.createTextField({ top: 10, autocapitalization: Titanium.UI.TEXT_AUTOCAPITALIZATION_NONE, autocorrect: false }); mainView.add(textField); var validateButton = Ti.UI.createButton({ top: 15, left: 8, right: 8, title: 'Validate content' }); mainView.add(validateButton); validateButton.addEventListener(""click"", function () { if (validateTextFieldCommand) { validateTextFieldCommand(textField.value); } }); var win = Ti.UI.createWindow({backgroundColor:'blue'}); win.add(mainView); win.open(); {code} Add this to your mytheme.xml (inside platform->android->res->values): {code} {code} Specify in tiapp.xml which theme you going to use (excerpt): {code} {code} 3. Run it into device. h4. Actual results if you enable the windowBackground in the custom theme, the views will be smaller. h4. Extra info I attached a full testcase in the form of a project with the name viewport-3-3-0-reduced.zip. ",5 +"TIMOB-17565","08/27/2014 00:55:40","Android-L: KS Phone-> Gallery crashes when backing out of test","In KitchenSink, go to Phone -> Photo Gallery. Hit the back button, observe crash {code} 08-26 16:54:37.232: E/AndroidRuntime(2664): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.startsWith(java.lang.String)' on a null object reference 08-26 16:54:37.232: E/AndroidRuntime(2664): at org.appcelerator.titanium.io.TiFileFactory.createTitaniumFile(TiFileFactory.java:56) 08-26 16:54:37.232: E/AndroidRuntime(2664): at ti.modules.titanium.media.MediaModule.createDictForImage(MediaModule.java:823) 08-26 16:54:37.232: E/AndroidRuntime(2664): at ti.modules.titanium.media.MediaModule$1.onResult(MediaModule.java:794) 08-26 16:54:37.232: E/AndroidRuntime(2664): at org.appcelerator.titanium.util.TiActivitySupportHelper$1.onResult(TiActivitySupportHelper.java:58) 08-26 16:54:37.232: E/AndroidRuntime(2664): at org.appcelerator.titanium.util.TiActivitySupportHelper.onActivityResult(TiActivitySupportHelper.java:107) 08-26 16:54:37.232: E/AndroidRuntime(2664): at org.appcelerator.titanium.TiBaseActivity.onActivityResult(TiBaseActivity.java:632) 08-26 16:54:37.232: E/AndroidRuntime(2664): at android.app.Activity.dispatchActivityResult(Activity.java:5922) 08-26 16:54:37.232: E/AndroidRuntime(2664): at android.app.ActivityThread.deliverResults(ActivityThread.java:3422) 08-26 16:54:37.232: E/AndroidRuntime(2664): ... 10 more {code} Test should not crash ",3 +"TIMOB-18053","08/27/2014 14:05:28","Android: expose the text color for the picker","h4. Problem Description I'm not able to set the text color of the picker value. Therefore, I have to use the Android theme files to set it, but this should be exposed in the API as the default `color: '#hex'` We have tested this issue. But Android, iOS have not text color property of pickerView or pickerRow. h4. Steps to Reproduce: 1. Create classic project. 3. Paste this code in app.js file. 3. Run this code with the testing environment. 4. {code} Ti.UI.backgroundColor = 'white'; var win = Ti.UI.createWindow({ exitOnClose : true, layout : 'vertical' }); var picker = Ti.UI.createPicker({ top : 50 }); var data = []; data[0] = Ti.UI.createPickerRow({ title : 'Bananas', color:'red' }); data[1] = Ti.UI.createPickerRow({ title : 'Strawberries' }); data[2] = Ti.UI.createPickerRow({ title : 'Mangos' }); data[3] = Ti.UI.createPickerRow({ title : 'Grapes' }); picker.add(data); picker.selectionIndicator = true; win.add(picker); win.open(); {code}",3 +"TIMOB-17566","08/27/2014 23:09:17","Android: setting createHTTPClient properties autoRedirect and autoEncodeURL are ignored","h5.Description When using Ti.Network.createHTTPClient and setting the properties in the create method to false it is ignored and they default to true. The workaround is to use one of the two ways below to set the properties to false. {code} client.setAutoRedirect(false); client.setAutoEncodeUrl(false); {code} or {code} client.autoRedirect = false; client.autoEncodeUrl = false; {code} h5.Steps To Reproduce 1. Create a project and add the app.js attached 2. Build to an Android device/simulator and then tap the button h5.Actual Result The properties set to true, the URL is auto-redirected and auto-encoded, in the Studio console you should see what is attached in consoleLog.txt h5.Expected Result The properties should stay false and it should not auto-redirect or auto-encode the URL. ",2 +"TIMOB-17567","08/27/2014 23:14:08","Android: Converting a blob into a valid image does not maintain dimensions","h6.Issue description Looking for a cross-platform way to create image thumbnail files asynchronously. Titanium is able to read an image file asynchronously into a buffer and then a blob. If we assign that blob to the image property of an ImageView, it displays as I expect. However, the blob is not recognised as an image by any of the Ti.Blob.image* methods. The blob has a mime type of ""application/octet-stream"" and a height and width of 0. Meanwhile Android is able to get height and width properly. h6.Steps to reproduce # Launch sample app. You can see that the fishImage ImageView loads its image directly from a file path in its ""image"" property. # earthImage is loaded in index.js asynchronously using a file stream. Once the file contents are read completely, they are assigned to the image property of $.earthImage. # Notice, the blob you get as a result of ""earthBuffer.toBlob()"" can't be used for any other image manipulation (e.g. creating thumbnails). It doesn't have a valid height, or width on Android. E.G. {code} $.earthImage.image = earthBuffer.toBlob(); Ti.API.info( $.earthImage.image.height + ' . '+ $.earthImage.image.width + ' . '+ $.earthImage.image.mimeType); {code} h6.Android {code} 04-24 15:11:03.812: I/TiAPI(28395): 0 . 0 . application/octet-stream {code} h6.iOS {code} [INFO] 1600 . 2560 . application/octet-stream [INFO] 1600 . 2560 . application/octet-stream {code}",3 +"TIMOB-17568","08/28/2014 00:20:09","Update the classpath for android module template","The .classpath file of the Android module template is currently placed in the platform folder (Android). These dot files (.classpath, .project and .settings) are required to be in the root of the project to recognize as a valid Java project and to update the library paths. Studio will copy the dot files from Android folder to root folder. However, the classpath file has to be updated with the correct src path pointing to android/src and android/build/.apt_generated.",3 +"TIMOB-17729","08/28/2014 10:57:52","Android: Add CanceledOnTouchOutside property to Titanium.UI.Android.ProgressIndicator","i want to use loading dialog in android that is not dismissed when touching outside and use back button to cancel loading operation when using ProgressIndicator and location=""Ti.UI.Android.PROGRESS_INDICATOR_DIALOG"", it displays loading dialog just fine but when touching anywhere in screen, it dismisses the dialog. Android use CanceledOnTouchOutside = false to prevent this action. Please add CanceledOnTouchOutside or find a solution for this problem ",2 +"TIMOB-17571","08/28/2014 21:11:46","Hiding the ActionBar using a custom theme misforms app when also using a 9-patch splash screen","If you follow the guide to hide the ActionBar using a custom theme and at the same time also follow the guide to use 9-patch splash screens the application window will be small and sitting in the top left of the screen, uncovering the splash screen under it, as shown in the attached screenshot. h1. The guides Just before the 3 steps for custom themes, the introduction of the following splash-guide says you do *not* need a custom theme if you just name your 9-patch splash screen images {{background.9.png}}: - http://docs.appcelerator.com/titanium/latest/#!/guide/Icons_and_Splash_Screens-section-29004897_IconsandSplashScreens-Androidsplashscreenconsiderations The following actionbar-guide shows how to use a {{custom_theme.xml}} together with a small change in {{tiapp.xml}} to hide the action bar on all windows: - http://docs.appcelerator.com/titanium/latest/#!/guide/Android_Action_Bar-section-36735509_AndroidActionBar-HidingtheActionBar h1. The problem Both of these guides at themselves work just fine. But when you follow both of them you'll get the problem described. h1. Steps to reproduce 1. Download the attached example project 2. Build to see the expected white application window 3. Rename {{platform/android/res/_drawable}} to {{drawable}} 4. Build to see the white application window in the top left h1. Explored solutions I've tried several changes such as using {{android:windowActionBar}} instead of {{windowActionBar}} or setting the splash in a custom theme, but nothing helped. I also compared the builds after step 2 and 4 of the steps laid out to reproduce. All the (non-binary) files were 100% identical, so the error must be in the compiled JAVA and not in the generated XML themes. h1. Workaround I can't think of a (satisfying) workaround, so I hope this can be fixed soon.",3 +"TIMOB-17572","08/28/2014 22:28:38","iOS: ActivityIndicator does not reset when used in ListView","A template in a ListView includes an ActivityIndicator. The first time the activity indicator appears, its spinner works fine but the second and subsequent time it appears, the spinner does not work. Steps to reproduce: (1) Create a new Alloy project and drop the three attached files into their usual folders and run the project on an iPhone or iOS Simulator. (2) Scroll to the bottom. The ActivityIndicator appears as normal for a second, until it's replaced with more ListItems. (3) Scroll to the bottom again. Now the ActivityIndicator is sans-spinner. Every subsequent scroll will have the same results. It appears that this is because the ActivityIndicator view is not properly resetting when removed from the ListView. When I set visible=false to the ActivityIndicator before removing it from the view, the spinner works ok. Unfortunately this requires editing a ListView which is an expensive operation. You can see the workaround in action by uncommenting line 95 of the example code. Note that the word ""Loading"" (also part of the ActivityIndicator) does appear even though the spinner does not.",5 +"TIMOB-17573","08/29/2014 04:35:17","iOS: Unable to Set Multiple Cookies in Request Header","h6.IOS: Fail to Set Multiple Cookie in Request Header for Ti.Network.HTTPClient in SDK 3.3.0 h6.Reproduce and Test Case: {code:title=app.js} var sessionid = Ti.App.getSessionId(); var token = ""example_token""; var contextid = '1234567'; var endpoint = ""http://127.0.0.1:8888""; //Ti.API.info(endpoint); var loader = Titanium.Network.createHTTPClient({ onload : function(e) { Ti.API.info(""Received text: "" + this.responseText); alert(""Received text: "" + this.responseText); alert('success'); }, onerror : function(e) { Ti.API.debug(e.error); alert('error'); }, timeout : 5000 // in milliseconds }); loader.open(""GET"", endpoint); loader.setRequestHeader('Content-Type', 'application/json;charset=utf-8'); loader.setRequestHeader('User-Agent', Titanium.userAgent); loader.setRequestHeader('Cookie', 'Context='+contextid); loader.setRequestHeader('Cookie', 'sessionID='+sessionid); loader.setRequestHeader('Cookie', 'Auth_token='+token); loader.send(); {code} h6.Expect Result: Server host can get all three cookie information. For example: {code} Context=1234567; sessionID=486E0EFB-C4A1-478A-9A5B-A9EB683B310C; Auth_token=example_token {code} h6.Actual Result: Only the last cookie has been passed to server. For example: {code} Auth_token=example_token {code} It seems like the previous cookies property will be overwritten by the next when you set multiple cookies information at one request header on SDK 3.3.0.GA. N.B. Only happens in 3.3.0.GA. It works well in 3.2.3 and 3.2.1. ",5 +"TIMOB-17600","09/01/2014 09:10:46","Distribute - iTunes Store option opens Xcode Device window instead of Organizer window ","When I try to publish a project with *Distribute - Apple iTunes Store* option, Studio opens *Xcode Devices window* instead of *Xcode Organizer window.* This is more related with Xcode-6 issue. Because when I try to package the app from Studio 3.3.0 with *Xcode 6*, Same thing happens (i.e It opens *Devices Window*). This is a *regression* since Studio 3.3.0 opens Xcode Organizer window with *Archives* tab for Xcode 5.1. This is the most convenient way to proceed the packaging with Xcode. h5. Steps to Reproduce # Create a iOS project # Package to Apple iTunes Store h5. Expected Result Studio should open Xcode Organizer window with Archives tab opened. ",5 +"TIMOB-17581","09/01/2014 12:13:39","CLI: Running ""ti create --platforms"" does not prompt for the target platform to be used and creates the project successfully.","Description: Running ""ti create"" prompts the user to pick a platform for the project. Running ""ti create --platforms"" skips that step and prompts for the Project name. The issue is reproducible with CLI 3.3.0. STEPS TO REPRODUCE 1. Open a terminal window 2. Run 'ti create --platforms' 3. Type in a valid Project name and all prompted values EXPECTED RESULT The CLI should notice the missing parameters for the platform and ask for a valid input. ACTUAL RESULT CLI creates the project successfully for non of the platforms. ",5 +"TIMOB-17582","09/01/2014 13:54:54","iOS: Unable to check if a JS source file exists on iPad device","h6.Issue description Not able to check if a JS source file exists in the app. It only worked in the iOS simulator but not the ipad device. This was initially reproduced on Alloy but attached is a Classic app sample. h6.Steps to replicate 1) Please grab the sample attached ""CaseClassic2559.zip"" and launch at iOS Simulator (for Alloy, you may want to use ""Case2559.zip""). 2) Notice when compiled in the iOS ipad simulator, you will see ""I'm Ipad"". But it will show ""This is Not Ipad"" in the real ipad device. h6.Additional details Alloy 1.4.1 - iPad OS 7.0.4. Also on TiSDK 3.4.0 CI and Alloy 1.6.0-dev.",8 +"TIMOB-17585","09/01/2014 23:18:50","Android: HTTPClient: Invalid Status Codes returned in 3.3.0.GA SDK","h4. Problem Description When a GET request should be returning a status of ""301"" or ""302"", I have the 3.3.0 GA SDK returning a ""200"". Switching back to the 3.2.3 GA SDK fixes the problem. When we have tested using the following code, the status returned is ""302"" in 3.3.0.GA and ""301"" in 3.2.3.GA. h4. Steps to reproduce a) Create a simple project. b) Update this code in app.js: {code}var xhr = Titanium.Network.createHTTPClient(); xhr.autoRedirect = false; xhr.allResponseHeaders = true; // what to do if it loads xhr.onload = function(e) { Ti.API.log('Status = ' + this.getStatus()); if (this.getStatus() == 301) { Ti.API.log('Redirect to ' + this.getResponseHeader('location')); } else { Ti.API.log('This should have returned a 301 not a 200'); } }; xhr.open('GET', 'http://google.co.nz'); xhr.send();{code} c) Run this with testing environment h4. Test results In Titanium SDK: 3.3.0.GA [DEBUG]: Application booted in 125.191987 ms [INFO] : Status = 302 [INFO] : This should have returned a 301 not a 200 In Titanium SDK: 3.2.3.GA [DEBUG]: Application booted in 110.395968 ms [INFO] : Status = 301 [INFO] : Redirect to http://www.google.co.nz/ ",5 +"TIMOB-17589","09/02/2014 05:23:31","CLI: Running ""ti create --url"" does not prompt for your company/personal URL and creates the project successfully.","Description: Running ""ti create"" prompts the user for your company/personal URL along with other inputs. Running ""ti create --url"" skips that step and creates project successfully. The issue is reproducible with CLI 3.3.0. STEPS TO REPRODUCE 1. Open a terminal window 2. Run 'ti create --url' 3. Type in a valid Project name and all prompted values EXPECTED RESULT The CLI should notice the missing parameters for the url and ask for a valid input. ACTUAL RESULT The CLI creates the project successfully without prompting for the URL value.",5 +"TIMOB-17590","09/02/2014 05:38:38","CLI: Running ""ti create --log-level” prompts for minimum log level value but giving an error message as well.","Description: Running ""ti create --log-level"" prompts the user for log level value along with the error message. The issue is reproducible with CLI 3.3.0. STEPS TO REPRODUCE 1. Open a terminal window 2. Run 'ti create --log-level' 3. Type in a valid Project name and all prompted values EXPECTED RESULT The CLI should prompt the user for log level value without giving the error message. ACTUAL RESULT {code} KAGRAWAL-MBP:Appcelerator_Studio_Workspace kagrawal$ ti create --log-level Titanium Command-Line Interface, CLI version 3.4.0-dev, Titanium SDK version 3.4.0.v20140829184521 Copyright (c) 2012-2014, Appcelerator, Inc. All Rights Reserved. Please report bugs to http://jira.appcelerator.org/ What type of project would you like to create? 1) app 2) module Select a type by number or name [app]: 1 Target platform (all|iphone|ipad|mobileweb|android|blackberry) [all]: ipad Project name: example3 App ID: a.b Your company/personal URL: Directory to place project [.]: [ERROR] Invalid ""--log-level"" value """" Please select a valid log-level value: 1) trace 2) debug 3) info 4) warn 5) error Select a value by number or name: {code}",5 +"TIMOB-17594","09/02/2014 11:00:01","CLI: Some iOS build options with ""ti build -p iOS"" command is not prompting for input value when run without values","Description: Running ""ti build -p iOS -T simulator -D"" command doesn't prompt the user for the deployment type value and build project with its default value. Running ""ti build -p iOS -T"" command doesn't prompt the user for the target value and build project with its default value.. Running ""ti build -p iOS -T simulator -S"" command doesn't prompt the user for the iOS simulator version and build project with its default value. The issue is not reproducible with CLI 3.3.0 and Titanium SDK version 3.3.0.GA. With CLI 3.3.0, it prompts for the input value based on the option specified with ""ti build -p iOS"" command. Hence marked as a regression. STEPS TO REPRODUCE 1. Open a terminal window 2. Create a project and you have to ""cd"" to this project to be able to run command ""build"" 3. Run ""ti build -p iOS -T simulator -D"" command. 4. Run ""ti build -p iOS -T"" command. 5. Run ""ti build -p iOS -T simulator -S"" command. EXPECTED RESULT The CLI should prompt for the input value from user based on the iOS build option given with the command. ACTUAL RESULT The CLI is not prompting for the input value for any of the mentioned options and building the project.",5 +"TIMOB-17603","09/02/2014 22:07:14","iOS8: Keyboard is deformed on iPhone","h5. Description There is a visual deformation of a keyboard, when focus in a text field. h5. To reproduce 1. Run iOS Keyboard. (titanium_mobile_tests_internal/FeatureTest/iOSKeyboard) or create the default app and replace app.js {code} var win = Ti.UI.createWindow({ backgroundColor:'blue', orientationModes:[Ti.UI.PORTRAIT, Ti.UI.LANDSCAPE_LEFT, Ti.UI.LANDSCAPE_RIGHT] }); var textField = Ti.UI.createTextField({ backgroundColor:'white', value:'TextField', top:'40%', bottom:'40%', left:'10%', right:'10%', textAlign:Ti.UI.TEXT_ALIGNMENT_CENTER }); win.add(textField); var button = Ti.UI.createButton({ title:'Open New Window', backgroundColor:'white', top:'10%', left:'10%', right:'10%', height:'20%', textAlign:Ti.UI.TEXT_ALIGNMENT_CENTER }); var subWin = Ti.UI.createWindow({ backgroundColor:'green' }); var subButton = Ti.UI.createButton({ title:'Close', top:'40%', bottom:'40%', left:'20%', right:'20%' }); button.addEventListener('click', function(){ subWin.open(); }); win.add(button); subWin.add(subButton); subButton.addEventListener('click', function(){ subWin.close(); }); win.open(); {code} 2. Click the text field. h5. Actual result The keyboard is deformed h5. Expected result 2: Not a distorted keyboard, which should not disappear and rotate with the device.",0 +"TIMOB-17604","09/02/2014 23:54:18","iOS: CLI: Building for all IOS devices throws ""ReferenceError: i is not defined""","h5.Description: 1. Build an app for multiple IOS devices at the same time(I did on 2 devices) using the ""Run -> On all IOS devices"" option in studio. or 1. Build an app for multiple IOS devices at the same time(I did on 2 devices) using the ""all"" flag for device id in CLI. h5. Actual result: 1. We get the error below & the build fails: {code} /usr/local/lib/node_modules/titanium/node_modules/longjohn/dist/longjohn.js:185 throw e; ^ ReferenceError: i is not defined at iOSBuilder. (/Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140829184521/iphone/cli/commands/_build.js:1112:79) at Array.forEach (native) at iOSBuilder.validate (/Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140829184521/iphone/cli/commands/_build.js:1110:32) at exports.validatePlatformOptions (/Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140829184521/node_modules/titanium-sdk/lib/titanium.js:596:69) at /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140829184521/cli/commands/build.js:206:19 at callCommandValidate (/usr/local/lib/node_modules/titanium/lib/cli.js:858:7) at /usr/local/lib/node_modules/titanium/node_modules/async/lib/async.js:551:21 at /usr/local/lib/node_modules/titanium/node_modules/async/lib/async.js:227:13 at iterate (/usr/local/lib/node_modules/titanium/node_modules/async/lib/async.js:134:13) at /usr/local/lib/node_modules/titanium/node_modules/async/lib/async.js:145:25 --------------------------------------------- at exports.execFile (child_process.js:702:9) at exports.exec (child_process.js:589:18) at /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140829184521/node_modules/node-appc/lib/environ.js:251:3 at /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140829184521/node_modules/node-appc/node_modules/async/lib/async.js:254:17 at /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140829184521/node_modules/node-appc/node_modules/async/lib/async.js:157:25 at /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140829184521/node_modules/node-appc/node_modules/async/lib/async.js:251:21 at /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140829184521/node_modules/node-appc/node_modules/async/lib/async.js:615:34 at /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140829184521/node_modules/node-appc/lib/environ.js:218:7 {code} h5. Expected Result: 1. The app should build successfully on all IOS the devices attached",13 +"TIMOB-17605","09/03/2014 02:06:08","CLI: CLI throws an error while reading platform input value given for “ti build -p” or “ti build —platform” commands.","Description: Running ""ti build -p"" prompts the user to pick a platform but gives an error while reading the valid input value. Running ""ti build --platform"" prompts the user to pick a platform but gives an error while reading the valid provided value. The same error is thrown with CLI 3.3.0 Titanium SDK 3.3.0.GA. STEPS TO REPRODUCE 1. Open a terminal window 2. Create a project and you have to ""cd"" to this project to be able to run command ""build"" 3. Run ""ti build -p"" command. 4. Run ""ti build --platform"" command. EXPECTED RESULT 3. CLI should read the user provided platform value successfully and then build the project. 4. CLI should read the user provided platform value successfully and then build the project. ACTUAL RESULT CLI throws an error while reading the user provided platform value and hence unable to build project successfully. {code} KAGRAWAL-MBP:name kagrawal$ ti build Titanium Command-Line Interface, CLI version 3.4.0-dev, Titanium SDK version 3.4.0.v20140829184521 Copyright (c) 2012-2014, Appcelerator, Inc. All Rights Reserved. Please report bugs to http://jira.appcelerator.org/ Target platform to build for: 1) android 2) blackberry 3) ios 4) mobileweb Enter # or platform name: KAGRAWAL-MBP:name kagrawal$ clear KAGRAWAL-MBP:name kagrawal$ ti build -p Titanium Command-Line Interface, CLI version 3.4.0-dev, Titanium SDK version 3.4.0.v20140829184521 Copyright (c) 2012-2014, Appcelerator, Inc. All Rights Reserved. Please report bugs to http://jira.appcelerator.org/ Target platform to build for: 1) android 2) blackberry 3) ios 4) mobileweb Enter # or platform name: ios [ERROR] Invalid platform """" Did you mean this? android blackberry ios mobileweb Available platforms for SDK version 3.4.0.v20140829184521: android blackberry ios mobileweb KAGRAWAL-MBP:name kagrawal$ ti build --platform Titanium Command-Line Interface, CLI version 3.4.0-dev, Titanium SDK version 3.4.0.v20140829184521 Copyright (c) 2012-2014, Appcelerator, Inc. All Rights Reserved. Please report bugs to http://jira.appcelerator.org/ Target platform to build for: 1) android 2) blackberry 3) ios 4) mobileweb Enter # or platform name: 3 [ERROR] Invalid platform """" Did you mean this? android blackberry ios mobileweb Available platforms for SDK version 3.4.0.v20140829184521: android blackberry ios mobileweb {code}",3 +"TIMOB-17613","09/03/2014 16:57:15","Unable to execute javascript code using evalJS on Android with SDK 3.3.0.GA","After upgrading to the latest Titanium SDK (3.3.0.GA), we are not able to invoke Javascript functions using evalJS on Android. We are developing the application for about 2-3 years now, and we can confirm that the code worked prior upgrading to 3.3.0. Moreover, the iOS version of our app does not have this problem even after upgrading the SDK. Our application is quite complex, and one of the core features is the integration with web applications provided by our platform. In order this integration to work, we heavily rely on invoking Javascript functions in the webView context in order to retrieve some data, or identify what steps should be taken. Since we are not allowed to share any productive code, I have prepared a code snippet that presents the issue: {code:title=app.js|borderStyle=solid} (function() { var win = Ti.UI.createWindow(); var webView = Ti.UI.createWebView({ url : 'test.html' }); var evalJSFunc = """" + ""(function() {"" + ""var result = '{';"" + ""var d = document.getElementById('myDiv');"" + ""if (d && d.children) {"" + ""var childrenLength = d.children.length;"" + ""var delimiter = '';"" + ""for (var i = 0; i < childrenLength; i++) {"" + ""var child = d.children[i];"" + ""result = result + delimiter + child.name + ':' + child.value;"" + ""delimiter = ',';"" + ""}"" + ""}"" + ""result = result + '}';"" + ""return result + '}';"" + ""})();""; webView.addEventListener('load', function() { var result = webView.evalJS(evalJSFunc); alert(result); }); win.add(webView); win.open(); })(); {code} And this is the sample HTML file (note that the Javascript function is the same as the one we try to invoke using evalJS in app.js; it is left just for reference without invoking it): {code:title=test.html|borderStyle=solid}
{code} When executing the above we get the following error: {code} [INFO] : I/TiWebChromeClient.console: (main) [12259,12259] Uncaught SyntaxError: Unexpected token var (1:file:///android_asset/Resources/test.html) {code} After some time (if we wait enough) we get the attached screenshot in Genymotion simulator (no clue where this comes from). Until now, the workaround for us was to rollback to the previous Titanium SDK (3.2.3.GA). Now, given the fact that Apple will also release the new iOS8 soon, we expect that new Titanium SDK would be rolled out as well, one that we must upgrade to, since iOS8 is a must for us. However, this Android issue is also a blocker, putting us in deadlock situation. I have noticed that there are few other JIRA issues similar to ours. https://jira.appcelerator.org/browse/TIMOB-15896 https://jira.appcelerator.org/browse/TC-4427 However, I'm not sure if the cause is really the same (one of the issues says that this happens on 3.2.0 with API17 but we are experiencing it on 3.3.0 with API16). In either case, we would highly appreciate if this issue is treated with higher priority and resolved as quick as possible. ",3 +"TIMOB-17610","09/03/2014 19:26:26","CLI: Xcode 6-beta - Installing to iOS simulator will fail to build on first brand new launch of the simulator","*Details:* Installing to iOS simulator will fail to build on first brand new launch of the simulator if you are using Xcode 6-betaX. However, if you reinstall the same app again to the *same simulator OS* (regardless of phone form factor), then app will install and launch without any issues. *Note:* - This was reproducible from CLI. *Possible Steps to Reproduce:* 1. Switch to Xcode 6-beta7 2. Create a Titanium or Alloy app 3. Install app to simulator 8.0, 7.1.0, or 7.0.3 *Actual:* If this is the first time launching your simulator, app will fail to build (see attachment). *Expected:* Should be able to install app to simulators without any issues.",5 +"TIMOB-17612","09/03/2014 19:43:36","Titanium Android: HTTPClient doesn't decompress gzipped data for error responses","Gzipped data isn't decompressed if the response status code is >=400 (https://github.com/appcelerator/titanium_mobile/blob/master/android/modules/network/src/java/ti/modules/titanium/network/TiHTTPClient.java#L273-L275) Whereas for response status codes <400, the response is properly decompressed. (https://github.com/appcelerator/titanium_mobile/blob/master/android/modules/network/src/java/ti/modules/titanium/network/TiHTTPClient.java#L285)",5 +"TIMOB-17641","09/04/2014 00:30:39","iOS8: Add UIApplicationOpenSettingsURLString Support","Add a property to return the application setting URL on iOS 8 so that we can use Ti.Platform.openURL to launch directly into that screen. For example: {code} var settingsURL = Ti.App.iOS.ApplicationOpenSettingsURL; if(settingsURL != undefined) { if(Ti.Platform.canOpenURL(settingsURL)) { Ti.Platform.openURL(settingsURL); } else { alert('cannot open URL'); } } {code}",2 +"TIMOB-17640","09/04/2014 00:34:06","iOS8: Add isRegisteredForRemoteNotifications to determine whether the app is currently registered for remote notifications.","Returns a Boolean indicating whether the app is currently registered for remote notifications. Add support for isRegisteredForRemoteNotifications so that the developer can check if the user has authorized notifications. {code} var hasAuthorized = Ti.App.iOS.isRegisteredForRemoteNotifications(); if(hasAuthorized) { Ti.API.info(""User has already authorized""); } else { Ti.API.info(""User needs to authorize, maybe ask them before the iOS rights dialog pops up""); } {code}",3 +"TIMOB-17619","09/04/2014 12:51:31","iOS: The view flickers on orientation change when its container has a layout property","The view flickers on device orientation change when the container window / view has a layout property. The flicker does not show on first orientation change but then on flickers on each change in orientation. This is a Regression as the views did not flicker with SDK 3.3.0.GA Steps to Reproduce: 1. Create an app with code below and launch it on a device 2. Change the orientation of the device more than once. Actual Result: The blue view can be seen flickering and it shows the white background behind whenever the device orientation is changed. Expected Result: The views should not flicker. {code} var win = Titanium.UI.createWindow({ title:'Tab 1', backgroundColor:'#fff', layout:'horizontal' }); var view = Ti.UI.createView({ width : 100, height : 200, backgroundColor : 'blue' }); win.add(view); var view2 = Ti.UI.createLabel({ width : Ti.UI.FILL, height : 200, backgroundColor : 'green', textAlign : 'right', text : 'TEST' }); win.add(view2); win.open(); {code}",13 +"TIMOB-17624","09/04/2014 22:36:39","iOS8: Unable to badge an application icon","h5.Description In KitchenSink->Phone->App Badge when trying to set the App Badge the console prints out the statement below. The App Badge property can't be set by using either the set method or changing the property because of this. The attached app.js is a test case which can be used to reproduce. *Notes* This is a regression as the test case can be used to set the App Badge on both an iOS7 and iOS6 device. {code} [INFO] : Attempting to badge the application icon but haven't received permission from the user to badge the application {code} h5.Steps To Reproduce 1. Add the attached app.js to a project and build to and iOS8 Device/Simulator. 2. Tap the either of the Set App Badge labels h5.Actual Result The App Badge is not set and the console prints out the above statement. h5.Expected Result The App Badge should be set to 20. ",2 +"TIMOB-17631","09/05/2014 19:41:19","iOS8: Setting document in a WebView by URL does not work","h5.Description In KitchenSink->XHR->File Download the Set Web View(url) option does not display the file after it has been downloaded. If you use Set Web View (data) then the file will display fine. *Notes* This works in iOS7. h5.Steps To Reproduce 1. Add the attached app.js to an existing project 2. Tap Set Web View (url) h5.Actual Result The file will not show but the web view will be present as shown by the label 'The webview will hide me!' being hidden h5.Expected Result The file should show ",13 +"TIMOB-17634","09/05/2014 22:19:00","iOS8: Portrait size window does not resize after rotation to landscape ","h5. To reproduce app.js {code} // this sets the background color of the master UIView (when there are no windows/tab groups on it) Titanium.UI.setBackgroundColor('#000'); // create tab group var tabGroup = Titanium.UI.createTabGroup(); // // create base UI tab and root window // var win1 = Titanium.UI.createWindow({ title:'Tab 1', backgroundColor:'#fff', navBarHidden: false, tabBarHidden: true }); var tab1 = Titanium.UI.createTab({ icon:'KS_nav_views.png', title:'Tab 1', window:win1 }); var b1 = Titanium.UI.createButton({ title:'Win 2', height:40, width:200, top:30 }); win1.add(b1); b1.addEventListener('click', function(e) { var w = Titanium.UI.createWindow({ fullscreen:true, //url:'new_win.js', barColor:'#111', orientationModes:[Titanium.UI.LANDSCAPE_LEFT] }); tab1.open(w); }); tabGroup.addTab(tab1); // open tab group tabGroup.open(); {code} 1. Click Win2 2. Return to Tab1 h5. Actual result Portrait size window in landscape mode Note: it is a regression against iOS 7.1",8 +"TIMOB-17647","09/07/2014 02:17:07","iOS8: Access to currentUserNotificationSettings & didRegisterUserNotificationSettings","iOS 8 has implemented permission dialogs and management around local notifications. A user can ""not allow"" or adjust the local notifications they allow to be registered in this app. To address this, it would be nice to have the following: 1. A method that returns the types currently registered and allow by the app's [UIApplication sharedApplication] currentUserNotificationSettings 2. An event which fires with the UIUserNotificationSettings provided to the app delegate didRegisterUserNotificationSettings method An approach on how to do this is available in this gist https://gist.github.com/benbahrenburg/7b65d074c728cba0de4c PR available here https://github.com/appcelerator/titanium_mobile/pull/6025",13 +"TIMOB-17638","09/07/2014 23:38:37","iOS8: Support New Geo Permissions","Apple has changed how Location Services Permissions are handled in iOS8. Because of this if iOS8 is the deployment target the Ti SDK Geo functions will stop working. Approach on now to fix : https://gist.github.com/benbahrenburg/c4c992c8c61d197510ea PR : https://github.com/appcelerator/titanium_mobile/pull/6028",8 +"TIMOB-17636","09/08/2014 04:55:55","CLI: Should offer to create the Application Support/Titanium (or other user designated) folder if it does not exist.","h4. Problem CLI sdk setup fails if Titanium folder does not exist h4. Expectation CLI should create the Titanium folder in Application Support if it does not exist {code} Where do you want to go? 7 ────────────────┤ Titanium SDK Settings ├───────────────── Path to find and install Titanium SDKs: [/Users/stephenfeather/Library/Application Support/Titanium]: [ERROR] Invalid directory {code}",3 +"TIMOB-17639","09/08/2014 10:27:01","iOS8: Ti.UI.OptionDialog.show() doesn't work without view-property on iPad","*Problem* An {{Ti.UI.OptionDialog}} doesn't show on iPads running iOS8, giving the following (quiet) error in the device logs: {code} [DEBUG] 2014-09-08 11:25:30.767 od[8034:231901] Unable to simultaneously satisfy constraints. [DEBUG] Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints) [DEBUG] ( [DEBUG] """", [DEBUG] ""= UIView:0x7ba9f730.width>"", [DEBUG] """", [DEBUG] """" [DEBUG] ) [DEBUG] [DEBUG] Will attempt to recover by breaking constraint [DEBUG] [DEBUG] [DEBUG] Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger. [DEBUG] The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in may also be helpful. [DEBUG] 2014-09-08 11:25:30.768 od[8034:231901] Unable to simultaneously satisfy constraints. [DEBUG] Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints) [DEBUG] ( [DEBUG] """", [DEBUG] """", [DEBUG] ""= UIView:0x7ba9f730.width>"", [DEBUG] """", [DEBUG] """" [DEBUG] ) [DEBUG] [DEBUG] Will attempt to recover by breaking constraint [DEBUG] [DEBUG] [DEBUG] Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger. [DEBUG] The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in may also be helpful. [DEBUG] 2014-09-08 11:25:30.770 od[8034:231901] Unable to simultaneously satisfy constraints. [DEBUG] Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints) [DEBUG] ( [DEBUG] """", [DEBUG] """", [DEBUG] ""= UIView:0x7ba9f730.width>"", [DEBUG] """", [DEBUG] """" [DEBUG] ) [DEBUG] [DEBUG] Will attempt to recover by breaking constraint [DEBUG] [DEBUG] [DEBUG] Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger. [DEBUG] The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in may also be helpful. [DEBUG] 2014-09-08 11:25:30.771 od[8034:231901] Unable to simultaneously satisfy constraints. [DEBUG] Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints) [DEBUG] ( [DEBUG] ""=44)]>"", [DEBUG] """", [DEBUG] """", [DEBUG] """", [DEBUG] """", [DEBUG] """", [DEBUG] """", [DEBUG] """" [DEBUG] ) [DEBUG] [DEBUG] Will attempt to recover by breaking constraint [DEBUG] =44)]> [DEBUG] [DEBUG] Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger. [DEBUG] The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in may also be helpful. [DEBUG] 2014-09-08 11:25:30.772 od[8034:231901] Unable to simultaneously satisfy constraints. [DEBUG] Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints) [DEBUG] ( [DEBUG] ""=44)]>"", [DEBUG] """", [DEBUG] """", [DEBUG] """", [DEBUG] """" [DEBUG] ) [DEBUG] [DEBUG] Will attempt to recover by breaking constraint [DEBUG] =44)]> [DEBUG] [DEBUG] Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger. [DEBUG] The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in may also be helpful. {code} *Steps to reproduce* With the following combinations, build and run the test case and click on the window to open the dialog. - SDK 3.4 / iOS8 / iPhone: OK - SDK 3.4 / iOS8 / iPad: *Error* - SDK 3.3 / iOS7.1 / iPhone: OK - SDK 3.3 / iOS7.1 / iPad: OK *Test case* {code} var win = Ti.UI.createWindow({ backgroundColor: 'white' }); win.addEventListener('click', function(e) { Ti.UI.createOptionDialog({ options: ['a', 'b'] }).show(); }); win.open(); {code}",3 +"TIMOB-17961","09/08/2014 17:36:54","TableView - first section doesn't scroll when doing pull to refresh","To see this issue, run this code: {code} var win = Ti.UI.createWindow({ top: 20 }); function formatDate() { var date = new Date(); var datestr = date.getMonth()+'/'+date.getDate()+'/'+date.getFullYear(); if (date.getHours()>=12) { datestr+=' '+(date.getHours()==12 ? date.getHours() : date.getHours()-12)+':'+date.getMinutes()+' PM'; } else { datestr+=' '+date.getHours()+':'+date.getMinutes()+' AM'; } return datestr; } var section1 = Ti.UI.createTableViewSection({ headerTitle:'Header 1' }); for (var i=0; i < 10; i++) { section1.add(Ti.UI.createTableViewRow({ title:'Row '+i })); } var section2 = Ti.UI.createTableViewSection({ headerTitle:'Header 2' }); for (var i=4; i < 10; i++) { section2.add(Ti.UI.createTableViewRow({ title:'Row '+i })); } var lastRow = 4; var tableView = Ti.UI.createTableView({ data: [ section1, section2 ] }); win.add(tableView); var border = Ti.UI.createView({ backgroundColor:""#576c89"", height:2, bottom:0 }); var tableHeader = Ti.UI.createView({ backgroundColor:""#e2e7ed"", width:320, height:60 }); // fake it til ya make it.. create a 2 pixel // bottom border tableHeader.add(border); var arrow = Ti.UI.createView({ backgroundImage:""/images/whiteArrow.png"", width:23, height:60, bottom:10, left:20 }); var statusLabel = Ti.UI.createLabel({ text:""Pull to reload"", left:55, width:200, bottom:30, height:""auto"", color:""#576c89"", textAlign:""center"", font:{fontSize:13,fontWeight:""bold""}, shadowColor:""#999"", shadowOffset:{x:0,y:1} }); var lastUpdatedLabel = Ti.UI.createLabel({ text:""Last Updated: ""+formatDate(), left:55, width:200, bottom:15, height:""auto"", color:""#576c89"", textAlign:""center"", font:{fontSize:12}, shadowColor:""#999"", shadowOffset:{x:0,y:1} }); var actInd = Titanium.UI.createActivityIndicator({ left:20, bottom:13, width:30, height:30 }); tableHeader.add(arrow); tableHeader.add(statusLabel); tableHeader.add(lastUpdatedLabel); tableHeader.add(actInd); tableView.headerPullView = tableHeader; var pulling = false; var reloading = false; function beginReloading() { // just mock out the reload setTimeout(endReloading,2000); } function endReloading() { // simulate loading for (var c=lastRow;c -65.0 && offset < 0) && !reloading ) { pulling = false; var t = Ti.UI.create2DMatrix(); arrow.animate({transform:t,duration:180}); statusLabel.text = ""Pull down to refresh...""; } }); var event1 = 'dragEnd'; if (Ti.version >= '3.0.0') { event1 = 'dragend'; } tableView.addEventListener(event1,function(e) { if (pulling && !reloading) { reloading = true; pulling = false; arrow.hide(); actInd.show(); statusLabel.text = ""Reloading...""; tableView.setContentInsets({top:60},{animated:true}); arrow.transform=Ti.UI.create2DMatrix(); beginReloading(); } }); win.open(); {code} Pull down table view so loading starts. Then, try to scroll table view. You should see that rows are scrolling, but first section view stays fixed (other seems fine).",1 +"TIMOB-17642","09/08/2014 18:17:45","iOS8: LANDSCAPE_RIGHT image is cut off and is not centered","h5. To reproduce Run the following test in portrait mode app.js {code} var win = Ti.UI.createWindow({ backgroundColor:'white' }); var img = Ti.UI.createImageView({image:'grouch.jpg'}); win.add(img); win.orientationModes = [ Ti.UI.LANDSCAPE_RIGHT ]; win.open(); {code} h5. Actual result Please, refer to the screen capture",8 +"TIMOB-17644","09/08/2014 18:34:45","Constant permission requests every time app is compiled to device using Yosemite ","Each time I compile an app using Ti SDK 3.4 and target a physical device I am asked to provide my Mac credentials before the process will place the app on the device. This occurs after the ""image optimisation"" console output and before any mention of the app being transferred to the device. The device is an iPhone 5 running iOS8b5. The dialog box context is as follows; OS X wants to make changes. Type an administrator's name and password to allow this. OS X wants to use the ""System"" keychain. The only two buttons offered are 'Deny' & 'Allow'. There is no option to always allow. Provided the correct details are entered the app will successfully transfer to the device and does not appear to suffer any issues directly related to the security dialog.",8 +"TIMOB-17645","09/08/2014 19:13:55","iOS8: First launch - unexpected layout for Ti.UI.Portrait","When launching app in a LANDSCAPE_RIGHT mode, the image layout is wrong. Rotating device to PORTRAIT results in image size reduction. It happens only on first launch. Killing the app and launching it again will result in an expected layout. app.js {code} var win = Ti.UI.createWindow({ backgroundColor:'white' }); var img = Ti.UI.createImageView({image:'grouch.jpg'}); win.add(img); win.orientationModes = [ Ti.UI.PORTRAIT, Ti.UI.UPSIDE_PORTRAIT ]; win.open(); {code} ",8 +"TIMOB-17646","09/08/2014 19:25:01","iOS8: Popover: The app does not change orientation when popover is visible","h5. Description: 1. Replace the code in app.js with the code below: {code} var win = Titanium.UI.createWindow(); win.orientationModes = [ Titanium.UI.PORTRAIT, Titanium.UI.UPSIDE_PORTRAIT, Titanium.UI.LANDSCAPE_LEFT, Titanium.UI.LANDSCAPE_RIGHT, ]; var b1 = Titanium.UI.createButton({ title:'Show Gallery', width:200, height:40, top:40 }); b1.addEventListener('click', function() { Titanium.Media.openPhotoGallery({ success:function(event) { Ti.API.debug('Success!'); }, cancel:function() { }, allowEditing:true }); }); win.add(b1); win.open(); {code} 2. Build & run the app on Ipad/Ipad mini (I had I pad mini). 3. Tap the show Gallery button. 4. With the popover visible change the device orientation to landscape or any other orientation. h5. Actual Result: 1. The orientation does not change. 2. Close the popover & change the orientation of the device, you will see that the orientation now changes. NOTE: The orientation changes as expected for ipad(mini in my case) devices with iOS 7.0.3 & iOS 6.1.3 h5. Expected Result: 1. The orientation should change when the popover is visible",5 +"TIMOB-17648","09/08/2014 21:53:49","iOS8: iPad Alert dialog does not consider window orientation modes","h2. Description We have modal window and a button. when user clicks on the button alert pops up. The app is supposed to have only portrait orientation which is set in tiApp.xml file. When alert pops up, the device supports orientation change. h2. Testcase Step to reproduce: 1.Tap on the button in the main window,which opens modal window. 2.Tap on the button in modal window that brings up alert dialog. 3.Try rotating the device and orientation is supported {code} //app.js var win = Ti.UI.createWindow({ backgroundColor : '#fff', orientationModes : [Ti.UI.PORTRAIT] //to be sure }); var clickMeBtn = Ti.UI.createButton({ title : 'Click to open modal window' }); var cancelBtn = Ti.UI.createButton({ title : 'cancel' }); var modalWin = Ti.UI.createWindow({ backgroundColor : '#bbb', modal : true, orientationModes : [Ti.UI.PORTRAIT] //to be extra double sure }); var modalButton = Ti.UI.createButton({ title : 'Click to test Orientation' }); modalWin.add(modalButton); modalWin.setLeftNavButton(cancelBtn); win.add(clickMeBtn); clickMeBtn.addEventListener('click',function(_event){ modalWin.open(); }); modalButton.addEventListener('click', function(e) { var dialog = Ti.UI.createAlertDialog({ message: 'Rotate device to see the orientaion change', ok: 'Okay', title: 'File Deleted' }).show(); //alert('Rotate device to see the orientaion change'); }); cancelBtn.addEventListener('click', function(e){ modalWin.close(); }); win.open(); {code} In tiapp.xml {code} Ti.UI.PORTRAIT Ti.UI.PORTRAIT {code}",5 +"TIMOB-17649","09/08/2014 22:22:53","CLI: Xcode 6 is not hidden from ""ti info"" with TiSDK 3.3.0 and older","When running {{ti info -t ios --sdk 3.3.0.GA}} on a machine that has Xcode 6 or newer installed, it doesn't properly remove Xcode 6 from the detected Xcodes. Note: it does remove Xcode 6 from the build command's perspective.",8 +"TIMOB-17651","09/09/2014 01:03:35","CLI: Running ""ti build -p iOS --ios-version 7.1"" command gives an error as invalid value even if Xcode 5.1.1 is installed on the test machine.","Description: The test machine is having installation for Xcode 5.1.1 and Xcode 6 beta 7 in applications. Running ""ti build -p iOS --ios-version 7.1"" command gives error message as invalid value and prompt the user with iOS SDK version 8.0 option only as a valid value. This is a regression. With CLI 3.3.0 and Titanium SDK 3.3.0.GA, I am able to choose the installed iOS SDK version. STEPS TO REPRODUCE 1. Open a terminal window 2. Create a project and you have to ""cd"" to this project to be able to run command ""build"". 3.Run ""ti build -p iOS --ios-version 7.1"" command. EXPECTED RESULT 3.Project should build successfully with IOS SDK Version 7.1 and respective Xcode. ACTUAL RESULT 3. CLI gives an error message for IOS SDK 7.1 as invalid value.It gives IOS SDK 8.0 only as a valid value for the latest CLI and Titanium SDK. KAGRAWAL-MBP:apple kagrawal$ ti build -p ios --ios-version 7.1 Titanium Command-Line Interface, CLI version 3.4.0-beta, Titanium SDK version 3.4.0.v20140908144913 Copyright (c) 2012-2014, Appcelerator, Inc. All Rights Reserved. Please report bugs to http://jira.appcelerator.org/ [ERROR] Invalid ""--ios-version"" value ""7.1"" Which iOS SDK version would you like to build with? 1) 8.0 Select an iOS SDK version by number or name: ",5 +"TIMOB-17653","09/09/2014 06:21:55","iOS: Option Dialog shown truncated on orientation change when project resources don't have Default-568h@2x.png file","For a project that does not have the file Default-568h@2x.png, required for 4"" screen iPhone, in the resources then the option dialog truncates on orientation change. This is a regression as this issue did not occur with SDK 3.3.0. Steps to Reproduce: 1. Create a new project 2. Delete the file 'Default-568h@2x.png' from Resources > iPhone folder of the project 3. Replace the app.js with the code below 4. Run the app on an iOS device (a 4"" screen device) in portrait mode 5. In the app, click on button 'here'. the option dialog is shown 6. Rotate the device to landscape orientation Actual Result: The option dialog is shown truncated. Refer to attached screenshot {code} var win = Titanium.UI.createWindow({ backgroundColor : 'white' }); var dialog = Titanium.UI.createOptionDialog({     title: 'Hello',     options: ['Option 1','Option 2'],     cancel:1 });   var btn = Ti.UI.createButton({title:'here'});   btn.addEventListener('click', function(){     dialog.show(); });   win.add(btn); win.open(); {code}",2 +"TIMOB-17654","09/09/2014 09:12:08","CLI: Running ""ti build -p iOS -T device --developer-name --pp-uuid --no-prompt"" should give an error for invalid --pp-uuid.","Description: The iOS developer certificate default value is set with latest CLI and Titanium SDK. Running ""ti build -p iOS -T device --developer-name --pp-uuid --no-prompt"" should give error for invalid provisioning profile value. This is a regression. With CLI 3.3.0 and Titanium SDK ,the same command shows the below error. KAGRAWAL-MBP:apple kagrawal$ ti build -p ios -T device --developer-name --pp-uuid --no-prompt Titanium Command-Line Interface, CLI version 3.3.0, Titanium SDK version 3.3.0.GA Copyright (c) 2012-2014, Appcelerator, Inc. All Rights Reserved. Please report bugs to http://jira.appcelerator.org/ [ERROR] Invalid ""--developer-name"" value """" [ERROR] Invalid ""--pp-uuid"" value """" STEPS TO REPRODUCE 1. Open a terminal window 2. Create a project and you have to ""cd"" to this project to be able to run command ""build"". 3. Run ""ti build -p iOS -T device --developer-name --pp-uuid --no-prompt"" command. EXPECTED RESULT 3. The CLI should give error message for invalid provisioning profile value and does not build the application. [ERROR] Invalid ""--pp-uuid"" value """" ACTUAL RESULT 3.The CLI does not give any error message to user and does not build the application. {code} KAGRAWAL-MBP:apple kagrawal$ ti build -p ios -T device --developer-name --pp-uuid --no-prompt Titanium Command-Line Interface, CLI version 3.4.0-beta, Titanium SDK version 3.4.0.v20140908164913 Copyright (c) 2012-2014, Appcelerator, Inc. All Rights Reserved. Please report bugs to http://jira.appcelerator.org/ For help, run: titanium help build {code} ",5 +"TIMOB-17657","09/09/2014 11:01:56","iOS8: Map in a webview does not load","A Map inside a webview does not load on iOS 8 device. The issue does not occur on iOS 7. Steps to Reproduce: 1. Run the app with the code below Actual Result: The Map contents do not load. It shows the zoom in and zoom out button but the map remains blank. Also it does not prompt for permissions to use location services, as it does on iOS 7. Expected Result: The map on the webview should load successfully {code} var _window = Ti.UI.createWindow({ top : '20dp', width : Ti.UI.FILL, height : Ti.UI.FILL }); _window.add(Ti.UI.createWebView({ width : Ti.UI.FILL, height : Ti.UI.FILL, url : 'http://leafletjs.com/examples/mobile-example.html' //url: 'https://maps.google.com' })); _window.open(); {code} ",3 +"TIMOB-17660","09/09/2014 14:49:11","iOS8: OptionDialog doesn't work in a Popover","This issue is probably related somehow to TIMOB-17639. *Problem* If you want to show an {{Ti.UI.OptionDialog}} in a {{Ti.UI.iPad.Popover}} it won't show - or even crash if you pass a {{view}} property. *Reproducing* Build and run the test case on the next 2 configurations to see it crash. * iOS 7.1 using 3.3.0.GA: Works * iOS 8.0 using 3.4.0-beta: *Fails* Uncomment line 31 and repeat to see it fail without crash. *Test case* {code} var win = Ti.UI.createWindow({ backgroundColor: 'white' }); var btn = Ti.UI.createButton({ title: 'Click me' }); btn.addEventListener('click', function(e) { var popWin = Ti.UI.createWindow({ backgroundColor: 'white' }); var popBtn = Ti.UI.createButton({ title: 'Click me' }); popWin.add(popBtn); var pop = Ti.UI.iPad.createPopover({ width: 320, height: 320, contentView: popWin }); popBtn.addEventListener('click', function(e) { Ti.UI.createOptionDialog({ options: ['a', 'b'] }).show({ view: popBtn // also try without to fail without crash }); }); pop.show({ view: btn }); }); win.add(btn); win.open(); {code} *Crash* {code} [DEBUG] 2014-09-09 15:39:42.671 od[17557:1974892] Presenting view controllers on detached view controllers is discouraged . [ERROR] The application has crashed with an uncaught exception 'NSGenericException'. [ERROR] Reason: [ERROR] UIPopoverPresentationController (<_UIAlertControllerActionSheetRegularPresentationController: 0x79f6cfc0>) should have a non-nil sourceView or barButtonItem set before the presentation occurs. [ERROR] Stack trace: [ERROR] [ERROR] 0 CoreFoundation 0x04bb4dda __exceptionPreprocess + 154 [ERROR] 1 libobjc.A.dylib 0x0478e837 objc_exception_throw + 44 [ERROR] 2 CoreFoundation 0x04bb4d1d +[NSException raise:format:] + 141 [ERROR] 3 UIKit 0x01cc87f1 -[UIPopoverPresentationController presentationTransitionWillBegin] + 388 [ERROR] 4 UIKit 0x015d9f25 __71-[UIPresentationController _initViewHierarchyForPresentationSuperview:]_block_invoke + 1666 [ERROR] 5 UIKit 0x015d8528 __56-[UIPresentationController runTransitionForCurrentState]_block_invoke + 226 [ERROR] 6 UIKit 0x0160b7ab __40+[UIViewController _scheduleTransition:]_block_invoke + 18 [ERROR] 7 UIKit 0x014d2aee ___afterCACommitHandler_block_invoke + 15 [ERROR] 8 UIKit 0x014d2a99 _applyBlockToCFArrayCopiedToStack + 415 [ERROR] 9 UIKit 0x014d28ae _afterCACommitHandler + 545 [ERROR] 10 CoreFoundation 0x04ad7fbe __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 30 [ERROR] 11 CoreFoundation 0x04ad7f00 __CFRunLoopDoObservers + 400 [ERROR] 12 CoreFoundation 0x04acd93a __CFRunLoopRun + 1226 [ERROR] 13 CoreFoundation 0x04acd1ab CFRunLoopRunSpecific + 443 [ERROR] 14 CoreFoundation 0x04accfdb CFRunLoopRunInMode + 123 [ERROR] 15 GraphicsServices 0x0519924f GSEventRunModal + 192 [ERROR] 16 GraphicsServices 0x0519908c GSEventRun + 104 [ERROR] 17 UIKit 0x014a9386 UIApplicationMain + 1526 [ERROR] 18 od 0x00061828 main + 456 [ERROR] 19 libdyld.dylib 0x05484ac9 start + 1 [ERROR] [ERROR] 2014-09-09 15:39:42.696 od[17557:1974892] *** Terminating app due to uncaught exception 'NSGenericException', reason: 'UIPopoverPresentationController (<_UIAlertControllerActionSheetRegularPresentationController: 0x79f6cfc0>) should have a non-nil sourceView or barButtonItem set before the presentation occurs.' [ERROR] *** First throw call stack: [ERROR] ( [ERROR] 0 CoreFoundation 0x04bb4df6 __exceptionPreprocess + 182 [ERROR] 1 libobjc.A.dylib 0x0478e837 objc_exception_throw + 44 [ERROR] 2 CoreFoundation 0x04bb4d1d +[NSException raise:format:] + 141 [ERROR] 3 UIKit 0x01cc87f1 -[UIPopoverPresentationController presentationTransitionWillBegin] + 388 [ERROR] 4 UIKit 0x015d9f25 __71-[UIPresentationController _initViewHierarchyForPresentationSuperview:]_block_invoke + 1666 [ERROR] 5 UIKit 0x015d8528 __56-[UIPresentationController runTransitionForCurrentState]_block_invoke + 226 [ERROR] 6 UIKit 0x0160b7ab __40+[UIViewController _scheduleTransition:]_block_invoke + 18 [ERROR] 7 UIKit 0x014d2aee ___afterCACommitHandler_block_invoke + 15 [ERROR] 8 UIKit 0x014d2a99 _applyBlockToCFArrayCopiedToStack + 415 [ERROR] 9 UIKit 0x014d28ae _afterCACommitHandler + 545 [ERROR] 10 CoreFoundation 0x04ad7fbe __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 30 [ERROR] 11 CoreFoundation 0x04ad7f00 __CFRunLoopDoObservers + 400 [ERROR] 12 CoreFoundation 0x04acd93a __CFRunLoopRun + 1226 [ERROR] 13 CoreFoundation 0x04acd1ab CFRunLoopRunSpecific + 443 [ERROR] 14 CoreFoundation 0x04accfdb CFRunLoopRunInMode + 123 [ERROR] 15 GraphicsServices 0x0519924f GSEventRunModal + 192 [ERROR] 16 GraphicsServices 0x0519908c GSEventRun + 104 [ERROR] 17 UIKit 0x014a9386 UIApplicationMain + 1526 [ERROR] 18 od 0x00061828 main + 456 [ERROR] 19 libdyld.dylib 0x05484ac9 start + 1 [ERROR] ) [ERROR] libc++abi.dylib: terminating with uncaught exception of type NSException {code}",3 +"TIMOB-17658","09/09/2014 16:52:51","iOS8: Orientation locked in portrait when returning from image capture and rotating the iPad device","h6.Issue description Orientation locked in portrait when returning from image capture and rotating the iPad device h6.Steps to reproduce Please use the sample attached. # Launch the app in Landscape mode with the Home button on the right # Rotate the app around, notice the UI changes to reflect the orientation correctly. # Get it back into landscape mode. # Click Launch Camera # Click the (X) button and then immediately rotate the tablet to portrait up or portrait down. # Notice that the image capture view will close but then the app gets skewed into an akward orientation. (Seems to be in portrait but its in landscape orientation. See the attached screenshot called iPad_RDC_Oreintation_Akward.png.) # Keep rotating the device, notice that you cannot get the app back on screen fully. The app is now stuck in this orientation state. ",13 +"TIMOB-17659","09/09/2014 19:09:59","iOS: map camera encounters ""Collection <__NSArrayM: 0x16460ef0> was mutated while being enumerated""","Homes.com is encountering the below error when toggling between annotations on a map when using the map camera. See their message here: ""The issue pertains to centering the map on top of an annotation after it is clicked. The idea is that when a user clicks on a map annotation, the map will move over the annotation and then a custom popup will load over the annotation. We were able to make the map pan over an annotation by updating the map region. However, because specifications provided required that the map be zoomed in a lot closer to the pins, it meant that we had to use the map camera on iOS. Doing this lead to the issue we are now experiencing. Please find attached a copy of a simple project that shows this issue and a copy of the error log we get. Also, the error that we get has only happened on the device and not in the simulator."" Below is the crash as I encounter it. Attached is the sample project and the customer's log. {code} [ERROR] : Script Error { [ERROR] : backtrace = ""#0 () at :621""; [ERROR] : line = 42; [ERROR] : message = ""*** Collection <__NSArrayM: 0x16460ef0> was mutated while being enumerated.""; [ERROR] : sourceId = 59385408; [ERROR] : } [ERROR] : The application has crashed with an uncaught exception 'NSGenericException'. [ERROR] : Reason: [ERROR] : *** Collection <__NSArrayM: 0x16460ef0> was mutated while being enumerated. [ERROR] : Stack trace: [ERROR] : [ERROR] : 0 CoreFoundation 0x2fd70e83 + 130 [ERROR] : 1 libobjc.A.dylib 0x3a0cd6c7 objc_exception_throw + 38 [ERROR] : 2 CoreFoundation 0x2fd70971 + 0 [ERROR] : 3 MapKit 0x30f0da31 + 132 [ERROR] : 4 MapKit 0x30f0d987 + 26 [ERROR] : 5 MapKit 0x30f29151 + 1736 [ERROR] : 6 MapKit 0x30f2a91d + 80 [ERROR] : 7 VectorKit 0x377729a7 + 66 [ERROR] : 8 VectorKit 0x37784383 + 862 [ERROR] : 9 VectorKit 0x37783ff7 + 142 [ERROR] : 10 QuartzCore 0x321cbad3 + 98 [ERROR] : 11 QuartzCore 0x321cb87d + 344 [ERROR] : 12 IOMobileFramebuffer 0x34dfb76d + 104 [ERROR] : 13 IOKit 0x30a52be5 IODispatchCalloutFromCFMessage + 248 [ERROR] : 14 CoreFoundation 0x2fd30b81 + 136 [ERROR] : 15 CoreFoundation 0x2fd3b777 + 34 [ERROR] : 16 CoreFoundation 0x2fd3b713 + 346 [ERROR] : 17 CoreFoundation 0x2fd39edf + 1406 [ERROR] : 18 CoreFoundation 0x2fca4471 CFRunLoopRunSpecific + 524 [ERROR] : 19 CoreFoundation 0x2fca4253 CFRunLoopRunInMode + 106 [ERROR] : 20 GraphicsServices 0x349de2eb GSEventRunModal + 138 [ERROR] : 21 UIKit 0x32559845 UIApplicationMain + 1136 [ERROR] : 22 homes test 0x0003f573 homes test + 34163 [ERROR] : 23 libdyld.dylib 0x3a5c6ab7 + 2 [ERROR] : *** First throw call stack: [ERROR] : (0x2fd70e83 0x3a0cd6c7 0x2fd70971 0x30f0da31 0x30f0d987 0x30f29151 0x30f2a91d 0x377729a7 0x37784383 0x37783ff7 0x321cbad3 0x321cb87d 0x34dfb76d 0x30a52be5 0x2fd30b81 0x2fd3b777 0x2fd3b713 0x2fd39edf 0x2fca4471 0x2fca4253 0x349de2eb 0x32559845 0x3f573 0x3a5c6ab7) {code}",5 +"TIMOB-17661","09/09/2014 19:59:50","iOS8: Alert dialog distortion on rotation","h5. To reproduce fromgit/titanium_mobile_tests_internal/FeatureTest/Map/module_map run 5275 test 1. click any annotation, get an alert and rotate the device h5. Actual result Alert dialog is cut off app.js {code} var MapModule = require('ti.map'); var win = Ti.UI.createWindow({ backgroundColor : 'white' }); var latitude = 37.390749; var longitude = -122.08165; var annotations = []; for (var i = 0; i < 20; i++) { var annotation = MapModule.createAnnotation({ latitude : latitude + (0.02 * i), longitude : longitude - (0.02 * i), title : ""Annotation Test"", pincolor : MapModule.ANNOTATION_RED, animate : true }); annotations.push(annotation); }; var map = MapModule.createView({ mapType : MapModule.NORMAL_TYPE, region : { latitude : latitude, longitude : longitude, latitudeDelta : 0.5, longitudeDelta : 0.5 }, animate : false, regionFit : true, annotations : annotations }); map.addEventListener('click', function(e) { alert(e); }); win.add(map); win.open(); {code} 1. Install",5 +"TIMOB-17662","09/09/2014 21:13:50","iOS8: Feature Request to do not allow the CameraPreview to rotate","h6.Feature Request Feature Request to do not allow the CameraPreview to rotate. Add the following method inside @implementation TiImagePickerController {code} - (BOOL)shouldAutorotate { return NO; } {code} - https://github.com/appcelerator/titanium_mobile/blob/master/iphone/Classes/MediaModule.m#L65 h6.Sample code {code} var win = Ti.UI.createWindow({ backgroundColor: 'white' }); var button = Ti.UI.createButton({ title: 'Open', top: 50, left: 10, right: 10, height: 50 }); win.add(button); win.open(); button.addEventListener('click', function() { Ti.API.info('click'); Ti.Media.showCamera({ success: success, error: error, saveToPhotoGallery: false, allowEditing: false, mediaTypes: [Ti.Media.MEDIA_TYPE_PHOTO], showControls: true, autohide: false }); function success(e) { Ti.API.info('Success'); } function error(e) { Ti.API.info('Error'); } }); {code}",3 +"TIMOB-17663","09/09/2014 21:24:20","iOS: Add @3x images and new icon sizes to new-app templates and samples","To support the iPhone 6/6+ screen sizes, we will need to add new icons and launch screen images to our new-app templates and samples. See https://developer.apple.com/library/prerelease/ios/documentation/UserExperience/Conceptual/MobileHIG/IconMatrix.html#//apple_ref/doc/uid/TP40006556-CH27-SW1 for the complete list. For iPhone 6, launch images: 750 x 1334 (@2x) for portrait 1334 x 750 (@2x) for landscape For iPhone 6 Plus: 1242 x 2208 (@3x) for portrait 2208 x 1242 (@3x) for landscape New icons: 180x180, 120x120, 87x87 ",13 +"TIMOB-17665","09/09/2014 22:09:50","iOS8: userLocation is not displayed when using ti.map module","h5. To reproduce 1. Run the sample code, make sure to add ti.map module to tiapp.xml {code} var MapModule = require('ti.map'); var window = Ti.UI.createWindow({ backgroundColor : 'white' }); Titanium.UI.setBackgroundColor('#000'); window.title = 'Test'; window.backgroundColor = '#000'; window.exitOnClose = true; window.add(MapModule.createView({ userLocation : true })); window.open(); {code} h5. Actual result No permission to use the user current location, no pin to display it.",8 +"TIMOB-17666","09/09/2014 23:42:58","CLI: ti info fails when invalid Titanium SDK is selected","There's a bug in ""ti info"" when an invalid Titanium SDK is selected: {code} ti config sdk.selected 3.6.0 ti info -t android {code} Android SDK Android Executable = /opt/android-sdk/tools/android SDK Path = /opt/android-sdk Android NDK NDK Path = /opt/android-ndk NDK Version = r10 (64-bit) {code} /Users/chris/appc/titanium/node_modules/longjohn/dist/longjohn.js:185 throw e; ^ TypeError: Cannot call method 'join' of undefined at /Users/chris/appc/titanium/lib/commands/info.js:384:75 at Array.forEach (native) at /Users/chris/appc/titanium/lib/commands/info.js:376:29 at sections.push.Section.render (/Users/chris/appc/titanium/lib/commands/info.js:404:7) at /Users/chris/appc/titanium/lib/commands/info.js:633:14 at Array.forEach (native) at /Users/chris/appc/titanium/lib/commands/info.js:627:13 at /Users/chris/appc/titanium/node_modules/async/lib/async.js:232:13 at /Users/chris/appc/titanium/node_modules/async/lib/async.js:119:25 at /Users/chris/appc/titanium/node_modules/async/lib/async.js:24:16 --------------------------------------------- at exports.execFile (child_process.js:702:9) at exports.exec (child_process.js:589:18) at async.series.cached (/Users/chris/appc/titanium/node_modules/node-appc/lib/android.js:103:4) at /Users/chris/appc/titanium/node_modules/async/lib/async.js:551:21 at /Users/chris/appc/titanium/node_modules/async/lib/async.js:227:13 at iterate (/Users/chris/appc/titanium/node_modules/async/lib/async.js:134:13) at /Users/chris/appc/titanium/node_modules/async/lib/async.js:145:25 at /Users/chris/appc/titanium/node_modules/async/lib/async.js:229:17 {code}",3 +"TIMOB-17668","09/10/2014 08:21:02","iOS: Two instances of iOS Simulator launched when one of them is iPhone 6/6 plus","The previous instance of iOS simulator is not killed and the second instance is created when one of the iOS simulator is iPhone 6/iPhone 6 plus and the second instance is any other simulator apart from those two. Steps to Reproduce: 1. Create a project 2. Run the project through studio or CLI on iPhone 6 simulator 3. Once the project runs on the above simulator, try to run the same project on any simulator other than iPhone 6/ iPhone 6 plus Actual Result: A second simulator instance is created. Expected Result: There should be only one instance on simulator.",8 +"TIMOB-17800","09/10/2014 10:57:36","Studio: iOS Distribution progress continues even long after the project has been packaged","The iOS Distribution progress continues after the project has been published (ad-hoc or iTunes Store) and halts the progress of other actions. The issue occurs only when the currently selected Xcode is Xcode 6. Is does not happen when tested with XCode 5.1.1 Steps to Reproduce: 1. Use Xcode select to switch to Xcode 6 GM/beta 2. Create a project 3. Select Publish > Distribute - Ad Hoc/Enterprise Actual Result: The project build and packaging is successful but the progress bar continues to show iOS Distribution in progress for a long time. Refer to attached screenshot. With Xcode 5.1.1, the progress stops as soon as the console shows the success message for package.",5 +"TIMOB-17692","09/10/2014 13:45:10","iOS: Cannot load saved images anymore","This was working fine with SDK 3.3.0, but since 3.4.0-beta, my app cannot load previously saved images anymore... message = ""invalid image type""; [ERROR] : nativeLocation = ""-[TiUIImageView setImage_:] (TiUIImageView.m:685)""; [ERROR] : nativeReason = ""expected TiBlob, String, TiFile, was: TiBlob""; Strangely, it seems to expect a TiBlob, and gets one, but doesn't load it...",3 +"TIMOB-17670","09/10/2014 15:15:48","iOS8: DocumentViewer not displaying PDF files","h3. Issue Using DocumentViewer on iOS 8 is not rendering PDF files. h3. Steps to repro 1. Run test case (test.zip) 2. Click on Launch Doc button 3. On the navigation bar press the done button 4. Click on Launch PDF button h5. Expected result: After clicking on Launch Doc button the .docx file is rendered in the DocumentViewer and after clicking on Launch PDF button the .pdf file is also shown in the DocumentViewer. h5. Actual result: After clicking on Launch Doc button the .docx file is rendered in the DocumentViewer and after clicking on Launch PDF button the .pdf file is not being shown by the DocumentViewer. h3. Sample code {code} var win = Ti.UI.createWindow(); // Use a NavigationWindow to create a navigation bar for the window var navWin = Ti.UI.iOS.createNavigationWindow({window: win}); var navButton = Titanium.UI.createButton({title:'Launch'}); win.RightNavButton = navButton; var docButton = Titanium.UI.createButton({ title:'Launch Doc', height:40, width:200, top:230 }); win.add(docButton); var pdfButton = Titanium.UI.createButton({ title:'Launch PDF', height:40, width:200, top:280 }); win.add(pdfButton); // Create a document viewer to preview a PDF file docViewer = Ti.UI.iOS.createDocumentViewer(); // Opens the options menu and when the user clicks on 'Quick Look' // the document viewer launches with an animated transition navButton.addEventListener('click', function(){ docViewer.show({view:navButton, animated: true}); }); // The document viewer immediately launches without an animation docButton.addEventListener('click', function(){ docViewer.url = 'test1.docx'; docViewer.show(); }); pdfButton.addEventListener('click', function(){ docViewer.url = 'test.pdf'; docViewer.show(); }); navWin.open(); {code} h3. Additional info There are reports of this happening on native also apparently related to changes in how to call the UIDocumentInteractionController http://stackoverflow.com/questions/25430069/uidocumentinteractioncontroller-displaying-blank-pdf",5 +"TIMOB-17676","09/11/2014 00:01:05","iOS8: Listview: Separator Insets values are not respected on the side of the title/data if the listview row contains a title/data","h6. This issue is only seen on iOS 8. Works fine on iOS 7.1 h5. Description: 1. Run the code below: {code} var win = Ti.UI.createWindow({ backgroundColor: 'white', title:'INSETS', layout:'vertical' }); var container = Ti.UI.createView({height:Ti.UI.SIZE,width:Ti.UI.SIZE,layout:'horizontal'}); win.add(container); var listView = Ti.UI.createListView({top:5,separatorColor:'red',separatorInsets:{left:0,right:0}}); var section = Ti.UI.createListSection(); var data = [ {properties: { title: 'ONE'}}, {properties: { title: 'TWO'}}, {properties: { title: 'THREE'}}, {properties: { title: 'FOUR'}} ]; section.setItems(data); listView.sections = [section]; win.add(listView); var nav = Ti.UI.iOS.createNavigationWindow({ window:win }); nav.open(); {code} 2. Run it on iOS 8 & iOS 7 device & notice the difference. h5. Actual Result: 1. Separator Insets values should be respected on the side of the title/data if the listview row contains a title/data e.g ONE,TWO,THREE,FOUR. NOTE: Refer screenshots for reference. h5. Expected Result: 1. Separator Insets values are not respected on the side of the title/data if the listview row contains a titledata",5 +"TIMOB-17677","09/11/2014 00:56:12","CLI : iOS : When more than one iOS devices are connected building to one device builds to all","h5. Description: 1. Connect 2 iOS devices & build an app for any one of the 2 connected device. h5. Actual Result: 1. The app is built & installed on both the connected devices. 2. Command studio sends: {code} ""/usr/local/bin/titanium"" ""--no-colors"" ""--no-progress-bars"" ""--no-prompt"" ""build"" ""--platform"" ""iphone"" ""--log-level"" ""trace"" ""--sdk"" ""3.4.0.v20140909222515"" ""--project-dir"" ""/Users/lokeshchoudhary/Desktop/workspaces/test_workspace/TIMOB-14986"" ""--target"" ""device"" ""--ios-version"" ""8.0"" ""--device-family"" ""universal"" ""--developer-name"" ""Lokesh Choudhary (2T9WDZYG53)"" ""--device-id"" ""2809991a6d680c8d369a3ce282d96dcfa7aa3463"" ""--pp-uuid"" ""98F73243-B6CA-4F18-A4A6-64ED9096038C"" {code} This command above build's to both connected devices. 3. Using CLI we see the same issue. {code} ti build -F universal -I 8.0 -T device -C ---your device id ---- -V ""Lokesh Choudhary (2T9WDZYG53)"" -d /Users/lokeshchoudhary/Desktop/workspaces/test_workspace/TIMOB-14986 -p ios -P ---- your uuid ------ {code} The app builds for both the devices. CLI log : {code} [TRACE] ** BUILD SUCCEEDED ** [INFO] Installing app on device: Flash [INFO] App successfully installed on device: Flash [INFO] Installing app on device: Europa [INFO] App successfully installed on device: Europa [INFO] Project built successfully in 43s 714ms {code} h5. Expected Result: 1. The app should only be built to the selected device.",3 +"TIMOB-17678","09/11/2014 01:25:02","iOS8: No options to build for device or simulator and packaging","h5.Description When 3.3.0.GA is selected using ti sdk select and then in the tiapp.xml of a project 3.4.0 SDK is selected, there is no option to perform any actions relating to iOS (package, build) and when trying to build from the CLI the build fails and the error below is shown. {code} [ERROR] There are no supported Xcode installations found. {code} *Note* This appears to happen in any 3.4.0 SDK and is not specific to the latest build (3.4.0.v20140909222515) h5.Steps To Reproduce 1. Change ti sdk to 3.3.0.GA using {code} ti sdk select 3.3.0.GA {code} 2. In your projects tiapp.xml change to 3.4.0.v20140909222515 3. Attempt to build to an iOS device/simulator or package for iOS distribution by using the CLI. h5.Actual Result The build will fail due to the error above. h5.Expected Result There build should succeed. ",5 +"TIMOB-17713","09/11/2014 16:33:45","iOS8: App crashes after starting using ""open in .."" from another app","Using ""Open in .."" to send a file to my app let my app crashing on opening before the first line of code will be executed. Here is the log: {code} [ERROR] : The application has crashed with an uncaught exception 'NSInvalidArgumentException'. [ERROR] : Reason: [ERROR] : *** setObjectForKey: object cannot be nil (key: source) [ERROR] : Stack trace: [ERROR] : [ERROR] : 0 CoreFoundation 0x2b69ae3f + 126 [ERROR] : 1 libobjc.A.dylib 0x3917dc8b objc_exception_throw + 38 [ERROR] : 2 CoreFoundation 0x2b5b8ec3 + 850 [ERROR] : 3 iQ.Suite 0x0021fe59 iQ.Suite + 1396313 [ERROR] : 4 UIKit 0x2ed9d6eb + 278 [ERROR] : 5 UIKit 0x2eda0ea3 + 2082 [ERROR] : 6 UIKit 0x2eda47f7 + 2142 [ERROR] : 7 UIKit 0x2eda3d6b + 118 [ERROR] : 8 UIKit 0x2eda3ced + 360 [ERROR] : 9 UIKit 0x2ed98fd3 + 478 [ERROR] : 10 FrontBoardServices 0x31db21f9 + 40 [ERROR] : 11 FrontBoardServices 0x31dc10e9 + 12 [ERROR] : 12 CoreFoundation 0x2b6615b5 + 12 [ERROR] : 13 CoreFoundation 0x2b660879 + 216 [ERROR] : 14 CoreFoundation 0x2b65f3b3 + 1714 [ERROR] : 15 CoreFoundation 0x2b5ad621 CFRunLoopRunSpecific + 476 [ERROR] : 16 CoreFoundation 0x2b5ad433 CFRunLoopRunInMode + 106 [ERROR] : 17 GraphicsServices 0x329410a9 GSEventRunModal + 136 [ERROR] : 18 UIKit 0x2eb97809 UIApplicationMain + 1440 [ERROR] : 19 iQ.Suite 0x000d2573 iQ.Suite + 30067 [ERROR] : 20 libdyld.dylib 0x396fdaaf + 2 [ERROR] : *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** setObjectForKey: object cannot be nil (key: source)' [ERROR] : *** First throw call stack: [ERROR] : (0x2b69ae3f 0x3917dc8b 0x2b5b8ec3 0x21fe59 0x2ed9d6eb 0x2eda0ea3 0x2eda47f7 0x2eda3d6b 0x2eda3ced 0x2ed98fd3 0x31db21f9 0x31dc10e9 0x2b6615b5 0x2b660879 0x2b65f3b3 0x2b5ad621 0x2b5ad433 0x329410a9 0x2eb97809 0xd2573 0x396fdaaf) {code}",2 +"TIMOB-17681","09/11/2014 18:57:53","MobileWeb: Custom .woff fonts not rendering on app","h3. Issue When using a custom font in a MobileWeb app the font is not correctly rendered, this used to worked correctly on SDK 3.2.3.GA but stopped working on 3.3.0.GA h3. Testing While testing i notice in the index.html that the @font-face is different from 3.2.3.GA than the one in 3.3.0.GA @font-face in index.html SDK 3.2.3.GA {code} @font-face{font-family:""futurastd-condensed-webfont"";src:url(""mobileweb/futurastd-condensed-webfont.woff"");} {code} @font-face in index.html SDK 3.3.0.GA {code} @font-face{font-family:""futurastd-condensed-webfont"";url(""futurastd-condensed-webfont.woff"") format(""woff"");} {code} The source parameter is missing causing an error in the CSS and not rendering the font. h3. Test code {code} var win = Titanium.UI.createWindow({ title:'Tab 1', backgroundColor:'#fff' }); var label = Titanium.UI.createLabel({ color:'#999', text:'I am Window 1', font:{ fontSize:20, fontFamily:""futurastd-condensed-webfont""}, textAlign:'center', width:'auto' }); win.add(label); // open tab group win.open(); {code} h3. Steps to Repro 1. Run the attached test case for Mobile Web using SDK 3.3.0.GA h5. Expected Result The app will display a label with custom font h5. Actual Result The app will not display a label with custom font in SDK 3.3.0 but if the test is run with 3.2.3.GA will be displayed correctly. ",1 +"TIMOB-17749","09/12/2014 08:14:09","iOS: Map cannot pan / zoom after applying camera","h4. Problem Description After a map view is loaded, and a camera is applied to the map one cannot pan or zoom on the map (touch is lost). The view get's ""locked"" in position. Removing the camera by applying a pitch of zero, does not restore it. The sample code below shows this problem. To test; Load the code. Pan and zoom the map. Then tap the ""3D Camera ON"" button to apply the camera. Now when you try to pan or zoom, is not possible. Tap the button again to set pitch to 0 and restore the map. Pan and zoom still don't work. I should note that the click event is also lost as well if you have any annotations on the map. h4. Steps to reproduce 1. CReate a new mobile project (classic titanium) 2. Add this to app.js app.js: {code} Titanium.UI.setBackgroundColor('#fff'); var camOn = false; var Map = require('ti.map'); var win = Titanium.UI.createWindow(); var map = Map.createView({ mapType: Map.NORMAL_TYPE ,animate: false ,regionFit: true ,pitchEnabled: true ,showsBuildings: true ,showsPointsOfInterest: true ,rotateEnabled: true ,region: { latitude: 51.507222, longitude: -0.1275, latitudeDelta: 0.01, longitudeDelta: 0.01 } ,userLocation: false }); var bCam = Ti.UI.createButton({ title: '3D Camera ON', color: '#000', backgroundColor: '#cdcdcd', width: 150, bottom: 30 }); bCam.addEventListener('click', function(e) { var cam = Map.createCamera({ altitude: 2000, centerCoordinate: { latitude: 51.507222, longitude: -0.1275 }, heading: 0, pitch: (camOn ? 0 : 60) }); map.animateCamera({ camera: cam, curve: Ti.UI.ANIMATION_CURVE_EASE_IN, duration: 500 }); camOn = !camOn; bCam.title = (camOn ? '3D Camera OFF' : '3D Camera ON'); }); win.add(map); win.add(bCam); win.open(); {code} 3. Run it in a device",3 +"TIMOB-17690","09/12/2014 22:53:20","iOS8: UrlSession - ""enabledRemoteNotificationTypes is not supported"" message appears if you require in the com.appcelerator.urlSession module","*Details:* ""enabledRemoteNotificationTypes is not supported"" message appears if you require in the com.appcelerator.urlSession module. *Steps to reproduce:* 1. Create a Titanium app; make sure to include com.appcelerator.urlSession module in the tiapp.xml 2. In the app.js, require in the module e.g. {{var monkey = require(""com.appcelerator.urlSession"");}} 3. In the tiapp.xml, include the following iOS plist keys in the dict node: {code} ... ... UIBackgroundModes fetch remote-notification ... {code} 4. Install app onto device 5. Background the app 6. Relaunch the app again *Actual:* ""enabledRemoteNotificationTypes is not supported"" message appears in the console: {code} [DEBUG] : Application booted in 304.236054 ms [DEBUG] : enabledRemoteNotificationTypes is not supported in iOS 8.0 and later. {code} *Expected:* ""enabledRemoteNotificationTypes is not supported"" message should not appear in the console.",3 +"TIMOB-17684","09/13/2014 02:40:34","iOS8: iPad Snapshot Splash is rotated sideways when in Landscape mode","h6.Issue description If the device is in landscape mode when the user goes into multitask mode on iOS (Double Tap Home Button) the splash screen snapshot is shown rotated sideways in the portrait orientation (As seen in the Screen shoot attached). When using the Ti.App.setForceSplashAsSnapshot(true); property and the 3.3.0.GA TiSDK and iOS 7 SDK on iOS 7 device when the user goes into multitask mode on iOS (Double Tap Home Button) the splash screen snapshot is shown in the orientation that the app is in (screen shoot attached to illustrate this). h6.Steps to reproduce # Launch App # In portrait mode double tap home button. # Notice the splash screen image shown is in the correct portrait orientation # Rotate it to landscape mode # Multitask by double tapping the home button # Notice that the splash screen image is shown rotated sideways. It appears to be stuck in portrait mode. h6.Sample code Reproduced at iOS8 Ipad Simulator. {code} Titanium.UI.setBackgroundColor('#000'); // create tab group var tabGroup = Titanium.UI.createTabGroup(); Ti.App.setForceSplashAsSnapshot(true); var win1 = Titanium.UI.createWindow({ title:'Tab 1', backgroundColor:'#fff' }); var tab1 = Titanium.UI.createTab({ icon:'KS_nav_views.png', title:'Tab 1', window:win1 }); var label1 = Titanium.UI.createLabel({ color:'#999', text:'Click', font:{fontSize:20,fontFamily:'Helvetica Neue'}, textAlign:'center', width:'auto' }); win1.add(label1); label1.addEventListener('click', function(e) { alert(e); }); var win2 = Titanium.UI.createWindow({ title:'Tab 2', backgroundColor:'#fff' }); var tab2 = Titanium.UI.createTab({ icon:'KS_nav_ui.png', title:'Tab 2', window:win2 }); tabGroup.addTab(tab1); tabGroup.addTab(tab2); tabGroup.open(); {code} h6.Additional details Since our docs says it only works at device there is an attached sample app to illustrate: 3.4_Splash_SnapShot_Sideways.zip A picture is attached which shows the issue called: SplashSnapshotSideways.png This was also reproduced with iPad (Gen 3) running 8.0 Beta 5 using - http://docs.appcelerator.com/titanium/latest/#!/api/Titanium.App-property-forceSplashAsSnapshot",13 +"TIMOB-17686","09/13/2014 16:33:28","iOS8: 'rsync failed' and unable to submit apps with Xcode 6 if including DSYM file","When trying to submit an app to the AppStore with Xcode 6 GM an error occurs saying 'rsync failed'. Clicking the 'View Log' button does not show any logs, so I cannot provide more information. I googled the issue and saw at least 1 other having a similar problem on the dev Q&A site. https://developer.appcelerator.com/question/177627/app-store-build---340---rsync-failed The current workaround seems to be to exclude uploading the DSYM file to receive symbolicated crash logs from Apple.",13 +"TIMOB-17687","09/13/2014 19:53:47","iOS8: Refactor Alert","iOS8 has moved over AlertDialog and OptionDialog to UIAlertController Also the correct way to show popovers is now to set the modalPresentationStyle to UIModalPresentationPopover Titanium needs to refactor these three proxy classes. Will probably also need to change the supported API.",13 +"TIMOB-17688","09/14/2014 02:24:07","iOS8: Add ability to request Geo Location Permission","With iOS8 now there is the need to request specific geo location permissions. The PR for this method is here https://github.com/appcelerator/titanium_mobile/pull/6073 How to test this can be found here https://gist.github.com/benbahrenburg/4bcda636397cb095025f The API for this is pretty simple {code} Ti.Geolocation.requestAuthorization(Ti.Geolocation.AUTHORIZATION_ALWAYS); {code} or {code} Ti.Geolocation.requestAuthorization(Ti.Geolocation.AUTHORIZATION_WHEN_IN_USE); {code}",13 +"TIMOB-17708","09/14/2014 10:51:56","iOS8: Email dialog does not recognize message and recipients","I did use the search and did not find an issue already so I hope it is not a duplicate. Running the following code on iOS 8 you will notice that the message and the recipient(s) are not set in the email dialog. {code} var win = Ti.UI.createWindow({ backgroundColor: '#ccc' }); var btn = Ti.UI.createButton({ title: 'mail' }); win.add(btn); btn.addEventListener('click', function () { var emailDialog = Ti.UI.createEmailDialog(); emailDialog.setSubject(""My Subject""); emailDialog.setToRecipients(['email@example.com']); emailDialog.setBarColor('#CCCCCC'); emailDialog.setMessageBody('Message'); emailDialog.open(); }); win.open(); {code} The dialog also seems to close automatically after a while but not sure whether it is related to this: {code} viewServiceDidTerminateWithError: Error Domain=_UIViewServiceInterfaceErrorDomain Code=3 ""The operation couldn’t be completed. (_UIViewServiceInterfaceErrorDomain error 3.)"" UserInfo=0x7b65c7c0 Message=Service Connection Interrupted timed out waiting for fence barrier from com.apple.MailCompositionService {code} Environment: * Titanium Command-Line Interface, CLI version 3.4.0-rc2, Titanium SDK version 3.4.0.v20140911135715 * Xcode 6 * Titanium Studio, build: 3.4.0.201409121841 * Alloy 1.5.0 rc * iPhone 6 Plus simulator but also others are affected ",2 +"TIMOB-17689","09/14/2014 15:24:51","CLI: Hook system shows warning 'bad plugin hook that failed to load' at build time","Description: CLI gives a warning about failed to load plugin hook 'cli:go' hook at the build time. The issue is reproducible with CLI 3.3.0 and Titanium SDK 3.3.0.GA. STEPS TO REPRODUCE:- To test: 1. create an app 2. unzip the attached batman.zip into you project dir 3. edit tiapp.xml and add enable the plugin: {code} batman {code} 4. build an app for iOS and watch the build output at the console. EXPECTED RESULT: 4.The project should build successfully without warning and console output should shown in the below form. {code} [EVENT-HOOK] cli:go {code} ACTUAL RESULT 4. The project build successfully but shows failed to load hook warning.Although It shows the ""[EVENT-HOOK] cli:go "" in the output. [WARN] Bad plugin hooks that failed to load: {code} Titanium Command-Line Interface, CLI version 3.4.0-rc3, Titanium SDK version 3.4.0.v20140913174915 Copyright (c) 2012-2014, Appcelerator, Inc. All Rights Reserved. Please report bugs to http://jira.appcelerator.org/ [DEBUG] Detecting modules in /Users/kagrawal/Library/Application Support/Titanium/modules [DEBUG] Detected android module: com.appcelerator.apm 1.0.9 @ /Users/kagrawal/Library/Application Support/Titanium/modules/android/com.appcelerator.apm/1.0.9 [DEBUG] Detected android module: facebook 3.0.2 @ /Users/kagrawal/Library/Application Support/Titanium/modules/android/facebook/3.0.2 [DEBUG] Detected android module: ti.cloudpush 3.2.1 @ /Users/kagrawal/Library/Application Support/Titanium/modules/android/ti.cloudpush/3.2.1 [DEBUG] Detected android module: ti.cloudpush 3.3.0 @ /Users/kagrawal/Library/Application Support/Titanium/modules/android/ti.cloudpush/3.3.0 [DEBUG] Detected android module: ti.map 2.1.3 @ /Users/kagrawal/Library/Application Support/Titanium/modules/android/ti.map/2.1.3 [DEBUG] Detected android module: ti.map 2.1.4 @ /Users/kagrawal/Library/Application Support/Titanium/modules/android/ti.map/2.1.4 [DEBUG] Detected commonjs module: ti.cloud 3.2.1 @ /Users/kagrawal/Library/Application Support/Titanium/modules/commonjs/ti.cloud/3.2.1 [DEBUG] Detected commonjs module: ti.cloud 3.2.2 @ /Users/kagrawal/Library/Application Support/Titanium/modules/commonjs/ti.cloud/3.2.2 [DEBUG] Detected commonjs module: ti.cloud 3.2.3 @ /Users/kagrawal/Library/Application Support/Titanium/modules/commonjs/ti.cloud/3.2.3 [DEBUG] Detected iphone module: com.appcelerator.apm 1.0.9 @ /Users/kagrawal/Library/Application Support/Titanium/modules/iphone/com.appcelerator.apm/1.0.9 [DEBUG] Detected iphone module: com.appcelerator.urlSession 1.0.0 @ /Users/kagrawal/Library/Application Support/Titanium/modules/iphone/com.appcelerator.urlSession/1.0.0 [DEBUG] Detected iphone module: com.appcelerator.urlSession 1.0.1 @ /Users/kagrawal/Library/Application Support/Titanium/modules/iphone/com.appcelerator.urlSession/1.0.1 [DEBUG] Detected iphone module: facebook 3.1.1 @ /Users/kagrawal/Library/Application Support/Titanium/modules/iphone/facebook/3.1.1 [DEBUG] Detected iphone module: ti.coremotion 1.0.1 @ /Users/kagrawal/Library/Application Support/Titanium/modules/iphone/ti.coremotion/1.0.1 [DEBUG] Detected iphone module: ti.map 2.0.1 @ /Users/kagrawal/Library/Application Support/Titanium/modules/iphone/ti.map/2.0.1 [DEBUG] Detected iphone module: ti.map 2.0.2 @ /Users/kagrawal/Library/Application Support/Titanium/modules/iphone/ti.map/2.0.2 [DEBUG] Detected tizen module: tizen 3.0.0 @ /Users/kagrawal/Library/Application Support/Titanium/modules/tizen/tizen/3.0.0 [DEBUG] Detecting plugins in /Users/kagrawal/Documents/Appcelerator_Studio_Workspace/hooksample/plugins [DEBUG] Detected plugin: batman @ /Users/kagrawal/Documents/Appcelerator_Studio_Workspace/hooksample/plugins/batman [DEBUG] Detecting plugins in /Users/kagrawal/Library/Application Support/Titanium/plugins [DEBUG] Detected plugin: com.appcelerator.test @ /Users/kagrawal/Library/Application Support/Titanium/plugins/com.appcelerator.test [DEBUG] Looking for Titanium plugin id=batman version=latest [INFO] Found Titanium plugin id=batman version=latest [WARN] Bad plugin hooks that failed to load: [WARN] /Users/kagrawal/Documents/Appcelerator_Studio_Workspace/hooksample/plugins/batman/hooks/robin.js [WARN] ReferenceError: next is not defined [WARN] at exports.init (/Users/kagrawal/Documents/Appcelerator_Studio_Workspace/hooksample/plugins/batman/hooks/robin.js:6:2) [WARN] at CLI. (/usr/local/lib/node_modules/titanium/lib/hook.js:85:23) [WARN] at Array.forEach (native) [WARN] at CLI.scanHooks (/usr/local/lib/node_modules/titanium/lib/hook.js:67:41) [WARN] at CLI. (/usr/local/lib/node_modules/titanium/lib/cli.js:70:13) [WARN] at Array.forEach (native) [WARN] at new CLI (/usr/local/lib/node_modules/titanium/lib/cli.js:69:43) [WARN] at run (/usr/local/lib/node_modules/titanium/lib/titanium.js:174:12) [WARN] at /usr/local/lib/node_modules/titanium/lib/titanium.js:101:3 [WARN] at /usr/local/lib/node_modules/titanium/node_modules/node-appc/lib/subprocess.js:100:8 [WARN] --------------------------------------------- [WARN] at Object.run (/Users/kagrawal/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140913174915/node_modules/node-appc/lib/subprocess.js:59:8) [WARN] at async.eachSeries.cache (/Users/kagrawal/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140913174915/node_modules/ioslib/lib/simulator.js:186:21) [WARN] at iterate (/Users/kagrawal/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140913174915/node_modules/ioslib/node_modules/async/lib/async.js:149:13) [WARN] at /Users/kagrawal/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140913174915/node_modules/ioslib/node_modules/async/lib/async.js:160:25 [WARN] at /Users/kagrawal/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140913174915/node_modules/ioslib/lib/simulator.js:227:7 [WARN] at ChildProcess. (/Users/kagrawal/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140913174915/node_modules/node-appc/lib/subprocess.js:60:3) [WARN] at EventEmitter.emit (events.js:98:17) [DEBUG] Titanium SDK iOS directory: /Users/kagrawal/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140913174915/iphone {code} ",1 +"TIMOB-17691","09/15/2014 11:42:34","CLI: Running ""ti build -p iOS -T simulator --retina"" command throws error 'defaultIosVersion is not defined'","Description: Running ""ti build -p iOS -T simulator --retina"" command throws an error instead of launching the application on retina simulator. The same error is thrown with two other iOS flags like --tall and --sim-64bit respectively. The flags were working successfully with Titanium SDK build 3.4.0.v20140912164913 and CLI 3.4.0-rc3 with tiapp.xml sdk set to 3.4.0.v20140912164913. The problem seems to be with Titanium SDK build 3.4.0.v20140913174915 and CLI 3.4.0-rc3 with tiapp.xml sdk set to 3.4.0.v20140913174915. This is a regression.The commands were working with CLI 3.3.0 and titanium SDK 3.3.0.GA. STEPS TO REPRODUCE:- 1. Open a terminal window 2. Create a project and you have to ""cd"" to this project to be able to run command ""build"". 3. Run ""ti build -p iOS -T simulator --retina 4. Run ""ti build -p iOS -T simulator --tall 5. Run ""ti build -p iOS -T simulator --sim-64bit EXPECTED RESULT 3. The project should build successfully and get launched on retina simulator. 4. The project should build successfully and get launched on tall simulator. 5. The project should build successfully and get launched on 64 bits simulator. ACTUAL RESULT 3. The command throws an error when ran with --retina flag instead of building the project and launching it. 4. The command throws an error when ran with --tall flag instead of building the project and launching it. 5. The command throws an error when ran with --sim-64bit flag instead of building the project and launching it. The following error is thrown on the terminal with all this commands. {code} KAGRAWAL-MBP:sampleapplication kagrawal$ ti build -p ios -T simulator --retina Titanium Command-Line Interface, CLI version 3.4.0-rc3, Titanium SDK version 3.4.0.v20140913174915 Copyright (c) 2012-2014, Appcelerator, Inc. All Rights Reserved. Please report bugs to http://jira.appcelerator.org/ /usr/local/lib/node_modules/titanium/node_modules/longjohn/dist/longjohn.js:185 throw e; ^ ReferenceError: defaultIosVersion is not defined at iOSBuilder.getDeviceInfo (/Users/kagrawal/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140913174915/iphone/cli/commands/_build.js:168:64) at callback.options.device-id.verifyIfRequired (/Users/kagrawal/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140913174915/iphone/cli/commands/_build.js:558:24) at CLI. (/usr/local/lib/node_modules/titanium/lib/cli.js:606:16) at /usr/local/lib/node_modules/titanium/node_modules/async/lib/async.js:551:21 at /usr/local/lib/node_modules/titanium/node_modules/async/lib/async.js:227:13 at iterate (/usr/local/lib/node_modules/titanium/node_modules/async/lib/async.js:134:13) at /usr/local/lib/node_modules/titanium/node_modules/async/lib/async.js:145:25 at /usr/local/lib/node_modules/titanium/node_modules/async/lib/async.js:229:17 at /usr/local/lib/node_modules/titanium/node_modules/async/lib/async.js:556:34 at CLI. (/usr/local/lib/node_modules/titanium/lib/cli.js:664:9) --------------------------------------------- at exports.execFile (child_process.js:691:9) at exports.exec (child_process.js:578:18) at /Users/kagrawal/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140913174915/node_modules/node-appc/lib/environ.js:251:3 at /Users/kagrawal/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140913174915/node_modules/node-appc/node_modules/async/lib/async.js:254:17 at /Users/kagrawal/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140913174915/node_modules/node-appc/node_modules/async/lib/async.js:157:25 at /Users/kagrawal/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140913174915/node_modules/node-appc/node_modules/async/lib/async.js:251:21 at /Users/kagrawal/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140913174915/node_modules/node-appc/node_modules/async/lib/async.js:615:34 at /Users/kagrawal/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140913174915/node_modules/node-appc/lib/environ.js:218:7 {code}",1 +"TIMOB-17694","09/15/2014 15:34:25","iOS: Build fails when Resources has a folder named after the app","If the {{Resources}} folder contains a (non-empty) folder whose name is the same as the name of the app set in {{tiapp.xml}} under {{}} then builds will fail crashing: {code} [TRACE] Ld build/Debug-iphonesimulator/folder.app/folder normal i386 [TRACE] cd /Users/fokkezb/dev/tests/folderx/build/iphone [TRACE] export IPHONEOS_DEPLOYMENT_TARGET=6.0 [TRACE] export PATH=""/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"" [TRACE] /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -arch i386 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator8.0.sdk -L/Users/fokkezb/dev/tests/folderx/build/iphone/build/Debug-iphonesimulator -L/Users/fokkezb/dev/tests/folderx/build/iphone/lib -L/Users/fokkezb/dev/tests/folderx/build/iphone/Classes/APSAnalytics -L/Users/fokkezb/dev/tests/folderx/build/iphone/Classes/APSHTTPClient -F/Users/fokkezb/dev/tests/folderx/build/iphone/build/Debug-iphonesimulator -filelist /Users/fokkezb/dev/tests/folderx/build/iphone/build/folder.build/Debug-iphonesimulator/folder.build/Objects-normal/i386/folder.LinkFileList -dead_strip -Xlinker -objc_abi_version -Xlinker 2 -ObjC -weak_framework iAd -weak_framework iAd -fobjc-link-runtime -Xlinker -no_implicit_dylibs -stdlib=libstdc++ -mios-simulator-version-min=6.0 -lAPSAnalytics -weak_framework CoreText -framework EventKit -framework EventKitUI -weak_framework Security -licucore -framework Foundation -weak_framework UIKit -framework CoreGraphics -weak_framework AddressBook -framework AddressBookUI -framework CFNetwork -framework CoreLocation -weak_framework MapKit -framework MessageUI -framework MobileCoreServices -framework OpenGLES -framework QuartzCore -framework SystemConfiguration -lsqlite3 -lz -framework AudioToolbox -weak_framework MediaPlayer -framework AVFoundation -lxml2 -framework StoreKit -lTiCore -lAPSHTTPClient -framework ExternalAccessory -ltiverify -lti_ios_debugger -lti_ios_profiler -Xlinker -dependency_info -Xlinker /Users/fokkezb/dev/tests/folderx/build/iphone/build/folder.build/Debug-iphonesimulator/folder.build/Objects-normal/i386/folder_dependency_info.dat -o /Users/fokkezb/dev/tests/folderx/build/iphone/build/Debug-iphonesimulator/folder.app/folder [TRACE] ld: warning: instance method 'sqliteDB' in category from /Users/fokkezb/dev/tests/folderx/build/iphone/build/folder.build/Debug-iphonesimulator/folder.build/Objects-normal/i386/PLSqliteDatabase.o overrides method from class in /Users/fokkezb/dev/tests/folderx/build/iphone/build/folder.build/Debug-iphonesimulator/folder.build/Objects-normal/i386/PLSqliteDatabase.o [TRACE] ld: can't open output file for writing: /Users/fokkezb/dev/tests/folderx/build/iphone/build/Debug-iphonesimulator/folder.app/folder, errno=21 for architecture i386 [TRACE] clang: error: linker command failed with exit code 1 (use -v to see invocation) [ERROR] 2014-09-15 16:31:51.381 xcodebuild[38883:1596530] DeveloperPortal: Using pre-existing current store at URL (file:///Users/fokkezb/Library/Developer/Xcode/DeveloperPortal%206.0.db). [ERROR] ** BUILD FAILED ** [ERROR] The following build commands failed: [ERROR] Ld build/Debug-iphonesimulator/folder.app/folder normal i386 [ERROR] (1 failure) {code} This issue has been reported before on Q&A: https://developer.appcelerator.com/question/131687/project-cant-run-on-simulator h1. Solution Ideally it should work, but if it doesn't, then it would be nice if the CLI refuse to build the project, asking to rename the folder. In Studio a warning could also be given when a user wants to create the folder.",8 +"TIMOB-17693","09/15/2014 22:31:26","iOS: Support missing properties for UITextField inside Ti.UI.AlertDialog","h3. Request Customer is asking to add keyboardType support to createAlertDialog in iOS. When an AlertDialog is created in iOS with PLAIN_TEXT_INPUT is showing UIKeyboardTypeDefault, in certain use cases is required to use other keyboards like the numberPad (Zip Code search, PIN code). h3. Additional info This behaviour is possible in native iOS projects like this: {code} UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@""Hello!"" message:@""Please enter your name:"" delegate:self cancelButtonTitle:@""Continue"" otherButtonTitles:nil]; alert.alertViewStyle = UIAlertViewStylePlainTextInput; UITextField * alertTextField = [alert textFieldAtIndex:0]; alertTextField.keyboardType = UIKeyboardTypeNumbersAndPunctuation; alertTextField.placeholder = @""Enter your name""; [alert show]; {code}",5 +"TIMOB-17695","09/16/2014 00:23:21","iOS8: enabledRemoteNotificationTypes - ""enabledRemoteNotificationTypes is not supported"" message appears if you include Crittercism module","*Details:* ""enabledRemoteNotificationTypes is not supported"" message appears if you include the Crittercism module in your app. *Note:* Through process of elimination, I was able to determine that the Crittercism module was returning the message i.e. enabled each services (Aanalytics, ACS, SOASTA, Crittercism) one by one. *Steps to reproduce:* 1. Create a default Titanium classic app with services enabled 2. Install app to an iOS 8 device or simulator 3. Once the app launches, press the home button to background the app 4. Then, bring the app back to the foreground *Actual:* The following message appears in console: {{enabledRemoteNotificationTypes is not supported in iOS 8.0 and later.}} *Expected:* The *enabledRemoteNotificationTypes is not supported* message should not appear for default apps.",5 +"TIMOB-17696","09/16/2014 00:34:49","CLI: Can't set search path for detecting Xcode installations","If you try to set a custom search path for Xcode installations, ""ti config"" fails with: {code} chris@yojimbo:~/$ ti config paths.xcode ~/Desktop/ [ERROR] Unsupported key paths.xcode {code}",3 +"TIMOB-17699","09/16/2014 05:43:18","CLI: Running ""ti build -p iOS -T simulator --no-prompt"" command outside project directory throws error 'cannot read property deployment-targets of undefined'.","Description: Running ""ti build -p iOS -T simulator --no-prompt"" command outside the project directory throws error instead of giving proper error message for required fields. This is a regression.With CLI 3.3.0 and Titanium SDK 3.3.0.GA, command gives the proper error message for the missing parameter instead of throwing an error. [ERROR] Invalid ""--project-dir"" value ""."" STEPS TO REPRODUCE:- 1. Open a terminal window 2. Create a project in the workspace and don't cd to the project. 3. Run ""ti build -p ios -T simulator --no-prompt"" command outside the project directory. EXPECTED RESULT 3. The CLI should give proper message for the required missing parameter instead of throwing an error 'cannot read property deployment-targets of undefined'. ACTUAL RESULT 4. The CLI throws an error 'Cannot read property 'deployment-targets' of undefined' instead of giving proper error message to user for required missing parameter. {code} KAGRAWAL-MBP:~ kagrawal$ ti build -p ios -T simulator --no-prompt Titanium Command-Line Interface, CLI version 3.4.0-rc3, Titanium SDK version 3.4.0.v20140915175720 Copyright (c) 2012-2014, Appcelerator, Inc. All Rights Reserved. Please report bugs to http://jira.appcelerator.org/ /usr/local/lib/node_modules/titanium/node_modules/longjohn/dist/longjohn.js:185 throw e; ^ TypeError: Cannot read property 'deployment-targets' of undefined at iOSBuilder.getDeviceFamily (/Users/kagrawal/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140915175720/iphone/cli/commands/_build.js:239:37) at callback.options.device-id.verifyIfRequired (/Users/kagrawal/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140915175720/iphone/cli/commands/_build.js:570:29) at CLI. (/usr/local/lib/node_modules/titanium/lib/cli.js:606:16) at /usr/local/lib/node_modules/titanium/node_modules/async/lib/async.js:551:21 at /usr/local/lib/node_modules/titanium/node_modules/async/lib/async.js:227:13 at iterate (/usr/local/lib/node_modules/titanium/node_modules/async/lib/async.js:134:13) at /usr/local/lib/node_modules/titanium/node_modules/async/lib/async.js:145:25 at /usr/local/lib/node_modules/titanium/node_modules/async/lib/async.js:229:17 at /usr/local/lib/node_modules/titanium/node_modules/async/lib/async.js:556:34 at CLI. (/usr/local/lib/node_modules/titanium/lib/cli.js:664:9) --------------------------------------------- at Object.run (/Users/kagrawal/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140915175720/node_modules/node-appc/lib/subprocess.js:59:8) at async.eachSeries.cache (/Users/kagrawal/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140915175720/node_modules/ioslib/lib/simulator.js:186:21) at iterate (/Users/kagrawal/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140915175720/node_modules/ioslib/node_modules/async/lib/async.js:149:13) at /Users/kagrawal/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140915175720/node_modules/ioslib/node_modules/async/lib/async.js:160:25 at /Users/kagrawal/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140915175720/node_modules/ioslib/lib/simulator.js:227:7 at ChildProcess. (/Users/kagrawal/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140915175720/node_modules/node-appc/lib/subprocess.js:60:3) at EventEmitter.emit (events.js:98:17) KAGRAWAL-MBP:~ kagrawal$ {code} ",3 +"TIMOB-17700","09/16/2014 06:44:47","CLI: Hitting the enter key after entering the data for CLI prompts in CLI setup wizard, does not take the cursor to next line","Description: While doing some regression testing, I have come across an issue due to which I am unable to run number of CLI commands that takes input from user. The issue is with hitting the enter key after giving the input data. Hitting the enter key will not take the cursor to next line.It is triggering a space on the terminal.Need to do CTR + c to come out of it.Hence not able to run some CLI commands like ti sdk select, ti setup, ti login etc. Test machine details: Initially the system had the setup CLI 3.4.0-rc3 and titanium SDK 3.4.0.v20140915175720. Then, I have only switched CLI to CLI 3.3.0 version and titanium SDK remains the same 3.4.0.v20140915175720. Run the CLI ""ti sdk select"" command and faced the above mentioned issue with hitting the enter key. STEPS TO REPRODUCE: 1. Install CLI 3.4.0-rc3 and titanium SDK 3.4.0.v20140915175720 on machine.The ti SDK is set to 3.4.0.v20140915175720 with CLI. 2. Install the CLI 3.3.0 and ti SDK will remain the same as 3.4.0.v20140915175720. 3. Run ""ti setup"" command.Then CLI prompts for various options, then enter the data, hit enter key. 4. Run ""ti sdk select"" command and choose the required sdk and hit the enter key.Make sure you are having more than one ti SDK installed on your system. 5. Run ""ti login"" command and enter the user name and hit the enter key. EXPECTED RESULT: 3. The cursor should go to next line and CLI will prompt for the next input data. 4. The required SDK configuration should be set. 5. The cursor moves to next line and CLI should prompt for the password. ACTUAL RESULT: 3. Hitting the enter key, triggers a space on terminal and not able to go to next prompt. 4. Hitting the enter key triggers a space and does not set the configured sdk. 5. Hitting the enter key does not take the cursor to next line for password prompt.Instead the enter key triggers a space on terminal. Please refer the attached screenshots. The issue is reproducible with other machines as well. I have uninstalled the CLI and all the titanium sdk versions installed on my system. Then freshly installed only titanium SDK 3.4.0.v20140915175720 and CLI 3.4.0-rc3. But still facing the same issue with hitting the enter key with the mentioned CLI commands.The enter key is still triggering the space.",1 +"TIMOB-17702","09/16/2014 14:10:00","Android: TableViewRow: hasCheck icon very small on high DPI screens","On higher DPI Android screens, the hasCheck icon is so small as to be nearly impossible to see. Add to it that it is gray and it's easy to think that the icon is not being shown at all. Expected results: check mark would display the same relative size on all devices regardless of the screen's DPI. In other words, that we'd be supplying graphics for each of the supported display classes. {code} var win = Ti.UI.createWindow(); var table = Ti.UI.createTableView(); for(var i=0;i<10;i++){ table.appendRow(Ti.UI.createTableViewRow({title: 'Row', hasCheck: true})); } win.add(table); win.open(); {code} ",3 +"TIMOB-17705","09/16/2014 15:27:57","iOS8: Handle action types for Remote Notifications as well","Currently only actions on Local Notifications are handled. We, as Titanium Developers, can display Remote Notifications with Actions, but a click on one of the buttons is never received by the app. In TiApp.m the following is implemented for Local Notifications {code} - (void) application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier forLocalNotification:(UILocalNotification *)notification completionHandler: {code} See: https://github.com/appcelerator/titanium_mobile/blob/master/iphone/Classes/TiApp.m#L441 A similar AppDelegate function has to be implemented to handle Actions on Remote Notifications {code} - application:handleActionWithIdentifier:forRemoteNotification:completionHandler: {code} See: https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UIApplicationDelegate_Protocol/#//apple_ref/occ/intfm/UIApplicationDelegate/application:handleActionWithIdentifier:forRemoteNotification:completionHandler: I reckon that the implementation can be similar to {code} - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {code} See: https://github.com/appcelerator/titanium_mobile/blob/master/iphone/Classes/TiApp.m#L825 With in addition a key in the event details which action was triggered.",8 +"TIMOB-17703","09/16/2014 16:18:10","""Ti.UI.Dashboarditem"" badges are not correctly displayed on iPhone 6/6+ simulator","h5. Problem description Ti.UI.Dashboarditem object is not displaying badges and the close 'X' button correctly on iPhone 6 and iPhone 6+ simulators. Those are correctly displayed on iPad mini device with iOS 8. h5. Steps to reproduce Sample code attached extracted from KitchenSink - so to reproduce, either run Kitchensink and go to Views>Dashboard Views or run the attached sample project. 1. Run the sample on both iPhone 6 simulators and iOS device with iOS 8 and check the Dashboarditem badge for the first item. Result: Badge displayed is on the top left, just a white number. See comparison screenshots. 2. Click and hold to re-order or delete the icons Result: 'Delete' button is displayed with no 'X' in the middle. See comparison screenshots.",5 +"TIMOB-17727","09/16/2014 21:11:19","Insights: iOS 8: login keyboard causes login menu to disappear","Insights: iOS 8: login keyboard causes login menu to disappear. Test Steps: 1. View login menu. 2. Invoke login keyboard. Result: Keyboard appears, login menu scrolls out of sight to top of screen. User can enter username and password to login, though the fields are not visible during keyboard use. Expected Result: Login menu location persists during keyboard invocation.",8 +"TIMOB-17707","09/16/2014 22:12:37","iOS8: change Ti.App.iOS event name from 'backgroundNotification' to 'localnotificationaction'","Change Ti.App.iOS event name from 'backgroundNotification' to 'localnotificationaction'. The current name of the event does not accurately reflect the purpose of the event. Because of this, it needs to be changed to something more meaningful. h5. Test Instructions 1. Run the code below 2. Click 'registerUserNotificationSettings' and then Allow 3. Click 'scheduleLocalNotification' 4. Background the app 5. Swipe down from the top of the device to see the notification center 6. Swipe the notification to the left and click one of the buttons 7. If 'localnotificationaction' is displayed in the device log, then the event was fired correctly {code} var rows = [ { title: 'currentUserNotificationSettings', onClick: function(){ // iOS 8 + var settings = Ti.App.iOS.currentUserNotificationSettings; logUserNotificationSettings(settings); } }, { title: 'registerUserNotificationSettings', onClick: function(){ // iOS 8 + // The following action launches the application in the foreground and requires the device to be unlocked var acceptAction = Ti.App.iOS.createUserNotificationAction({ identifier: ""ACCEPT_IDENTIFIER"", title: ""Accept"", activationMode: Ti.App.iOS.USER_NOTIFICATION_ACTIVATION_MODE_FOREGROUND, destructive: false, authenticationRequired: true }); var foregroundCategory = Ti.App.iOS.createUserNotificationCategory({ identifier: ""FOREGROUND_CATEGORY"", // The following actions will be displayed for an alert dialog actionsForDefaultContext: [acceptAction], // The following actions will be displayed for all other notifications actionsForMinimalContext: [acceptAction] }); Ti.App.iOS.registerUserNotificationSettings({ types: [Ti.App.iOS.USER_NOTIFICATION_TYPE_ALERT, // Ti.App.iOS.USER_NOTIFICATION_TYPE_SOUND, Ti.App.iOS.USER_NOTIFICATION_TYPE_BADGE], categories: [foregroundCategory] }); } }, { title: 'scheduleLocalNotification', onClick: function(){ Ti.App.iOS.scheduleLocalNotification({ date: new Date(new Date().getTime() + 3000), alertBody: ""New content available! Download now?"", badge: 1, userInfo: {""url"": ""http://www.download.com/resource/asset.json""}, category: ""FOREGROUND_CATEGORY"" }); } } ]; function logInApp(text) { textLog.value = textLog.value + '\n' + text; } function logUserNotificationSettings(settings) { logInApp('UserNotificationSettings: '); logInApp('types: ' + JSON.stringify(settings.types)); var categories = []; for (var i = 0, j = settings.categories.length; i < j; i++) { categories.push(settings.categories[i].identifier); } logInApp('categories: ' + JSON.stringify(categories)); } Ti.App.iOS.addEventListener('usernotificationsettings', function(e) { logInApp('Event: usernotificationsettings'); logUserNotificationSettings(e); }); Ti.App.iOS.addEventListener('localnotificationaction', function(e) { logInApp('localnotificationaction'); logInApp('- category: ' + e.category + ' identifier: ' + e.identifier); }); //////////////////////////////////////////////////////// // UI //////////////////////////////////////////////////////// var win = Ti.UI.createWindow({ backgroundColor: 'white' }); win.open(); var textLog = Ti.UI.createTextArea({ top: 0, height: '20%', width: '100%', borderWidth: '2', borderColor: '#000', value: 'AppLog: see device log for more info' }); win.add(textLog); var tableView = Ti.UI.createTableView({ top: '20%', data: rows }); tableView.addEventListener('click', function(e){ e.source.onClick && e.source.onClick(); }); win.add(tableView); {code}",3 +"TIMOB-17710","09/16/2014 22:45:54","CLI: SDK contains incomplete/outdated ioslib and fields libraries","The {{ioslib}} module that is distributed with the Titanium SDK is incomplete and missing code. Additionally, the {{fields}} prompt library is out of date and needs to be updated to fix a number of bugs including prompt issues when you have duplicate select list items such as dupe iOS certs.",5 +"TIMOB-17711","09/16/2014 23:20:16","Android: Ti.Android.getCurrentService() fails with an exception","h1. Problem description Calling Ti.Android.getCurrentActivity() always fails with an exception in the logs. {code} E/TiJSError( 1288): (main) [2,1195] - Message: Uncaught TypeError: Object # has no method 'getCurrentService' {code} h1. Steps to reproduce Use this simple app to test: {code} Titanium.UI.setBackgroundColor('#000'); var win1 = Titanium.UI.createWindow({ backgroundColor:'#fff', fullscreen: true }); win1.open(); Titanium.API.info(""Activity: "" + Titanium.Android.getCurrentService()); {code} Changing from getCurrentService() to currentService (direct access to the property) works fine.",3 +"TIMOB-17712","09/17/2014 00:07:38","iOS8: if the user rotates the device when exiting image capture the orientation of the device is in the opposite orientation it should be in","I have already consumed the change from TIMOB-17662 by setting autorotate to false in CameraDevice.js and this issue is still present. I initially mentioned this issue in Case 2640 which has been closed so that we can focus on this specific case. I have uploaded an app called 9-16-OppositeOrientationTest.zip and screenshots which illustrate this issue. CASE 1 (landscape window in portrait mode) # Launch the app in Landscape mode with the Home button on the right # Rotate the app around, notice the UI changes to reflect the orientation correctly. # Get it back into landscape mode (Home button on right). # Click Launch Camera # Click the (X) button and then immediately rotate the tablet to portrait up or portrait down. ## Notice that the image capture view will close and the app then rotates into landscape orientation. It should rotate to portrait orientation. See screenshot Home On Bottom.png CASE 2 (portrait window in landscape) # Kill the app # Launch the app in Landscape mode with the Home button on the right # Rotate the app around, notice the UI changes to reflect the orientation correctly. # Rotate the app to portrait mode (Home button on bottom). # Click Launch Camera # Click the (X) button and then immediately rotate the tablet to landscape left up or landscape right. ## Notice that the image capture view will close and the app then rotates into portrait orientation. It should rotate to landscape orientation. See screenshot Home On Right.png h5. Issue reproducible with the following code {code} var win = Ti.UI.createWindow({ backgroundColor: 'white' }); var button = Ti.UI.createButton({ title: 'Open', top: 50, left: 10, right: 10, height: 50 }); win.add(button); win.open(); button.addEventListener('click', function() { Ti.API.info('click'); Ti.Media.showCamera({ success: success, error: error, saveToPhotoGallery: false, allowEditing: false, mediaTypes: [Ti.Media.MEDIA_TYPE_PHOTO], showControls: true, autohide: false }); function success(e) { Ti.API.info('Success'); } function error(e) { Ti.API.info('Success'); } }); {code}",5 +"TIMOB-17715","09/17/2014 03:17:18","Android: Cannot open new window after last window closes","After closing the last window on Android, when attempting to open a new window, the app crashes with the ""Unfortunately app has stopped"" message. Here is the stack trace that I get: {noformat} E/AndroidRuntime( 2450): FATAL EXCEPTION: main E/AndroidRuntime( 2450): Process: com.appdev.test, PID: 2450 E/AndroidRuntime( 2450): java.lang.NullPointerException E/AndroidRuntime( 2450): at android.content.ComponentName.(ComponentName.java:77) E/AndroidRuntime( 2450): at android.content.Intent.(Intent.java:3813) E/AndroidRuntime( 2450): at ti.modules.titanium.ui.WindowProxy.handleOpen(WindowProxy.java:128) E/AndroidRuntime( 2450): at org.appcelerator.titanium.proxy.TiWindowProxy.handleMessage(TiWindowProxy.java:88) E/AndroidRuntime( 2450): at ti.modules.titanium.ui.WindowProxy.handleMessage(WindowProxy.java:399) E/AndroidRuntime( 2450): at android.os.Handler.dispatchMessage(Handler.java:98) E/AndroidRuntime( 2450): at android.os.Looper.loop(Looper.java:136) E/AndroidRuntime( 2450): at android.app.ActivityThread.main(ActivityThread.java:5017) E/AndroidRuntime( 2450): at java.lang.reflect.Method.invokeNative(Native Method) E/AndroidRuntime( 2450): at java.lang.reflect.Method.invoke(Method.java:515) E/AndroidRuntime( 2450): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) E/AndroidRuntime( 2450): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) E/AndroidRuntime( 2450): at dalvik.system.NativeStart.main(Native Method) {noformat} Here is the test case that I am using: {code:javascript} var openWindow = function(index) { var window = Ti.UI.createWindow({ backgroundColor: 'white', title: 'Window ' + index }); var button = Ti.UI.createButton({ width: 80, height: 40, title: 'Button' }); button.addEventListener('click', function() { window.close(); openWindow(index + 1); }); window.add(button); window.open(); }; openWindow(1); {code} It successfully closes the first window but crashes when attempting to open the second window. It works when opening the second window before closing the first.",2 +"TIMOB-17718","09/17/2014 08:24:16","iOS8: Ti.Platform.displayCaps.density - requires new value for iPhone 6+ specifically","When running the latest Ti SDK 3.4 16th Sep the app now starts up and correctly reports the display caps. The density value is ""high"" for the @2x devices; iPhone 4, iPhone 4s, iPhone 5, iPhone 5s & iPhone 6 - which is correct. However the iPhone 6+ which is a @3x should gain a new value for the density property to help distinguish it from the other devices. The dpi does change, but as that could be different for different families of iDevices it cannot be used without also checking other values to confirm - which will get ever more complicated. Android devices report back a different value for all of their densities, I think @3x on an iDevice should also be distinct from @1x & @2x devices. All other values appear correct, quick tests from the top three devices; iPhone 6+ Ti.Platform.displayCaps.density: high Ti.Platform.displayCaps.dpi: 480 Ti.Platform.displayCaps.platformHeight: 736 Ti.Platform.displayCaps.platformWidth: 414 Ti.Platform.model: Simulator Ti.Platform.name: iPhone OS Ti.Platform.osname: iphone Ti.Platform.ostype: 32bit iPhone 6 Ti.Platform.displayCaps.density: high Ti.Platform.displayCaps.dpi: 320 Ti.Platform.displayCaps.platformHeight: 667 Ti.Platform.displayCaps.platformWidth: 375 Ti.Platform.model: Simulator Ti.Platform.name: iPhone OS Ti.Platform.osname: iphone Ti.Platform.ostype: 32bit iPhone 5 Ti.Platform.displayCaps.density: high Ti.Platform.displayCaps.dpi: 320 Ti.Platform.displayCaps.platformHeight: 568 Ti.Platform.displayCaps.platformWidth: 320 Ti.Platform.model: Simulator Ti.Platform.name: iPhone OS Ti.Platform.osname: iphone Ti.Platform.ostype: 32bit",5 +"TIMOB-17716","09/17/2014 19:21:18","iOS: Build does not properly error when no distribution certs exist","When building an iOS app for dist-appstore and you do not have any distribution certs, it does not properly error and exit the build. Instead it displays a message if {{ios.distributionName}} is set, otherwise does not display an error. {code} ti build -p ios -T dist-appstore Titanium Command-Line Interface, CLI version 3.5.0-dev, Titanium SDK version 3.5.0 Copyright (c) 2012-2014, Appcelerator, Inc. All Rights Reserved. Please report bugs to http://jira.appcelerator.org/ [ERROR] Invalid distribution certificate ""Appcelerator, Inc. (WP4952RUHJ)"" {code} The build will continue and eventually die because distributionName is undefined: {code} [INFO] Deploy type: production [INFO] Building for target: dist-appstore [INFO] Building using iOS SDK: 8.0 [INFO] Building for device family: universal [DEBUG] Setting Xcode target to Release [DEBUG] Setting Xcode build OS to iphoneos8.0 [DEBUG] Xcode installation: /Applications/Xcode-6.0.1.app/Contents/Developer [DEBUG] iOS WWDR certificate: installed [DEBUG] Building for the following architectures: armv7 armv7s i386 [ERROR] Failed to run command ""build"" [ERROR] TypeError: Cannot read property 'cyan' of null at iOSBuilder.loginfo (/Users/chris/Library/Application Support/Titanium/mobilesdk/osx/3.5.0/iphone/cli/commands/_build.js:1612:85) at /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/3.5.0/node_modules/node-appc/node_modules/async/lib/async.js:610:21 at /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/3.5.0/node_modules/node-appc/node_modules/async/lib/async.js:249:17 at iterate (/Users/chris/Library/Application Support/Titanium/mobilesdk/osx/3.5.0/node_modules/node-appc/node_modules/async/lib/async.js:149:13) at /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/3.5.0/node_modules/node-appc/node_modules/async/lib/async.js:160:25 at /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/3.5.0/node_modules/node-appc/node_modules/async/lib/async.js:251:21 at /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/3.5.0/node_modules/node-appc/node_modules/async/lib/async.js:615:34 at iOSBuilder.initialize (/Users/chris/Library/Application Support/Titanium/mobilesdk/osx/3.5.0/iphone/cli/commands/_build.js:1578:2) at /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/3.5.0/node_modules/node-appc/node_modules/async/lib/async.js:610:21 at /Users/chris/Library/Application Support/Titanium/mobilesdk/osx/3.5.0/node_modules/node-appc/node_modules/async/lib/async.js:249:17 {code} In theory the build will not properly error out when you don't have any keychains, you don't have the WWDR cert installed, there are no valid developer certs, there are no valid distribution certs, and no valid development provisioning profiles.",5 +"TIMOB-17717","09/17/2014 19:35:30","Update ti.cloud module shipped with the SDK to v3.2.4","Need to update the ti.cloud to v3.2.4 in titanium_mobile. h6. ti.cloud 3.2.4 changes: * TIMODOPEN-416 * TIMODOPEN-423 * TIMODOPEN-432 Also need to update https://github.com/appcelerator/titanium_releases/blob/master/titanium.json",2 +"TIMOB-17719","09/17/2014 22:08:46","iOS8: Alert dialog does not consider window orientation modes when keyboard is displayed","h3. Issue When the alert dialog is called with an input text style and a orientation mode restricted to Portrait and the device is rotated to landscape the alertDialog keeps rotating but only if the keyboard is being displayed, if the keyboard is hiding the alert will not rotate. h3. Step to reproduce 1. Run the test code 2. Tap on the ""Welcome to Titanium"" for the alert to be displayed 3. Try to rotate the device. 4. Go back to portrait and tap on the input text box. 5. Try to rotate the device h5. Expected Results The alert will not rotate and remain in portrait mode. h5. Actual results When the keyboard is hidden the alert will not rotate, once the keyboard is displayed the alert will begin to rotate h3. Test Code {code} var win = Ti.UI.createWindow({ orientationModes: [Ti.UI.PORTRAIT], backgroundColor:'#ffffff' }); var label = Ti.UI.createLabel({ color:'#000000', text:String.format(L('welcome'),'Titanium'), height:'auto', width:'auto' }); label.addEventListener('click', function(e) { var alertDialog = Ti.UI.createAlertDialog({ title: ""Alert Dialog"", message: ""akjskajksa skajskajksjas akjskajskjaks aksjakjsa aksjakjsa aksjakjsa aksjakjsa aksjakjsa aksjakjsa aksjakjsa"", style: Ti.UI.iPhone.AlertDialogStyle.PLAIN_TEXT_INPUT }); alertDialog.show(); }); win.add(label); win.open(); {code}",3 +"TIMOB-17723","09/18/2014 07:59:47","iOS8: Provide support for the WKWebView as Titanium's WebView in iOS","h4. Problem Description There is a new WebView for iOS 8 that it's a lot faster than the previous/classic WebView. It might be useful to provide a better experience to the end users. h4. Extra info https://developer.apple.com/library/ios/documentation/WebKit/Reference/WKWebView_Ref/index.html h4. Benchmarks http://developer.telerik.com/featured/why-ios-8s-wkwebview-is-a-big-deal-for-hybrid-development/",13 +"TIMOB-17736","09/18/2014 09:07:35","iOS: Titanium.Filesystem.File.write - Images don't save properly","h3. Steps to Reproduce I use Titanium Studio 3.4.0.201409161931 and Titanium SDK 3.4.0.v20140909222515 I have a function for save an image from the iphone bibliotheque into the app. Before update to the last version of Titanium for test to iOs8 they worked correctly. h3. Actual Result 0 h3. Expected Result The height of the image",3 +"TIMOB-17726","09/18/2014 18:57:52","iOS: Support Ti.Platform.displayCaps.logicalDensityFactor","After discussion on TIMOB-17718, we believe that we should enable Ti.Platform.displayCaps.logicalDensityFactor available under iOS as well and return \[UIScreen mainScreen\].scale;",5 +"TIMOB-17740","09/19/2014 04:02:37","iOS: Aborting upload causes file to stay in RAM","h4. Problem Description When aborting a file upload the file that was loaded into ram is kept in ram. The ram does not get cleared unless the upload is completed. So every file thats uploaded and aborted is being kept in active ram on the device. If a user uploads a file and aborts the upload multiple times ram usage becomes very high and will cause the app to crash. This did not happen with release-3.2.3 the ram would get cleared when the upload was aborted. When watching instruments while preforming a upload you can watch ram using spike on each upload but never be released. h4. Steps to reproduce 1. Create new mobile project (classic titanium) 2. Please copy the Attached file to the Resources directory. 3. Paste the Sample Code to app.js ( to test with large upload file that will automatically abort after 2.5 seconds) : {code:title=app.js|borderStyle=solid} var win = Titanium.UI.createWindow({backgroundColor:'#fff',layout:'vertical'}); var ind = Titanium.UI.createProgressBar({ width:200, height:50, min:0, max:1, value:0, top:10, message:'Progress', font:{fontSize:12, fontWeight:'bold'}, color:'#888' }); win.add(ind); ind.show(); addButton({ title: 'Upload File', callback: function(e) { ind.value = 0; var canceled = false; var file = Titanium.Filesystem.getFile(Titanium.Filesystem.resourcesDirectory,'sunset.jpg'); var uploadfile = file.read(); var httpClient = Titanium.Network.createHTTPClient(); httpClient.setTimeout(12000); var uploadStartTime = new Date().getTime(); httpClient.onsendstream = function(e){ ind.value = e.progress; // The upload is cancelled at 25% if (e.progress >= 0.25) { httpClient.abort(); httpClient = null; } }; httpClient.open('POST', 'http://cachefly.cachefly.net'); httpClient.send({media:uploadfile}); } }); addButton({ title: 'Open Window', callback: function(e) { openWindow(); } }); function addButton(args) { var b1 = Ti.UI.createButton({ title: args.title, top: 40 }); b1.addEventListener('click', args.callback); win.add(b1); } function openWindow() { var win2 = Ti.UI.createWindow({ backgroundColor: 'blue', layout:'horizontal' }); for (var i=0;i<500;i++) { var v = Ti.UI.createView({ backgroundColor: 'red', height: 50, width: 50, top:5, left:5 }); var l = Ti.UI.createLabel({text: i}) v.add(l); win2.add(v); } win2.addEventListener('click', function() { win2.close(); }); win2.open(); } win.open(); {code} ",8 +"TIMOB-17734","09/22/2014 08:55:26","iOS: ImageLoader doesn't support @3x","The ImageLoader utility class doesn't have support for Retina HD (@3x) images: - serialize: https://github.com/appcelerator/titanium_mobile/blob/master/iphone/Classes/ImageLoader.m#L249-L251 - entryForKey: https://github.com/appcelerator/titanium_mobile/blob/master/iphone/Classes/ImageLoader.m#L499-L502 Pull Request: https://github.com/appcelerator/titanium_mobile/pull/6142",13 +"TIMOB-17738","09/23/2014 01:00:25","iOS8: Ti.Ui.iPad.createSplitWindow shows blank screen when orientation is changed","SDK 3.4.0.GA - iPad 2 iOS8 Blank screen comes up when rotating the window. The code was taken from the documentation which can be found here. http://docs.appcelerator.com/titanium/latest/#!/api/Titanium.UI.iPad.SplitWindow ",8 +"TIMOB-17744","09/23/2014 21:26:07","iOS8: Touch ID Feature Request to support separate call for canEvaluatePolicy","h6.Feature Description Reviewing the documentation and working with the Ti 3.4 SDK we have discovered that the only call available on the touchid module is to the function ""authenticate"". Without the ability to separately call a function that interfaces with the iOS canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometric we are unable to make a check that determines if Touch ID has being configured correctly on this device. We need to functionality to alert the user when they attempt to setup this feature in our client. h6.Request We realize that canEvaluatePolicy is invoked as part of the authenticate function, but this does not suit our needs as we do not want to prompt the user for touch id when all we want to do is determine if its configured. Ideally we would like a function that implements the following: {code} if ([context canEvaluatePolicy: LAPolicyDeviceOwnerAuthenticationWithBiometrics error:nil]) { // return true } {code}",2 +"TIMOB-17754","09/24/2014 20:28:11","Android: Throw an event after each AJAX call inside a webview","h4. Problem Description The user wants to sync a ecommerce's cart inside a webview with a view showing the number of items in the cart in the app. Therefore, he wants to have an event in the webview that throws an event when the cart is updated via AJAX. h4. Extra information We did some research, and we found some info that could be useful. http://developer.android.com/reference/android/webkit/WebViewClient.html And this method public WebResourceResponse shouldInterceptRequest (WebView view, String url) StackOverFlow mentioned that method as a way to catch ajax calls: http://stackoverflow.com/questions/3941969/android-intercept-ajax-call-from-webview ",3 +"TIMOB-17758","09/24/2014 23:41:49","Unhandled exception when using the CLI to build for iOS","If an app doesn't have iphone as a valid deployment target in tiapp.xml and try to build for iOS with {code}ti build -p ios{code} you'll get an error like this: [ERROR] Failed to run command ""build"" [ERROR] TypeError: Cannot read property 'cyan' of undefined at iOSBuilder.loginfo (/Users/ralcocer/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140916181713/iphone/cli/commands/_build.js:1601:73) at /Users/ralcocer/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140916181713/node_modules/node-appc/node_modules/async/lib/async.js:610:21 at /Users/ralcocer/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140916181713/node_modules/node-appc/node_modules/async/lib/async.js:249:17 at iterate (/Users/ralcocer/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140916181713/node_modules/node-appc/node_modules/async/lib/async.js:149:13) at /Users/ralcocer/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140916181713/node_modules/node-appc/node_modules/async/lib/async.js:160:25 at /Users/ralcocer/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140916181713/node_modules/node-appc/node_modules/async/lib/async.js:251:21 at /Users/ralcocer/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140916181713/node_modules/node-appc/node_modules/async/lib/async.js:615:34 at iOSBuilder.initialize (/Users/ralcocer/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140916181713/iphone/cli/commands/_build.js:1578:2) at /Users/ralcocer/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140916181713/node_modules/node-appc/node_modules/async/lib/async.js:610:21 at /Users/ralcocer/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140916181713/node_modules/node-appc/node_modules/async/lib/async.js:249:17 --------------------------------------------- at exports.execFile (child_process.js:691:9) at exports.exec (child_process.js:578:18) at /Users/ralcocer/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140916181713/node_modules/node-appc/lib/environ.js:251:3 at /Users/ralcocer/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140916181713/node_modules/node-appc/node_modules/async/lib/async.js:254:17 at /Users/ralcocer/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140916181713/node_modules/node-appc/node_modules/async/lib/async.js:157:25 at /Users/ralcocer/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140916181713/node_modules/node-appc/node_modules/async/lib/async.js:251:21 at /Users/ralcocer/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140916181713/node_modules/node-appc/node_modules/async/lib/async.js:615:34 at /Users/ralcocer/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140916181713/node_modules/node-appc/lib/environ.js:218:7",5 +"TIMOB-17761","09/25/2014 11:38:48","Launch images for iPhone 6 and 6+ in i18n not copied","The [{{titanium-sdk}}|https://github.com/appcelerator/titanium_mobile/blob/58198c641d77e17d156431666e80bae732b5c130/node_modules/titanium-sdk/lib/i18n.js#L64] module which is part of the SDK needs to be updated for the new iPhone 6 and 6+ launch images. *If this is not changed, localized apps will not have launch images on iPhone 6 and 6+, preventing them from publishing for these devices correctly.* I've created a PR that fixes this and is future proof for other subtypes ({{h667}}) and scales ({{@3x}}) as well: * master: https://github.com/appcelerator/titanium_mobile/pull/6161 * 3_4_X: https://github.com/appcelerator/titanium_mobile/pull/6166 To test: 1. Create a project 2. Move the launch images from {{Resources/iphone}} to {{i18n/en}} 3. Add some text to the iPhone 6 and 6+ images in the new folder 3. Build the project 4. Run on iPhone 6 or 6+ and see it is not showing the i18n images",8 +"TIMOB-17762","09/25/2014 20:19:11","iOS 8: Kitchen Sink - Contacts Picker - can not choose properties ","h5. To reproduce 1. Install and run Kitchen Sink 2. Navigate to Phone> Contacts> Contacts Picker 3. Activate ""Stop on property"", press ""Show picker"" and select contact h5. Actual result Contact list closes and no contact information is displayed. h5. Expected result Ability to choose contact's properties It happens on iOS 8 ",5 +"TIMOB-17786","09/26/2014 00:19:18","iOS Map Module: bump version to 2.0.4 and add titanium_mobile","iOS Map Module: bump version to 2.0.4, add to titanium_mobile, update titanium_released ",2 +"TIMOB-19541","09/26/2014 07:40:08","CLI: Display actual version of installed SDKs with ""ti info -t ios"" and ""ti sdk list""","As I've described in https://jira.appcelerator.org/browse/TC-4792 I often rename SDK folders so I don't have to change my project's {{}} elements every time I install a new nightly build. The downside of renaming the folder is that you loose the actual version number. But actually, this version is still in the SDK folder's {{manifest.json}}. What I'd like to request is listing this version at {{ti info -t ios}} and {{ti sdk list}}.",2 +"TIMOB-17788","09/26/2014 12:22:12","iOS8: KitchenSink control ButtonBar property 'Style' does not work","Description: The Style property of ButtonBar control in the KitchenSink doesn't change as per the assigned value.Tested by assigning different constant values like Titanium.UI.iPhone.SystemButtonStyle.BAR,Titanium.UI.iPhone.SystemButtonStyle.BORDERED and Titanium.UI.iPhone.SystemButtonStyle.PLAIN. Style remains the same for all. This is not a regression. It is reproducible with Titanium SDK 3.3.0.GA and Xcode 5.1.1. STEPS TO REPRODUCE:- 1. Install the KitchenSink on iPhone 6/6+ simulator. 2. Navigate to: Controls => Button Bar 3. Click on image in the middle of Toggle Style EXPECTED RESULT: 3. Style should be changed ACTUAL RESULT: 3. Style remains the same. I tried with the different style values but its not changing for any of them. ",2 +"TIMOB-17798","09/26/2014 22:10:26","Android: App crashes in TiResponseCache.peek()","My app is crashing when I use Google Play Services to deliver doubleclick ads. {code:title=console output|borderStyle=solid} [ERROR] : TiDownloadManager: (pool-4-thread-1) [18,3778] Exception downloading http://wwwcache.wral.com/asset/news/local/2014/09/26/14018104/14018104-1411727089-320x180.jpg [ERROR] : TiDownloadManager: java.lang.ClassCastException: com.android.okhttp.HttpResponseCache cannot be cast to org.appcelerator.titanium.util.TiResponseCache [ERROR] : TiDownloadManager: at org.appcelerator.titanium.util.TiResponseCache.peek(TiResponseCache.java:187) [ERROR] : TiDownloadManager: at ti.modules.titanium.ui.widget.TiUIImageView$1.postDownload(TiUIImageView.java:119) [ERROR] : TiDownloadManager: at org.appcelerator.titanium.util.TiDownloadManager$DownloadJob.run(TiDownloadManager.java:151) [ERROR] : TiDownloadManager: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) [ERROR] : TiDownloadManager: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) [ERROR] : TiDownloadManager: at java.lang.Thread.run(Thread.java:841) [DEBUG] : dalvikvm: DexOpt: --- END 'ads646200884.jar' (success) --- {code} (the URL listed in the output is an image that I am loading into an ImageView, so I inferred that the TiDownloadManager is handling the loading of ImageView images) The problem only goes away if I disable DFP ads (I'm using my own ti.dfp module - https://github.com/jpriebe/ti.dfp). I found it strange that it was crashing, because this code was working just a few days ago, and the module had not been changed, nor had I really done anything to the app and the way it handles ImageViews. I scoured android source code, tweets, and forum posts, and I've learned that in android 4.4, Square's okhttp code is supposedly incorporated into HttpUrlConnection. However, I've never found any code for com.android.okhttp.HttpResponseCache. The only code I can find is for com.squareup.okhttp.HttpResponseCache, not ""com.android"". com.squareup.okhttp.HttpResponseCache extends java.net.ResponseCache, just like TiResponseCache does. But the code in TiResponseCache.peek() is only expecting to get back a TiResponseCache object when it calls getDefault(). Changing that might not be trivial, since it depends on the cacheDir member variable of the returned object, and that's not part of the java.net.ResponseCache class. Here's what I think has happened -- google released Google Play Services 6.1.09 on September 23, 2014. It automatically updated on my device. Inside the new Google Play Services is a call to ResponseCache.setDefault(), and they're setting that default to a com.android.okhttp.HttpResponseCache object. Titanium assumes that the default system ResponseCache is the one that it set in TiApplication.java, and it doesn't handle things well when somebody else messes with the default. I don't know what the fix is for this -- I'll leave that to the android platform experts in your employ. But I think it is a critical issue, and will become more obvious in the coming days as this Play Services update propagates. Any app that is using Google Play Services (or at least the DFP portion of it) and the TiDownloadManager will crash. ",5 +"TIMOB-17797","09/27/2014 22:14:11","iOS: Add floor property from CLFloor needed for indoor geolocation","In iOS 8 Apple introduced some APIs for indoor geolocation. See: https://developer.apple.com/library/ios/documentation/CoreLocation/Reference/CLFloor_class/ There is also a slide deck from WWDC 2014 talking about this in more detail. It is a trivial change, but a useful one. The only down side is that finding a list of buildings that have been mapped by Apple is a difficult task. Here is the pull request: https://github.com/appcelerator/titanium_mobile/pull/6176",5 +"TIMOB-17801","09/29/2014 19:37:17","Windows: Cross-platform C++ Logger","A cross platform logger that runs on OS X, Windows Desktop and WinRT (Windows Store and Windows Phone) Requirements - Output INFO, WARNING, DEBUG and ERROR logs - Thread safe - Type safe - Cross platform - Exclude the use of third party libraries",13 +"TIMOB-19536","09/29/2014 20:28:26","Android: When Multiple Views in horizontal layout, ""SIZE"" constrains to the full container size, not the remaining available width","If you create a View with a horizontal layout and a fixed width, and two children, one of fixed width, and one of ""SIZE"" width, the second one will expand to, what appears to be, the full size of the container, even though this makes it run out of the containing view (and get cut off). This works as expected in iOS. Also, if you set the view to FILL, it doesn't get cut off in that case either. Here's an example of code that demonstrates this issue. Note, depending on screen size, part of the ""Alphabet"" label is getting cut off. The amount that gets cut off seems to be dependent on the size of the view I've ID'ed as ""Control"". ",8 +"TIMOB-17804","09/29/2014 23:15:49","iOS8: Refactor OptionDialog","iOS8 has moved over AlertDialog and OptionDialog to UIAlertController Also the correct way to show popovers is now to set the modalPresentationStyle to UIModalPresentationPopover Titanium needs to refactor these three proxy classes. Will probably also need to change the supported API.",13 +"TIMOB-17805","09/29/2014 23:16:03","iOS8: Refactor Popover","iOS8 has moved over AlertDialog and OptionDialog to UIAlertController Also the correct way to show popovers is now to set the modalPresentationStyle to UIModalPresentationPopover Titanium needs to refactor these three proxy classes. Will probably also need to change the supported API.",13 +"TIMOB-17806","09/29/2014 23:24:17","iOS8: Refactor MediaManager","This ticket encompasses the following changes 1. Move from AudioToolbox/AudioSession to AVFoundation/AVAudioSession 2. Refactor Popover associated items for iOS8 ",13 +"TIMOB-17807","09/29/2014 23:24:30","iOS8: Refactor SplitViewController","iOS8 has moved over AlertDialog and OptionDialog to UIAlertController Also the correct way to show popovers is now to set the modalPresentationStyle to UIModalPresentationPopover Titanium needs to refactor these three proxy classes. Will probably also need to change the supported API.",13 +"TIMOB-17808","09/29/2014 23:35:06","CLI: All commands fail when Titanium SDK 3.3.0 or older is the selected SDK","When using Titanium CLI 3.4.0 on Windows or Linux and having a selected SDK or specifying {{\-\-sdk}} of 3.3.0.GA or older will cause all Titanium CLI commands to crash: {code} C:\Users\Thomas Anderson\AppData\Roaming\npm\node_modules\titanium\node_modules\longjohn\dist\longjohn.js:185 throw e; ^ TypeError: Cannot read property 'path' of undefined at removeXcode6 (C:\Users\Thomas Anderson\AppData\Roaming\npm\node_modules\titanium\hooks\tisdk3fixes.js:75:54) at C:\Users\Thomas Anderson\AppData\Roaming\npm\node_modules\titanium\hooks\tisdk3fixes.js:115:4 at C:\Users\Thomas Anderson\AppData\Roaming\npm\node_modules\titanium\lib\hook.js:235:13 at C:\Users\Thomas Anderson\AppData\Roaming\npm\node_modules\titanium\node_modules\async\lib\async.js:551:21 at C:\Users\Thomas Anderson\AppData\Roaming\npm\node_modules\titanium\node_modules\async\lib\async.js:227:13 at iterate (C:\Users\Thomas Anderson\AppData\Roaming\npm\node_modules\titanium\node_modules\async\lib\async.js:134:13) at async.eachSeries (C:\Users\Thomas Anderson\AppData\Roaming\npm\node_modules\titanium\node_modules\async\lib\async.js:150:9) at _asyncMap (C:\Users\Thomas Anderson\AppData\Roaming\npm\node_modules\titanium\node_modules\async\lib\async.js:226:9) at Object.mapSeries (C:\Users\Thomas Anderson\AppData\Roaming\npm\node_modules\titanium\node_modules\async\lib\async.js:216:23) at async.series (C:\Users\Thomas Anderson\AppData\Roaming\npm\node_modules\titanium\node_modules\async\lib\async.js:549:19) --------------------------------------------- at async.setImmediate (C:\Users\Thomas Anderson\AppData\Roaming\npm\node_modules\titanium\node_modules\async\lib\async.js:96:15) at C:\Users\Thomas Anderson\AppData\Roaming\npm\node_modules\titanium\node_modules\async\lib\async.js:696:21 at Array.forEach (native) at _each (C:\Users\Thomas Anderson\AppData\Roaming\npm\node_modules\titanium\node_modules\async\lib\async.js:32:24) at _insert (C:\Users\Thomas Anderson\AppData\Roaming\npm\node_modules\titanium\node_modules\async\lib\async.js:681:11) at q.push (C:\Users\Thomas Anderson\AppData\Roaming\npm\node_modules\titanium\node_modules\async\lib\async.js:708:15) at Object.findExecutable (C:\Users\Thomas Anderson\AppData\Roaming\npm\node_modules\titanium\node_modules\node-appc\lib\subprocess.js:113:8) at resolveNode (C:\Users\Thomas Anderson\AppData\Roaming\npm\node_modules\titanium\lib\titanium.js:97:34) {code} To reproduce, install Titanium CLI 3.4.0 on Windows or Linux, then run {{ti info \-\-sdk 3.3.0.GA}}.",3 +"TIMOB-19339","10/01/2014 05:43:05","iOS: iPad SplitWindow - Hiding master view breaks Navigation Window","After updating Titanium to 3.4.0 and Xcode to 6.0.1, hiding the MasterView of an iPad SplitWindow in portrait mode running iOS 8 causes the second level of a navigationWindow in the master view not to display. To Recreate: Create a basic template app in Studio. Replace the app.js with the attached file, build for iPad running iOS8 and run. Navigate to one of the subMenu's then back. Press the menu button to collapse MasterView, then press again to re-open MasterView. Select a subMenu again. Expected Outcome: The sublist is displayed. Actual Outcome: The sublist does not appear NOTE: This works correctly in iOS7, and works correctly on apps that were built before Xcode6 + Studio 3.4.0 and installed on an iOS7 device which has since been upgraded to iOS8 EDIT: uploaded a more concise app.js",3 +"TIMOB-17811","10/01/2014 11:03:23","CLI: Check for iPhone platform in tisdk3fixes.js breaks Windows environment","At [tisdk3fixes.js:75|https://github.com/appcelerator/titanium/blob/master/hooks/tisdk3fixes.js#L75] you check for {{cli.sdk.platforms.iphone.path}} but actually {{cli.sdk.platforms.iphone}} is undefined. You can add at line 74 the following as a solution: {code:js} // ... if (!cli.sdk.platforms.iphone) { return callback(); } // ... {code} ",2 +"TIMOB-17812","10/01/2014 16:36:23","iOS: Feature Request to initiate the camera access prompt via Titanium Code","h6.Feature Request When building with the 3.4.0.GA TiSDK using the iOS 8 SDK on an iPhone 6 this issue is present. The issue is not that the prompt never shows but that its only triggered by launching the camera. If I want to prompt the user before I launch the camera there is no way to prompt the user. We would like to request the following features for Titanium 3.5.0 SDK: 1. Calling isCameraSupported() triggers the camera allowed prompt 2. If the user says Don't Allow calling isCameraSupported() again should return false, but its returning true which is incorrect. h6.Steps to reproduce # Build attached sample with environment specification # On the device go to settings > general > scroll to bottom, reset > reset Location & privacy # Launch the app and, # Click ""is Camera supported"" button # Notice that it returns 1 which is true # Click Launch Camera (Notice that a prompt is shown asking for access to the camera. # Click Dont allow # Take a picture and accept it # Notice that the picture is black # Accept the picture # Click is Camera Supported # Notice that it returns 1 which is true. h6.Notes The user did not allow camera access so the isCameraSupported should return false. Also the prompt to enable camera access should be triggered by the isCameraSupported call or some other call so that we can ask the user if they want to allow camera access before we launch the camera. Following my steps on step 4 isCameraSupported() returns a 1 that it is supported, and no prompt is shown. Then if you go to step 6 and launch image capture the prompt shows up but at that point the camera is being launched. We need to be able to trigger the prompt on the isCameraSupported call. Now in step 7 click the Dont Allow button and take a picture of the black area, notice its black. Now accept or close the image capture viewfinder. Click as stated in step 11 isCameraSupported(). Notice that its still a 1 which indicates that the camera is supported even though the user has not allowed access. ",8 +"TIMOB-19539","10/01/2014 17:11:19","iOS: ScrollView scrolls to the top when typing text to TextArea","ScrollView scrolls to the top when typing some text to a TextArea. To be more specific when some key is pressed TextArea will show the last added letter and then it will scroll to the top. See end of the attached video when I am trying to type a word... It keeps going up and down. Also TextArea shouldn't be under a keyboard. {code:javascript} var win = Ti.UI.createWindow({ backgroundColor: ""black"" }); var scrollView = Ti.UI.createScrollView({ width: Ti.UI.FILL, height: Ti.UI.FILL, contentWidth: Ti.UI.SIZE, contentHeight: Ti.UI.SIZE }); var textArea = Ti.UI.createTextArea({ width: Ti.UI.FILL, height: Ti.UI.SIZE, suppressReturn : false, scrollable: false, borderWidth: 1, borderColor: ""red"",kjh top: 0 }); scrollView.add(textArea); win.add(scrollView); win.open(); {code}",1 +"TIMOB-17813","10/01/2014 19:22:03","Android: App fails to install for any Android version other than 5.0 with 3.4.1.v20141001062512","h6. Our CLI automation tests caught this issue. Pretty neat. h6. Its confusing if its a regression as we never had android L support in 3.4.0.GA so can't call this technically a regression. h5.Description: 1. Install SDK 3.4.1.v20141001062512. 2. Create a default app in studio. 3. Build for android emulator or device using studio/CLI. h5.Actual Result: 1. The app fails to install and gives error: On device: {code} [ERROR] : Failed to install apk on ""02a31fff08e473f1"" [ERROR] Application Installer abnormal process termination. Process exit value was 1 [ERROR] Application Installer abnormal process termination. Process exit value was 1 {code} On emulator: {code} [ERROR] : Error: INSTALL_FAILED_OLDER_SDK [ERROR] Application Installer abnormal process termination. Process exit value was 1 {code} 2. On looking at the android manifest in the build folder we see: {code} {code} which means when the target sdk version is L it fails. 3. I tried by adding {code} {code} to the tiapp.xml & the app installed without any issues. 4. Installing the app on android L preview device/emulator works fine out of the box. h5.Expected Result: 1. The app should install on the device/emulator successfully.",5 +"TIMOB-17818","10/02/2014 08:13:53","Android: window.exitOnClose closes app on close(), not just back button","The doc states: ""Boolean value indicating if the application should exit when the Android Back button is pressed while the window is being shown."" However, exitOnClose closes the app even when the window is closed programatically. The app should be closed only when back is pressed on the window, as written in the doc. There is little sense in closing an app programmatically. Here is a problematic (but fairly typical) scenario: 1. First time user entry opens login window 2. After login app opens win1 3. Normally, pressing ""back"" on win 1 should close the app (win1.exitOnClose = true) 4. If logged in at entry, the login page is not opened, and the app opens win1. Again, win1.exitOnClose = true usually does the job 5. However, if the user elects to ""logout"" from the app (e.g. logout menu item on win1), then win1 should close (win1.close() called) and the login window should open. But if win1 closes and exitOnClose == true, then the logout closes the app completely. Thus, exitOnClose should function for the back button only. Alternatively, exitOnClose can be a dynamic property: win1 in this case will normally have exitOnClose == true, but in case of a logout event win1.exitOnClose should be set to false.",5 +"TIMOB-19540","10/03/2014 00:47:11","iOS: Ti.Network.HTTPClient does not work in synchronous mode in SDK 3.3.0+","I took the exact code that is in the documentation for Titanium.Network.HTTPClient and it works fine as it is for all environments. I took the sample code and modified it by making the open() call synchronous ([async = false] for 3rd parameter) and it fails in SDK 3.3.0 and 3.4.0. Normally I would not use synchronous mode, however, I inherited a large project that relies on a synchronous call and it fails. The code below is the sample code with the one parameter modified. You can stick this anywhere in a simple project and you should be able to see the problem. Neither onload() or onerror() are called in SDK 3.3.0, but they are in SDK 3.2.3. I've tried on Xcode 5 and 6 and iOS 7 and 8, with the same results. It clearly seems to be a regression in SDK 3.3.0. {code:javascript} var url = ""http://www.appcelerator.com""; var client = Ti.Network.createHTTPClient({ // function called when the response data is available onload : function(e) { Ti.API.info(""Received text: "" + this.responseText); alert('success'); }, // function called when an error occurs, including a timeout onerror : function(e) { Ti.API.debug(e.error); alert('error'); }, timeout : 5000 // in milliseconds }); // Prepare the connection. // BUG: // This code is the sample code from the documentation simply added to the doClick function above. // The only change is to add the 3rd paramater [async] which defaults to 'true'. // When it is 'true', everything works fine, but when set to 'false', neither the onload() or onerror() // functions are called. This code works with SDK 3.2.3, but not with SDK 3.3.0 or 3.4.0. client.open(""GET"", url, false); // Calling with async set to true succeeds //client.open(""GET"", url, true); // Send the request. client.send(); {code}",5 +"TIMOB-17820","10/03/2014 19:51:09","CLI: Unable to build to iOS 8.0 simulator with Xcode 6.1","h5.Description When Xcode 6.1 is selected when attempting to build to an iOS 8.0 simulator the build fails with the error below {code} [ERROR] Unable to find any Xcode installs that has iOS SDK 8.1 and iOS Simulator 8.0 {code} It appears that in Xcode6.1 Apple has *removed the option for an iOS 8.0 sim* as there is no option to create or build to a sim with 8.0 within Xcode itself and that this is the root cause of the issue. However when building to a simulator the option is given if Xcode 6.0.1 and Xcode 6.1 are present in the same folder, is 6.0.1 is removed from the folder then the simulator is not longer presented as an option. When attempting to install to an iOS 8.0.2 device the build does not fail. *Notes* This will only occur if you have *both Xcode 6.0.1 and Xcode 6.1 installed in the applications folder* This occurs on the GA release of Xcode 6.1. The only supported simulators in this release are iOS8.1 and iOS7.1 If Xcode 6.0.1 is set as the default with Xcode 6.1 installed then the option to build to an iOS 8.1 sim is given this then errors with {code} [ERROR] Unable to find any Xcode installs that has iOS SDK 8.0 and iOS Simulator 8.1 {code} h5.Steps To Reproduce 1. Ensure that both Xcode 6.0.1 *AND* Xcode 6.1 are installed in Applications 2. Set your Xcode to 6.1 by installing it and using xcode-select -s 3. In the CLI with ios.autoSelectDevice set to false, type ti build -p ios -T simulator 4. When prompted to select a simulator, choose an iOS 8.0 sim h5.Actual Result The build fails with the error above h5. Expected Result There should not be an option to build with an iOS8.0 simulator if it is not supported by Xcode",0 +"TIMOB-19589","10/04/2014 23:44:01","Android: In ListViews transform is sometimes forgotten","Trying to implement a reversed list (one that has its start at the bottom of the screen) for a messaging app using double rotation (see the reproducibility code) some rows do not get the transformation property. Looks like is the first one to be offscreen that shows this behavior. {code:js} var win = Ti.UI.createWindow(); var items = []; var i = 0, l = 20; for (; i < l; i++) { items.push({ label: { text: 'hallo ' + i } }); } var section = Ti.UI.createListSection({ items: items }); var reversedTemplate = { childTemplates: [ { type: 'Ti.UI.Label', bindId: 'label', properties: { top: 10, right: 10, bottom: 10, left: 10, transform: Ti.UI.create2DMatrix({ rotate: 180 }) } } ] }; var list = Ti.UI.createListView({ defaultItemTemplate: 'reversed', sections: [ section ], separatorInsets: { right: 20, left: 0 }, templates: { reversed: reversedTemplate }, transform: Ti.UI.create2DMatrix({ rotate: 180 }) }); win.add(list); win.open(); {code}",1 +"TIMOB-17822","10/06/2014 23:45:01","CLI: Update node-appc to latest version to address timodule caching","There were some fixes in node-appc's timodule library to address module detection caching.",5 +"TIMOB-17827","10/07/2014 21:20:42","Android: support for android:lines and android:maxLines","h3. Request Currently on Titanium.UI.Label, there is no property to support max.Lines or number of lines similar to Android, customer would like to have this feature enabled. android:lines http://developer.android.com/reference/android/widget/TextView.html#attr_android:lines android:maxLines http://developer.android.com/reference/android/widget/TextView.html#attr_android:maxLines ",3 +"TIMOB-17861","10/09/2014 18:37:55","Android: Please add text settings (font size, family, color) to searchbar and searchview","When I was app developing on Titanium SDK 3.2.3, I was using a custom theme with the parent Theme.Holo.Light. However, after I updated to 3.4.0, we were forced to change the parent theme Theme.AppCompat.Light. Before the change, the color of the searchbar text was black, and it worked fine with the white navigation bar. Now, the color of the text is white, which is almost invisible with the current theme. There is currently no way to change this through Titanium.",3 +"TIMOB-17833","10/09/2014 19:57:01","Run ti-mocha tests as part of Jenkins build","{code} Tools/Scripts/generate_vs_project.sh Mocha cygstart.exe Mocha.WindowsPhone.Win32/Mocha.sln {code} http://social.technet.microsoft.com/wiki/contents/articles/18173.how-to-launch-windows-phone-8-emulator-without-using-visual-studio-2012.aspx http://msdn.microsoft.com/en-us/library/windows/apps/dn632395.aspx#BKMK_commandline ",8 +"TIMOB-17836","10/09/2014 23:40:21","MobileWeb: Update build system to use new windowslib","Integrate the latest https://github.com/appcelerator/windowslib into Mobile Web's build and ""ti info"".",13 +"TIMOB-18268","10/10/2014 11:31:16","Titanium.UI.Picker - minDate / maxDate / value properties are not working","h4. Problem Description Ti.UI.Picker min/max values are not working as expected (doesn't reflect in the running app). h4. Steps to reproduce 1. Create a new mobile project (Classic Titanium) 2. Replace the content of app.js with this code: {code} Ti.UI.backgroundColor = 'white'; var win = Ti.UI.createWindow({ }); var picker = Ti.UI.createPicker({ type : Ti.UI.PICKER_TYPE_DATE, minDate : new Date(1900, 0, 1), maxDate : new Date(), value : new Date(), top : 50 }); win.add(picker); win.open(); picker.addEventListener('change', function(e) { Ti.API.info(""User selected date: "" + e.value.toLocaleString()); }); {code} 3. Run this into a browser. h4. Actual Results 1. setting value property has no effect 2. unwanted borders are added to the date picker. h4. Expected results The setting value working as expected. ",1 +"TIMOB-17840","10/10/2014 11:34:35","Facebook SDK: Native Like Button","The native Like Button of the Facebook SDK just gone from beta to GA and can now be used in any production app using the latest Facebook SDK. A proxy method like fb.createLikeView() would be a great addition to the existing Facebook module! More infos: - iOS: https://developers.facebook.com/docs/ios/like-button/ - Android https://developers.facebook.com/docs/android/like-button/",1 +"TIMOB-19591","10/10/2014 22:21:18","createHttpClient GET request, when 404 Android onError http error code not received","Create a new httpClient request, GET. In the onError callback ask for the http response code. Purposely make the URL to send a 404 not found IOS, simulator and device, you will get the 404 code, and any error handling will execute. Android will fail on both simulator and device. Http code returned is -1. You will also see an httpclient error in the console. {code:title=Sample index.js code|borderStyle=solid} var dataUrl = ""http://www.whateverdomain.com/404page""; // add your 404 test URL here function httptest() { var xhr = Ti.Network.createHTTPClient({ onload: function() { // whatever.... }, onerror: function(e) { Ti.API.info(e.code); }, timeout: 60000 }); xhr.open('GET', dataUrl); xhr.send(); } function init() { $.index.open(); httptest(); } init(); {code} ",1 +"TIMOB-17841","10/13/2014 19:11:31","Android: Default classic & alloy apps stops responding after launch on android 5.0 x86 64 bit emulator","h6.NOTE: 1. The android L x86 64 bit emulator is the first 64 bit emulator(similarly,nexus 6 will also be 64 bit). I am unsure if all apps built with titanium show this behaviour but, I have tried both the default apps (classic & alloy) along with kitchensink & all exibit the same behaviour. h6. 2. Installed a native app (made by wilson) & it works without any issues. (native app: monkey.apk attached) h5.Description: 1. Build a classic or an alloy default app to android L x86 64bit emulator. 2. Let the app launch on the emulator. h5.Actual Result: 1. The app launches but clicking on the app gives ""app has stopped responding"". 2. We get the following logs in android monitor: {code} 10-13 13:30:02.265: I/InputDispatcher(1376): Application is not responding: Window{33d77c72 u0 com.app.androidtesttwo/org.appcelerator.titanium.TiActivity}. It has been 5010.0ms since event, 5010.0ms since wait started. Reason: Waiting because the touched window has not finished processing the input events that were previously delivered to it. 10-13 13:30:02.265: I/WindowManager(1376): Input event dispatching timed out sending to com.app.androidtesttwo/org.appcelerator.titanium.TiActivity. Reason: Waiting because the touched window has not finished processing the input events that were previously delivered to it. 10-13 13:30:02.265: I/am_anr(1376): [0,3089,com.app.androidtesttwo,11058756,Input dispatching timed out (Waiting because the touched window has not finished processing the input events that were previously delivered to it.)] 10-13 13:30:02.275: I/Process(1376): Sending signal. PID: 3089 SIG: 3 10-13 13:30:02.275: I/art(3089): Thread[2,tid=3095,WaitingInMainSignalCatcherLoop,Thread*=0xf77ffc90,peer=0x78d3f080,""Signal Catcher""]: reacting to signal 3 10-13 13:30:02.295: I/art(3089): Wrote stack traces to '/data/anr/traces.txt' 10-13 13:30:02.295: I/Process(1376): Sending signal. PID: 1376 SIG: 3 10-13 13:30:02.295: I/art(1376): Thread[2,tid=1382,WaitingInMainSignalCatcherLoop,Thread*=0x7f8d253e52f0,peer=0x76036080,""Signal Catcher""]: reacting to signal 3 10-13 13:30:02.525: I/Process(1376): Sending signal. PID: 1596 SIG: 3 10-13 13:30:02.525: I/art(1596): Thread[2,tid=1602,WaitingInMainSignalCatcherLoop,Thread*=0x7f8d253e6f80,peer=0x76034080,""Signal Catcher""]: reacting to signal 3 10-13 13:30:02.535: I/art(1376): Wrote stack traces to '/data/anr/traces.txt' 10-13 13:30:02.535: I/Process(1376): Sending signal. PID: 1580 SIG: 3 10-13 13:30:02.535: I/art(1580): Thread[2,tid=1583,WaitingInMainSignalCatcherLoop,Thread*=0x7f8d253e6f80,peer=0x76034080,""Signal Catcher""]: reacting to signal 3 10-13 13:30:02.535: I/art(1580): Wrote stack traces to '/data/anr/traces.txt' 10-13 13:30:02.535: I/Process(1376): Sending signal. PID: 1434 SIG: 3 10-13 13:30:02.535: I/art(1434): Thread[2,tid=1440,WaitingInMainSignalCatcherLoop,Thread*=0x7f8d253e6f80,peer=0x76034080,""Signal Catcher""]: reacting to signal 3 10-13 13:30:02.575: I/art(1434): Wrote stack traces to '/data/anr/traces.txt' 10-13 13:30:02.645: I/art(1596): Wrote stack traces to '/data/anr/traces.txt' 10-13 13:30:04.455: E/ActivityManager(1376): ANR in com.app.androidtesttwo (com.app.androidtesttwo/org.appcelerator.titanium.TiActivity) 10-13 13:30:04.455: E/ActivityManager(1376): PID: 3089 10-13 13:30:04.455: E/ActivityManager(1376): Reason: Input dispatching timed out (Waiting because the touched window has not finished processing the input events that were previously delivered to it.) 10-13 13:30:04.455: E/ActivityManager(1376): Load: 0.12 / 0.28 / 0.23 10-13 13:30:04.455: E/ActivityManager(1376): CPU usage from 44860ms to 0ms ago: 10-13 13:30:04.455: E/ActivityManager(1376): 0.7% 966/adbd: 0% user + 0.7% kernel / faults: 428 minor 10-13 13:30:04.455: E/ActivityManager(1376): 0.3% 2974/kworker/0:2: 0% user + 0.3% kernel 10-13 13:30:04.455: E/ActivityManager(1376): 0% 3089/com.app.androidtesttwo: 0% user + 0% kernel / faults: 734 minor 29 major 10-13 13:30:04.455: E/ActivityManager(1376): 0% 958/surfaceflinger: 0% user + 0% kernel / faults: 6 minor 10-13 13:30:04.455: E/ActivityManager(1376): 0% 1376/system_server: 0% user + 0% kernel / faults: 66 minor 10-13 13:30:04.455: E/ActivityManager(1376): 0% 1950/com.android.mms: 0% user + 0% kernel / faults: 30 minor 10-13 13:30:04.455: E/ActivityManager(1376): +0% 3188/logcat: 0% user + 0% kernel 10-13 13:30:04.455: E/ActivityManager(1376): 100% TOTAL: 10% user + 89% kernel 10-13 13:30:04.455: E/ActivityManager(1376): CPU usage from 1680ms to 2190ms later: 10-13 13:30:04.455: E/ActivityManager(1376): 0% TOTAL: 0% user + 0% kernel {code} 3. Tried running kitchensink too & I see the same behaviour as default app. h5.Expected Result: 1. The app should not stop responding & work successfully.",8 +"TIMOB-17843","10/13/2014 22:12:20","Android: Cannot Programmatically Open List Picker","h6.Issue description When the user clicks the (return/next) (ios/android) button on the keyboard after entering the password on iOS and clicking return the list picker is selected with #3. This is what we want to occur on Android as well. However on Android after entering the password and clicking next it select #3 in the list and then moves onto selecting the password field. We want the list picker to be open with #3 selected. h6.Steps to Reproduce: # Launch app.js on iOS # click on the password field. # enter data # click return # notice how the picker is selected and moved to #3 # Launch the app on Android Tablet # click on the password field # enter data # click return # notice how the picker selected #3 and then moved onto the password field h6.EXPECTED: The picker was opened with #3 selected so that they user can change it. h6.Devices under test Galaxy Note 10.1 on 4.3 Xperia Play 4.0.4",8 +"TIMOB-17865","10/15/2014 16:38:22","iOS: Ti.Network.createHTTPClient times out on GET request with POST data","h6.Issue description I have been getting a Timeout Error for the get xhr httpclient request after upgrading to the latest 3.4 SDK. We upgrade from 3.2.3.GA, and everything was working fine till I have updated to latest SDK but after the update i cannot proceed ahead as i am always getting a timeout error on the get request. h6.Steps to reproduce # Grab app.js and launch iOS simulator # Click XHR to request server response # Monitor Logs {code} [INFO] : onError of communicator was called: {""type"":""error"",""source"":{""method"":""GET"",""async"":true,""timeout"":90000,""url"":""https://sso.cisco.com/autho/dummy/dummy.html""},""code"":-1005,""error"":""The network connection was lost."",""success"":false} [ERROR] : Timeout: Cisco server is down{""method"":""GET"",""async"":true,""timeout"":90000,""url"":""https://sso.cisco.com/autho/dummy/dummy.html""} {code} This might also fail to connect: https://link.opera.com/ ",8 +"TIMOB-17867","10/15/2014 18:37:20","iOS: NSLog Fails on iOS simulators","After the recent updates to support Xcode 6, NSLog no longer works with ios-sim. The output of logging information is crucial for projects like tiO2 which require log output to see the results of testing. This used to work in iOS 7, but we removed some functionality in this commit (https://github.com/appcelerator/ios-sim/commit/1c01fceb33428259308321989704bd1c790c2cca) because it was causing CPU spikes in iOS 8. Removing this (readInBackgroundAndNotify) fixed the CPU spikes, but it also removed the NSLog functionality on iOS 7. It never appeared to work on iOS 8 simulators. We need to reproduce the CPU spikes and logging failures, and then see what code is required to make NSLog work again. This application can help with testing the functionality: https://github.com/appcelerator/ioslib/tree/master/test/TestApp",1 +"TIMOB-17868","10/15/2014 18:52:57","Windows: Investigate necessity of protect() and unprotect() usage","protect() and unprotect() should be unnecessary for the developer to call directly, but there seem to be some cases where they appear to be required. We need to understand the reasons they are used, and upgrade the infrastructure to remove that necessity. You need to ensure that `Ti.UI.createAlertDialog` API is exposed, so please copy and paste this into the `TiUIModule.cpp` js string: {code} "" Object.defineProperties(self.TiUIAlertDialog.prototype, {"" "" 'buttonNames': {set:function(value){for(var i=0,len=value.length;i(SocketInputBuffer.java:70) 10-20 13:05:18.296: E/TiHttpClient(27268): at org.apache.http.impl.SocketHttpClientConnection.createSessionInputBuffer(SocketHttpClientConnection.java:83) 10-20 13:05:18.296: E/TiHttpClient(27268): at org.apache.http.impl.conn.DefaultClientConnection.createSessionInputBuffer(DefaultClientConnection.java:170) 10-20 13:05:18.296: E/TiHttpClient(27268): at org.apache.http.impl.SocketHttpClientConnection.bind(SocketHttpClientConnection.java:106) 10-20 13:05:18.296: E/TiHttpClient(27268): at org.apache.http.impl.conn.DefaultClientConnection.openCompleted(DefaultClientConnection.java:129) 10-20 13:05:18.296: E/TiHttpClient(27268): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:172) 10-20 13:05:18.296: E/TiHttpClient(27268): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164) 10-20 13:05:18.296: E/TiHttpClient(27268): at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119) 10-20 13:05:18.296: E/TiHttpClient(27268): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360) 10-20 13:05:18.296: E/TiHttpClient(27268): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555) 10-20 13:05:18.296: E/TiHttpClient(27268): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:653) 10-20 13:05:18.296: E/TiHttpClient(27268): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:637) 10-20 13:05:18.296: E/TiHttpClient(27268): at ti.modules.titanium.network.TiHTTPClient$ClientRunnable.run(TiHTTPClient.java:1328) 10-20 13:05:18.296: E/TiHttpClient(27268): at java.lang.Thread.run(Thread.java:818) 10-20 13:05:18.311: D/TiAPI(27268): Connection closed by peer {code} h6.Tiapp.xml http://docs.appcelerator.com/titanium/3.0/#!/guide/Installing_the_Android_SDK-section-29004851_InstallingtheAndroidSDK-SupportforAndroidWearandAndroidLSDKs",5 +"TIMOB-17888","10/22/2014 16:09:06","iOS: Add support for Swift libraries in native modules","Modules that have frameworks built using Swift do not work. Modules compile, but when you try to build an app using the module, you get errors: {code} ld: embedded dylibs/frameworks are only supported on iOS 8.0 and later (@rpath/ChasePaymentech.framework/ChasePaymentech) for architecture i386 {code} As you can see from the error, we attempted to implement the Chase Paymentech SDK. Chase puts the Paymentech SDK download behind a login wall... We can't provide it, but you can sign up (free) and download it. So, to reproduce this error (and possibly fix it), my steps: h4. Create the module # ti create -n ti.test -p ios --id ti.test -t module -url ""http://test.com"" -d . # Open up the project in Xocde. Confirm it builds. # Download the library from https://secure.paymentech.com/developercenter/mobilesdk/ios/?WT.mc_id=adc001_sdk # Place the .framework file in /iphone/platform # Drag the file into the source explorer in Xcode. No need to copy it (as it's already in the project). Or you can follow the linking instructions in the paymenttech docs # Edit the module.xcconfig file to reference the framework: {code} // // How to add a Framework (example) // OTHER_LDFLAGS=$(inherited) -framework ChasePaymentech {code} The module builds without error for me (both from inside Xcode and from the command line). h4. Create the application # Drop the built module into the global module cache (Unzipped). For me this is ~/Library/ApplicationSupport/Titanium/modules/iphone # Open Studio # Create a new 2-tabbed app, iPhone/iPad only # Add the module to the application from the tiapp.xml editor # Drop to the command line. 'ti build -p iOS'. The app will fail to build, unable to find the ChasePaymentech framework h4. Fix the Xcode project # Open builds/iphone/.xcodeproj # Follow the instructions in the Paymenttech document to both link the framework in the application, and then to copy the framework during the build process. ## Place the framework library in a folder accessible to your application. ## Select Project Setting and Build Phase. Click on “Link Binary With Libraries” section. Then press “+” button to add the framework. ## Click on “Add Other…” and choose ChasePaymentech.framework from the physical location in step 1. ## Click “Copy Files”, ensure “Framework” is selected in “Description” drop-down. Click “+” as indicated below. ## Select “ChasePaymentech.framework” under “frameworks”. ## Under “Project Navigator”, within “Frameworks”, “ChasePaymentech.framework” would have been added. Attempt to build the application, you will get the error about ""ld: embedded dylibs/frameworks are only supported on iOS 8.0 and later"" h4. To Fix it Build Settings > iOS Deployment Target. Update this to 8.0 App builds successfully...sometimes. When it fails, it appears to fail because it can't find the Chase framework. This suggests that the framework isn't being copied in time to the correct output location before linking.",0 +"TIMOB-17933","10/22/2014 21:05:00","Sanity check required by evaluating deployment-targets in tiapp.xml","h4. Instructions From the command line, create an empty project with iphone and android natures/targets. You should be able to build for ios {code}ti build -p ios{code} and for android {code}ti build -p android{code} without a problem Now open up the tiapp.xml and change {code}true{code} to {code}false{code} and build again for ios {code}ti build -p ios{code} An error occurs. {code}[ERROR] Failed to run command ""build"" [ERROR] TypeError: Cannot read property 'cyan' of undefined at iOSBuilder.loginfo (/Users/stephenfeather/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.GA/iphone/cli/commands/_build.js:1603:73) at /Users/stephenfeather/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.GA/node_modules/node-appc/node_modules/async/lib/async.js:610:21 at /Users/stephenfeather/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.GA/node_modules/node-appc/node_modules/async/lib/async.js:249:17 at iterate (/Users/stephenfeather/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.GA/node_modules/node-appc/node_modules/async/lib/async.js:149:13) at /Users/stephenfeather/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.GA/node_modules/node-appc/node_modules/async/lib/async.js:160:25 at /Users/stephenfeather/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.GA/node_modules/node-appc/node_modules/async/lib/async.js:251:21 at /Users/stephenfeather/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.GA/node_modules/node-appc/node_modules/async/lib/async.js:615:34 at iOSBuilder.initialize (/Users/stephenfeather/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.GA/iphone/cli/commands/_build.js:1580:2) at /Users/stephenfeather/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.GA/node_modules/node-appc/node_modules/async/lib/async.js:610:21 at /Users/stephenfeather/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.GA/node_modules/node-appc/node_modules/async/lib/async.js:249:17 {code} If you change the android target to false, tooling will still blindly build you a nice new android apk. h4. Impact Projects setup for iOS only can be tested against ios/android without modification. Projects built for android only (lets say on a windows system and then moved to the mac) need to be modified. The modification is fine, and understandable, but the error message above is not. h4. Solution Tooling should check the tiapp.xml to see if an appropriate deployment target exists that matches the target from the command line switches/parameters and inform the user if the original project is missing any components. ",1 +"TIMOB-17990","10/22/2014 22:27:02","Print the CLI build command in the console view","After an app is build onto simulator/device or even packaged, then in order to get the CLI command, we need to enable the troubleshooting preferences and then, have to re-run the command and then, find out the command from the inundated flow of logs. Studio has to print the CLI build command (ideally before the process output) in the console view. It will make it easier to grab the command from console view.",3 +"TIMOB-17889","10/23/2014 04:58:42","TiConvert toBoolean doesnt handle type Interger","h2. Problem Have tracked down a pesky problem where setting the visible property of a TiLabel >> TiView to 0 (type integer) crashed the application. (see log below) Pulled SDK and updated the method to have a case where it handles an input of type Integer. Built the SDK and ran the App. All fixed. Example below of what I added. I don't know Java but it gives you an idea of what to look at. h2. Logs {code:lang=none|title=console} [ERROR] : AndroidRuntime: FATAL EXCEPTION: main [ERROR] : AndroidRuntime: java.lang.IllegalArgumentException: Unable to convert java.lang.Integer to boolean. [ERROR] : AndroidRuntime: at org.appcelerator.titanium.util.TiConvert.toBoolean(TiConvert.java:357) [ERROR] : AndroidRuntime: at org.appcelerator.titanium.view.TiUIView.propertyChanged(TiUIView.java:723) [ERROR] : AndroidRuntime: at ti.modules.titanium.ui.widget.TiUILabel.propertyChanged(TiUILabel.java:280) [ERROR] : AndroidRuntime: at org.appcelerator.kroll.KrollPropertyChange.fireEvent(KrollPropertyChange.java:21) [ERROR] : AndroidRuntime: at org.appcelerator.kroll.KrollProxy.handleMessage(KrollProxy.java:1059) [ERROR] : AndroidRuntime: at org.appcelerator.titanium.proxy.TiViewProxy.handleMessage(TiViewProxy.java:347) [ERROR] : AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:95) [ERROR] : AndroidRuntime: at android.os.Looper.loop(Looper.java:137) [ERROR] : AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:4745) [ERROR] : AndroidRuntime: at java.lang.reflect.Method.invokeNative(Native Method) [ERROR] : AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:511) [ERROR] : AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) [ERROR] : AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) [ERROR] : AndroidRuntime: at dalvik.system.NativeStart.main(Native Method) {code} h2. Changes org.appcelerator.titanium.util.TiConvert.toBoolean(TiConvert.java:357) {code:lang=none|title=console} public static boolean toBoolean(Object value) { if (value instanceof Boolean) { return (Boolean) value; } else if (value instanceof String) { return Boolean.parseBoolean(((String) value)); } // -- added handling for Integer else if (value instanceof Integer) { int numeric = (Integer) value; return numeric > 0; } // /-- added handling for Integer else { throw new IllegalArgumentException(""Unable to convert "" + (value == null ? ""null"" : value.getClass().getName()) + "" to boolean.""); } } {code}",1 +"TIMOB-17890","10/23/2014 19:44:34","Android: Creating & saving contact does not add the contact to the phone's contact list","h6. This regression is seen from 3.4.0.GA and above. It works as expected in 3.3.0.GA. h5.Description: 1. Create a default classic app & replace the app/js with the following code: {code} var photo = Ti.UI.createImageView({ image: 'KS_nav_views.png' }).toBlob(); var person = Ti.Contacts.createPerson({ firstName: 'Aaron', lastName: 'Smith', date: { anniversary: ['2002-11-11T11:23:30.000+0000'], other: ['2011-04-02T12:00:00.000+0000'] } }); person.organization = ""google""; person.phone = { mobile: ['9999999991', '1234556677'], work: ['9999998888', '1234567789'] }; person.address = { work:[ { Street: '900 West Drive', City: 'New York', County: 'Berkshire', Country: 'U.S.A', ZIP: '99999' }, { Street: '456 New Ave.', City: 'San Jose', State: 'California', Country: 'U.S.A', ZIP: '94082' } ], home:[ { Street: '2 East Drive', City: 'Las Vegas', State: 'Nevada', Country: 'U.S.A', ZIP: '55555' } ]}; person.instantMessage = { home:[ { service: 'AIM', username: 'Dominator' }, { service: 'MSN', username: 'dominator@msn.com' } ], work:[ { service: 'Facebook', username: 'Dominator2' } ] }; person.url = { homepage: ['www.myspace.com'], work: ['www.apple.com', 'www.yahoo.com'] }; person.email = { home: ['hieu@google.com'], work: ['pham@google.com', 'hp007@appcelerator.com'] }; person.relatedNames = { parent: ['daddy', 'mommy'], assistant: ['mayhem'] }; person.date = { anniversary: ['2022-11-11T11:23:30.000+0000'], other: ['2003-04-02T12:00:00.000+0000'] }; person.firstName = ""Ade""; person.lastName = ""Crude""; person.birthday = ""1999-01-01T12:00:00.000+0000""; person.organization = ""GOOGLE""; person.note = ""NOTE: MASS EFFECT""; person.nickname = ""NICKNAME: THOR""; person.image = photo; Ti.Contacts.save([person]); {code} 2. Build & run the app on android device. 3. Open contacts on the device & check if you have a new contact Ade Crude"" added. h5.Actual Result: 1.A new contact ""Ade Crude"" is not added to the contacts list on the device. h5.Expected Result: 1.A new contact ""Ade Crude"" is added to the contact list on the device",5 +"TIMOB-17891","10/23/2014 20:36:16","Android: Support TLS versioning on XHR client","We need to support different TLS versions in our XHR. A property ({{tlsVersion}}) will be added to {{Ti.Network.HTTPClient}} for Android. It is currently iOS-only. See https://github.com/appcelerator/titanium_mobile/blob/master/android/modules/network/src/java/ti/modules/titanium/network/TiSocketFactory.java#L25 for where it is ultimately used. http://developer.android.com/reference/javax/net/ssl/SSLContext.html#getInstance(java.lang.String) While TLS 1.0 is not vulnerable to POODLE, we may wish to make the default TLS 1.1: https://securityblog.redhat.com/2014/10/15/poodle-a-ssl3-vulnerability-cve-2014-3566/",8 +"TIMOB-18513","10/24/2014 14:31:39","Properly expose Titanium CLI as a NPM API module","Like ALOY-879 same should be done for the Titanium CLI: {code:javascript} var ti = require('titanium'); ti.build({ projectDir: 'myProject', platform: 'ios' }); {code}",1 +"TIMOB-17901","10/24/2014 22:47:10","Windows: Implement Ti.Database","See http://docs.appcelerator.com/titanium/3.0/#!/api/Titanium.Database * Titanium.Database * Titanium.Database.install * Titanium.Database.open",13 +"TIMOB-17902","10/24/2014 22:48:35","Windows: Implement Ti.UI.TextField","http://docs.appcelerator.com/titanium/3.0/#!/api/Titanium.UI.TextField http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.textbox.aspx",13 +"TIMOB-17904","10/24/2014 22:49:40","Windows: Implement Ti.UI.ProgressBar","http://docs.appcelerator.com/titanium/3.0/#!/api/Titanium.UI.ProgressBar http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.progressbar h1. Ti.UI.Windows.ProgressBar h2. Implemented h3. Properties - isIndeterminate - color - max - min - value - showError - showPaused h1. Ti.UI.ProgressBar h2. Implemented h3. Properties - color - font - max - message - min - value h3. Methods - add( ) - hide( ) - remove( ) - show( ) ---- h2. Not Implemented: h3. Properties: - style",8 +"TIMOB-17911","10/24/2014 23:02:06","Windows: Implement Native module support","This encompasses a few sub-items: * Prove that we can build ti.cloud, ti.map and ti.facebook-type modules * Create a default project structure for new modules * Add CLI tooling to create these modules * Hook up Studio to create new module projects.",0 +"TIMOB-17914","10/24/2014 23:06:27","Windows: Implement Ti.Contacts","http://docs.appcelerator.com/platform/latest/#!/api/Titanium.Contacts https://msdn.microsoft.com/en-us/library/windows/apps/windows.applicationmodel.contacts.aspx",13 +"TIMOB-17918","10/25/2014 00:39:34","Windows: Implement Ti.Media.Sound","https://msdn.microsoft.com/en-us/library/windows/apps/windows.media.playback.mediaplayer.aspx http://docs.appcelerator.com/platform/latest/#!/api/Titanium.Media.Sound Appears to be phone-only.",13 +"TIMOB-17925","10/27/2014 22:20:40","iOS: Upgrade titanium_profiler source code to 64-bit","Upgrading this to 64-bit: https://github.com/appcelerator/titanium_profiler/tree/master/ios Please review https://github.com/appcelerator/titanium_profiler/tree/travis which is currently failing, but can likely be fixed easily.",13 +"TIMOB-17926","10/27/2014 22:21:18","iOS: Upgrade titanium_verify source code to 64-bit","Upgrading this to 64-bit: https://github.com/appcelerator/titanium_verify/tree/master/iphone Please review https://github.com/appcelerator/titanium_verify/tree/travis which is currently failing, but can likely be fixed easily.",13 +"TIMOB-19470","10/29/2014 09:09:59","CLI: ti setup doesn't properly select last available versions from npm","When I run {{ti setup}} and select *check* I get: {code} Node.js ✓ node up-to-date (v0.10.33) ★ npm new version v2.1.6 available! (currently v2.1.5) {code} However, on https://www.npmjs.org/package/npm and via {{npm info npm}} it has *2.1.5* as the last version. The {{versions}} array does have 2.1.6 but the CLI should look at {{version}} not {{versions}}. h2. Related code https://github.com/appcelerator/titanium/blob/master/lib/commands/setup.js#L516-L522 {code} if (info && info.versions) { for (var i = 0, vers = info.versions, l = vers.length; i < l; i++) { if (appc.version.gt(vers[i], r.npm.latest)) { r.npm.latest = vers[i]; } } } {code} h2. Proposed chage The above lines with: {code} if (info && info.version) { r.npm.latest = info.version; } {code}",2 +"TIMOB-17941","10/29/2014 22:46:33","MobileWeb: When hiding a Ti.map view and showing it again the view is reloaded","h3. Issue When working on mobile web and using ti.map if the map visible property is set to false and the is set to true again the map will be reloaded to the original state instead of keeping the same location and zoom. h3. Steps to repro 1. Run test code 2. Move and zoom in the map view 3. Click on the toggle button to hide it 4. Click on the toggle button to show it h5. Expected Result The map will be shown again with the last location and zoom h5. Actual Result The map is reloaded to the original state h3. Test code {code} var win = Ti.UI.createWindow({ layout:'vertical' }); var bt = Ti.UI.createButton({ top:20, title:'Toggle' }); var map = Ti.Map.createView({ visible:true, top:20, userLocation:true }); Ti.Geolocation.MobileWeb.locationTimeout = 10000; Ti.Geolocation.getCurrentPosition(locationCallback); function locationCallback(e) { console.log(e); } var last; bt.addEventListener('click',function(){ map.visible = !map.visible; }); win.add(bt); win.add(map); win.open(); {code}",8 +"TIMOB-17942","10/30/2014 21:29:32","Windows: Add cppcheck + cpplint to CI Build","cpplint allows us to check for Google C++ Style guide compliance: https://wiki.jenkins-ci.org/display/JENKINS/Cppcheck+Plugin http://cppcheck.sourceforge.net This gives a good suggestion for how to fix it: http://stackoverflow.com/questions/14172232/how-to-make-cpplint-work-with-jenkins-warnings-plugin",13 +"TIMOB-17943","10/30/2014 21:31:12","Windows: Run cpplint as part of Travis build","cpplint is a Python script that allows users to test their code for compliance against Google's C++ Style guide. We should run this script on the Travis build.",8 +"TIMOB-17948","10/31/2014 10:04:38","Android: Support SSL SNI on Apache HTTP Client","Google recommends using HttpURLConnection instead of the Apache HTTP client, see: http://developer.android.com/reference/org/apache/http/impl/client/DefaultHttpClient.html http://android-developers.blogspot.ch/2011/09/androids-http-clients.html Switching to HttpsURLConnection would further support SSL SNI, see: https://developer.android.com/training/articles/security-ssl.html {quote} Fortunately, HttpsURLConnection supports SNI since Android 2.3. Unfortunately, Apache HTTP Client does not, which is one of the many reasons we discourage its use. {quote} http://stackoverflow.com/questions/5879894/android-ssl-sni-support Please consider switching to HttpURLConnection/HttpsURLConnection. Thank you.",13 +"TIMOB-17946","10/31/2014 23:31:17","Android Module: Fails to Build with 3.4.0.GA TiSDK","h6.Issue description Calling Native Extensions (which are effectively native Ti Modules) that are build and then added to a Titanium app as modules. It fails to build on 3.4.0.GA although works on 3.3.0.GA (logs per each SDK attached). The example is a Hello World Module. h6.Steps to replicate # Unzip the attached module # set its build properties as I outlined above so that it uses the following: # 3.3.0.GA, Android/Google 14 SDK, r8d NDK. # Run the command, ""ant dist"" # Notice that the build is Successful (Logs attached) # Change the TiSDK to 3.4.0.GA # Run the command, ""ant dist"" # Notice that the build fails (Logs attached) # Change the TiSDK back to 3.3.0.GA Changing the NDK to r9 as recommended does not address the issue either. http://docs.appcelerator.com/titanium/latest/#!/guide/Installing_the_Android_NDK We cannot seem to build this module with the 3.4.0.GA TiSDK, I've tried all sorts of combos, any ideas why we cannot build the module with for example the r8d, or r9 NDK, the 3.4.0.GA TiSDK and the Android-18 and Google-18 APIs. Thats seems like the combo we want but its not working. h6.Combos Tried: h6.3.5.0 CI {quote} |TISDK|NDK|Android SDK & Google APIs|SUCCESS| |3.5.0.v20141028174916| r8d| 14 | No |3.5.0.v20141028174916| r9| 14 | No |3.5.0.v20141028174916| r8d| 18 | No |3.5.0.v20141028174916| r9| 18 | No {quote} h6.3.4.2 {quote} |TISDK|NDK|Android SDK & Google APIs|SUCCESS| |3.4.2.v20141028145714| r8d| 14 | No |3.4.2.v20141028145714| r9| 14 | No |3.4.2.v20141028145714| r8d| 18 | No |3.4.2.v20141028145714| r9| 18 | No {quote} h6.3.4.0.GA {quote} |TISDK|NDK|Android SDK & Google APIs|SUCCESS| |3.4.0.GA| r8d| 14 | No |3.4.0.GA| r9| 14 | No |3.4.0.GA| r8d| 18 | No |3.4.0.GA| r9| 18 | No {quote} h6.3.3.0.GA {quote} |TISDK|NDK|Android SDK & Google APIs|SUCCESS| |3.3.0.GA| r8d| 14 | YES |3.3.0.GA| r9| 14 | YES |3.3.0.GA| r8d| 18 | YES |3.3.0.GA| r9| 18 | YES {quote} These are the following build.properties: {code} titanium.platform=/Users/egomez/Library/Application Support/Titanium/mobilesdk/osx/3.3.0.GA/android android.platform=/Users/egomez/android-sdks/platforms/android-14 google.apis=/Users/egomez/android-sdks/add-ons/addon-google_apis-google-14 android.sdk=/Users/egomez/android-sdks android.ndk=/Users/egomez/android-ndk-r8 {code} h6.NDKs r8d NDK: http://dl.google.com/android/ndk/android-ndk-r8d-darwin-x86.tar.bz2 r9 NDK: http://dl.google.com/android/ndk/android-ndk-r9-darwin-x86.tar.bz2 ",3 +"TIMOB-18129","11/03/2014 16:10:46","Https Module does not throw exception on fail as expected","h3. Issue According to our documentation when the HTTPClient send() is called to do an https request and the authentication fails, a security exception will be thrown but instead customer receives a WARNING log on iOS and an ERROR log in Android to finish the call with the onError callback being fired. This is causing than when customer tries to catch the exception is not possible. {code} After the securityManager property is set, call the HTTPClient's open() and send() methods to initiate the HTTPS request. httpClient.open(""GET"", ""https://yourorg.com""); httpClient.send(); If the authentication fails, a security exception is thrown. {code} h3. Log iOS {code} [INFO] httpClient Created. [WARN] Potential ""Man-in-the-Middle"" attack detected since host www.appcelerator.com does not hold the private key corresponding to the public key PublicKey: . [INFO] onerror() [INFO] {""type"":""error"",""source"":{""method"":""GET"",""securityManager"":{},""timeout"":25000,""url"":""https://www.appcelerator.com""},""code"":-1012,""error"":""The operation couldn’t be completed. (NSURLErrorDomain error -1012.)"",""success"":false} {code} Android {code} [INFO] httpClient Created. [DEBUG] dalvikvm: GC_CONCURRENT freed 231K, 2% free 16219K/16524K, paused 4ms+0ms, total 8ms [ERROR] TiHttpClient: (TiHttpClient-1) [3000,3000] HTTP Error (javax.net.ssl.SSLHandshakeException): Leaf certificate could not be verified with provided public key [ERROR] TiHttpClient: javax.net.ssl.SSLHandshakeException: Leaf certificate could not be verified with provided public key [ERROR] TiHttpClient: at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:409) [ERROR] TiHttpClient: at com.android.org.conscrypt.OpenSSLSocketImpl$SSLInputStream.(OpenSSLSocketImpl.java:661) [ERROR] TiHttpClient: at com.android.org.conscrypt.OpenSSLSocketImpl.getInputStream(OpenSSLSocketImpl.java:632) [ERROR] TiHttpClient: at org.apache.http.impl.io.SocketInputBuffer.(SocketInputBuffer.java:70) [ERROR] TiHttpClient: at org.apache.http.impl.SocketHttpClientConnection.createSessionInputBuffer(SocketHttpClientConnection.java:83) [ERROR] TiHttpClient: at org.apache.http.impl.conn.DefaultClientConnection.createSessionInputBuffer(DefaultClientConnection.java:170) [ERROR] TiHttpClient: at org.apache.http.impl.SocketHttpClientConnection.bind(SocketHttpClientConnection.java:106) [ERROR] TiHttpClient: at org.apache.http.impl.conn.DefaultClientConnection.openCompleted(DefaultClientConnection.java:129) [ERROR] TiHttpClient: at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:172) [ERROR] TiHttpClient: at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164) [ERROR] TiHttpClient: at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119) [ERROR] TiHttpClient: at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360) [ERROR] TiHttpClient: at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555) [ERROR] TiHttpClient: at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:653) [ERROR] TiHttpClient: at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:637) [ERROR] TiHttpClient: at ti.modules.titanium.network.TiHTTPClient$ClientRunnable.run(TiHTTPClient.java:1328) [ERROR] TiHttpClient: at java.lang.Thread.run(Thread.java:841) [ERROR] TiHttpClient: Caused by: java.security.cert.CertificateException: Leaf certificate could not be verified with provided public key [ERROR] TiHttpClient: at appcelerator.https.PinningTrustManager.checkServerTrusted(PinningTrustManager.java:84) [ERROR] TiHttpClient: at com.android.org.conscrypt.OpenSSLSocketImpl.verifyCertificateChain(OpenSSLSocketImpl.java:613) [ERROR] TiHttpClient: at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method) [ERROR] TiHttpClient: at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:405) [ERROR] TiHttpClient: ... 16 more [INFO] onerror() [INFO] {""code"":-1,""source"":{""autoRedirect"":true,""status"":0,""responseData"":null,""connected"":false,""readyState"":1,""allResponseHeaders"":"""",""responseText"":"""",""username"":null,""timeout"":25000,""statusText"":null,""autoEncodeUrl"":true,""apiName"":""Ti.Network.HTTPClient"",""validatesSecureCertificate"":false,""location"":""https://www.appcelerator.com"",""domain"":null,""connectionType"":""GET"",""responseXML"":null,""bubbleParent"":true,""password"":null,""securityManager"":{""bubbleParent"":true,""apiName"":""appcelerator.Https.PinningSecurityManager""},""_events"":{""disposehandle"":{}}},""error"":""Leaf certificate could not be verified with provided public key"",""success"":false} {code} h3. Test code {code} var win = Ti.UI.createWindow(); var but = Ti.UI.createButton({ title:""click"" }); but.addEventListener('click',doClick); var https = require(""appcelerator.https""); function doClick(e) { var securityManager = https.createX509CertificatePinningSecurityManager([{ url: 'https://www.appcelerator.com', serverCertificate: 'google.com.der' }]); var httpClient = Ti.Network.createHTTPClient({ timeout : 25000, securityManager: securityManager }); httpClient.onload = function(e) { Ti.API.info('onload()'); }; httpClient.onerror = function(e) { Ti.API.info('onerror()'); }; Ti.API.info(""httpClient Created.""); try { httpClient.open('GET', 'https://www.appcelerator.com'); httpClient.send(); } catch (exception) { Ti.API.info('SecurityException occurred'); } } win.add(but); win.open(); {code} h3. Steps to repro 1. run test case ( demo.zip) 2. click on the button Expected Result A security exception is thrown and handled by the catch code Actual Result No exception is thrown",8 +"TIMOB-17949","11/03/2014 20:39:52","CLI: Build fails when using Node 0.11.14","The next version of Node is reportedly imminent. When running the newest unstable / prerelease build (0.11.14) {{ti build -p ios}} fails with {code} [DEBUG] Symlinking /Users/admin/Documents/Titanium_Studio_Workspace/TestSuite/Resources/iphone/ti-mocha.js => /Users/admin/Documents/Titanium_Studio_Workspace/TestSuite/build/iphone/build/Debug-iphonesimulator/TestSuite.app/ti-mocha.js [INFO] Processing Titanium namespace resources [DEBUG] Copying /Users/admin/Library/Application Support/Titanium/mobilesdk/osx/3.5.0/iphone/modules/ui/images => /Users/admin/Documents/Titanium_Studio_Workspace/TestSuite/build/iphone/build/Debug-iphonesimulator/TestSuite.app/modules/ui/images [INFO] Skipping xcodebuild [INFO] Finished building the application in 4s 579ms /Users/admin/repos/titanium_skypanther/node_modules/longjohn/dist/longjohn.js:185 throw e; ^ Socket.socketErrorListener (_http_client.js:268:42),Socket.emit (events.js:107:17),net.js:436:14,process._tickCallback (node.js:372:11) {code} {{ti build -p android}} fails with a similar {code} [INFO] Creating unsigned apk [INFO] Processing /Users/admin/Documents/Titanium_Studio_Workspace/TestSuite/build/android/src [INFO] Writing unsigned apk: /Users/admin/Documents/Titanium_Studio_Workspace/TestSuite/build/android/bin/app-unsigned.apk [INFO] Using MD5withRSA signature algorithm [INFO] Signing apk: /Library/Java/JavaVirtualMachines/1.6.0_65-b14-462.jdk/Contents/Home/bin/jarsigner ""-sigalg"" ""MD5withRSA"" ""-digestalg"" ""SHA1"" ""-keystore"" ""/Users/admin/Library/Application Support/Titanium/mobilesdk/osx/3.5.0/android/dev_keystore"" ""-storepass"" ""*******"" ""-signedjar"" ""/Users/admin/Documents/Titanium_Studio_Workspace/TestSuite/build/android/bin/TestSuite.apk"" ""/Users/admin/Documents/Titanium_Studio_Workspace/TestSuite/build/android/bin/app-unsigned.apk"" ""tidev"" [INFO] Aligning zip file: /android-sdk/build-tools/20.0.0/zipalign ""-v"" ""4"" ""/Users/admin/Documents/Titanium_Studio_Workspace/TestSuite/build/android/bin/TestSuite.apk"" ""/Users/admin/Documents/Titanium_Studio_Workspace/TestSuite/build/android/bin/TestSuite.apkz"" [INFO] Writing build manifest: /Users/admin/Documents/Titanium_Studio_Workspace/TestSuite/build/android/build-manifest.json /Users/admin/repos/titanium_skypanther/node_modules/longjohn/dist/longjohn.js:185 throw e; ^ Socket.socketErrorListener (_http_client.js:268:42),Socket.emit (events.js:107:17),net.js:436:14,process._tickCallback (node.js:372:11) {code} And mobileweb builds fail with {code} [DEBUG] Analyzing /Users/admin/Documents/Titanium_Studio_Workspace/TestSuite/build/mobileweb/titanium/Ti.js [DEBUG] Analyzing /Users/admin/Documents/Titanium_Studio_Workspace/TestSuite/build/mobileweb/titanium.js [INFO] Creating the filesystem registry [INFO] Creating the index.html /Users/admin/repos/titanium_skypanther/node_modules/longjohn/dist/longjohn.js:185 throw e; ^ Socket.socketErrorListener (_http_client.js:268:42),Socket.emit (events.js:107:17),net.js:436:14,process._tickCallback (node.js:372:11) {code} ",13 +"TIMOB-17950","11/03/2014 21:55:11","CLI: Windows: Error: spawn OK when attempting to build on simulator","h6.Issue Description Appcelerator Studio fails to build to simulator on Windows machine after completing installation steps. h6.Steps to reproduce # Go to File option menu > New > Mobile App Project > An alloy/classic app. # Let Appcelerator Studio enable services for the app. # Then build for AVD simulator under Run Configurations. # The build process collides on an Error. h6.LOGS Diagnostics: https://gist.github.com/egomez99/dbe4d40d65c117c0d00b#file-logs-txt-L1 Console output - Build process: https://gist.github.com/egomez99/dbe4d40d65c117c0d00b#file-logs-txt-L117 View Log file: https://gist.github.com/egomez99/dbe4d40d65c117c0d00b#file-logs-txt-L206 ti setup check: https://gist.github.com/egomez99/dbe4d40d65c117c0d00b#file-logs-txt-L3990 ti info: https://gist.github.com/egomez99/dbe4d40d65c117c0d00b#file-logs-txt-L4112 ti config: https://gist.github.com/egomez99/dbe4d40d65c117c0d00b#file-logs-txt-L4413 h6.Further details Tried out installing Python 2.7 (for Windows 8 32bit version) and installed the Google release (Version 21) on the Android developer tooling (Windows: http://dl.google.com/android/android-sdk_r23-windows.zip). h6.Similar threads https://developer.appcelerator.com/question/157016/titanium-build----error-spawn-enoent https://developer.appcelerator.com/question/175290/cant-find-my-app-on-emulator-error-or-error-log",8 +"TIMOB-17951","11/03/2014 21:56:07","Calling Ti.Media.switchCamera(undefined) yields unexpected results on devices with 1 or no camera","When Ti.Media.switchCamera(undefined); is called on a device/simulator with zero or one camera, a runtime error is thrown. If Ti.Media.switchCamera(undefined); is called on a device/simulator with two camera's (and one has been opened) then no action is performed and no error occurs. *This is not a regression*. *Steps to reproduce*: 1. Build a project with the attached files, for a device with 1 or no camera 2. Click through the camera test buttons 3. Notice that they correctly open the camera or not, depending on if that camera exists on the device 3. Click on the ""Invalid Camera"" button 4. Notice that a runtime error is thrown *Expected Result*: No error is thrown and no action is performed (like the camera buttons for unsupported/nonexistent cameras). *Notes*: I was unable to encounter this error on devices with two cameras, despite the same code and 'undefined' parameter passed.",3 +"TIMOB-17953","11/04/2014 00:36:09","iOS: Map annotations show buttons event is not declared on iOS 7.0.X","h3. Issue When customer creates map annotations and one of them is left without declaring left or right button the buttons are shown when the annotation si clicked, this only happens when the app is deployed with Ti SDK 3.4.0 and iOS device version 7.0.3/7.0.4. h3. Steps to repro 1. run test code 2. Click on the green annotation Expected Result The green annotation will not show any button (left or right) Actual Result The green annotation show both buttons h3. Test Code {code} var Map = require('ti.map'); var ary = []; var win = Ti.UI.createWindow({ backgroundColor:'#fff', }); for(i=0;i<5;i++){ var an1 = Map.createAnnotation({ latitude : 37.775202, longitude : -122.41924+(0.00005*i), leftButton : 'red_x.png', rightButton : 'tick_64.png', pincolor : Map.ANNOTATION_RED, title : ""Sydney"", subtitle : ""Sydney is quite chill"", animate : true, annID : 1, annIDCount : [1, 2] }); ary.push(an1); } var ann2 = Map.createAnnotation({ animate : true, latitude : 37.7749295, pincolor : Map.ANNOTATION_GREEN, longitude : -122.4194155, title : ""Anno2"", subtitle : ""This is anno2"", }); ary.push(ann2); var map = Map.createView({ userLocation : false, mapType : Map.NORMAL_TYPE, animate : true, annotations : ary, region : { latitude : 37.7749295, longitude : -122.4194155, latitudeDelta : 0.1, longitudeDelta : 0.1 }, //Sydney top : 0 }); win.add(map); win.open(); {code} ",5 +"TIMOB-17984","11/05/2014 17:34:55","TextArea set to FILL not wrapping correctly inside a horizontal layout with another sibling","Create a view with horizontal layout. Make two siblings (a view, or anything else), and a TextArea set to FILL. Enter an amount of text into the TextArea that it must wrap but would not have wrapped if the other sibling wasn't there. The text correctly wraps but the TextArea itself does not adjust height. This is a different symptom but may be related to TC-4810. See example below (tried this on an HTC One, for screen size reference): {code}