issuekey,title,description,storypoint TIMOB-8075,"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-559,"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-684,"Android: Border properties are broken for ImageView","{code} // In Android, the border around the image is not visible // I tried removing borderRadius property, but the issue still remains // It works on iPhone though var imageView = Titanium.UI.createImageView({ url: ""/path/to/image"", width: 280, height: 175, borderWidth: 1, borderColor: ""#ccc"", borderRadius: 5 }); Titanium.UI.currentWindow.add(imageView); // Workaround // Wrap the image view in another view and set its border properties // Set the width and height to be 2 pixels more than the width and height of the image view var wrapperView = Titanium.UI.createView({ width: 282, height: 177, borderWidth: 1, borderColor: ""#ccc"", borderRadius: 5 }); var imageView = Titanium.UI.createImageView({ url: ""/path/to/image"", width: 280, height: 175 }); wrapperView.add(imageView); Titanium.UI.currentWindow.add(wrapperView); {code}",2 TIMOB-1097,"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,"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-1800,"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-1872,"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,"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,"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,"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,"Android: Implement Video Recording",{html}{html},3 TIMOB-2209,"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-2231,"iOS: Add the ability to add Vector Overlay on Maps","I couldn't find an existing ticket for this, but I remember it being mentioned somewhere before. Would like to be able to draw vector shapes on top of a map with various colours / opacity / textures. Bonus points for code that assists with drawing and manipulating the vector with touch events, placing markers on the corners for resizing etc. Otherwise, at the very least some event triggering for clicking + interacting with the vector shape. This adds a whole other dimension to mapping applications for plotting areas and recording information against these areas.",34 TIMOB-2363,"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,"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,"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-2646,"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,"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 java.net.URI$Helper.validateQuery(URI.java:458) 455 TiUIImageView E java.net.URI$Helper.parseURI(URI.java:360) 455 TiUIImageView E java.net.URI$Helper.access$100(URI.java:302) 455 TiUIImageView E java.net.URI.(URI.java:87) 455 TiUIImageView E ti.modules.titanium.ui.widget.TiUIImageView.setImage(TiUIImageView.java:715) 455 TiUIImageView E ti.modules.titanium.ui.widget.TiUIImageView.processProperties(TiUIImageView.java:849) 455 TiUIImageView E org.appcelerator.kroll.KrollProxy.setModelListener(KrollProxy.java:641) 455 TiUIImageView E org.appcelerator.titanium.proxy.TiViewProxy.realizeViews(TiViewProxy.java:464) 455 TiUIImageView E org.appcelerator.titanium.proxy.TiViewProxy.handleGetView(TiViewProxy.java:456) 455 TiUIImageView E org.appcelerator.titanium.proxy.TiViewProxy.getOrCreateView(TiViewProxy.java:434) 455 TiUIImageView E org.appcelerator.titanium.proxy.TiViewProxy.handleAdd(TiViewProxy.java:538) 455 TiUIImageView E org.appcelerator.titanium.proxy.TiViewProxy.handleMessage(TiViewProxy.java:271) 455 TiUIImageView E android.os.Handler.dispatchMessage(Handler.java:95) 455 TiUIImageView E org.appcelerator.kroll.common.TiMessenger.dispatchMessage(TiMessenger.java:318) 455 TiUIImageView E org.appcelerator.kroll.common.TiMessenger.dispatchPendingMessages(TiMessenger.java:303) 455 TiUIImageView E org.appcelerator.kroll.common.TiMessenger$2.getResult(TiMessenger.java:188) 455 TiUIImageView E org.appcelerator.kroll.common.TiMessenger.sendBlockingMessage(TiMessenger.java:215) 455 TiUIImageView E org.appcelerator.kroll.common.TiMessenger.sendBlockingRuntimeMessage(TiMessenger.java:143) 455 TiUIImageView E org.appcelerator.kroll.KrollProxy.fireSyncEvent(KrollProxy.java:417) 455 TiUIImageView E org.appcelerator.titanium.TiBaseActivity.onCreate(TiBaseActivity.java:344) 455 TiUIImageView E org.appcelerator.titanium.TiLaunchActivity.onCreate(TiLaunchActivity.java:117) 455 TiUIImageView E org.appcelerator.titanium.TiRootActivity.onCreate(TiRootActivity.java:46) 455 TiUIImageView E android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 455 TiUIImageView E android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 455 TiUIImageView E android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 455 TiUIImageView E android.app.ActivityThread.access$2300(ActivityThread.java:125) 455 TiUIImageView E android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 455 TiUIImageView E android.os.Handler.dispatchMessage(Handler.java:99) 455 TiUIImageView E android.os.Looper.loop(Looper.java:123) 455 TiUIImageView E android.app.ActivityThread.main(ActivityThread.java:4627) 455 TiUIImageView E java.lang.reflect.Method.invokeNative(Native Method) 455 TiUIImageView E java.lang.reflect.Method.invoke(Method.java:521) 455 TiUIImageView E com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 455 TiUIImageView E com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 455 TiUIImageView E 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 org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:1162) 455 TiDrawableReference E java.net.URL.openStream(URL.java:653) 455 TiDrawableReference E org.appcelerator.titanium.util.TiFileHelper.openInputStream(TiFileHelper.java:172) 455 TiDrawableReference E org.appcelerator.titanium.view.TiDrawableReference.getInputStream(TiDrawableReference.java:671) 455 TiDrawableReference E org.appcelerator.titanium.view.TiDrawableReference.peekBounds(TiDrawableReference.java:628) 455 TiDrawableReference E org.appcelerator.titanium.view.TiDrawableReference.getBitmap(TiDrawableReference.java:461) 455 TiDrawableReference E ti.modules.titanium.ui.widget.TiUIImageView.setImage(TiUIImageView.java:724) 455 TiDrawableReference E ti.modules.titanium.ui.widget.TiUIImageView.processProperties(TiUIImageView.java:849) 455 TiDrawableReference E org.appcelerator.kroll.KrollProxy.setModelListener(KrollProxy.java:641) 455 TiDrawableReference E org.appcelerator.titanium.proxy.TiViewProxy.realizeViews(TiViewProxy.java:464) 455 TiDrawableReference E org.appcelerator.titanium.proxy.TiViewProxy.handleGetView(TiViewProxy.java:456) 455 TiDrawableReference E org.appcelerator.titanium.proxy.TiViewProxy.getOrCreateView(TiViewProxy.java:434) 455 TiDrawableReference E org.appcelerator.titanium.proxy.TiViewProxy.handleAdd(TiViewProxy.java:538) 455 TiDrawableReference E org.appcelerator.titanium.proxy.TiViewProxy.handleMessage(TiViewProxy.java:271) 455 TiDrawableReference E android.os.Handler.dispatchMessage(Handler.java:95) 455 TiDrawableReference E org.appcelerator.kroll.common.TiMessenger.dispatchMessage(TiMessenger.java:318) 455 TiDrawableReference E org.appcelerator.kroll.common.TiMessenger.dispatchPendingMessages(TiMessenger.java:303) 455 TiDrawableReference E org.appcelerator.kroll.common.TiMessenger$2.getResult(TiMessenger.java:188) 455 TiDrawableReference E org.appcelerator.kroll.common.TiMessenger.sendBlockingMessage(TiMessenger.java:215) 455 TiDrawableReference E org.appcelerator.kroll.common.TiMessenger.sendBlockingRuntimeMessage(TiMessenger.java:143) 455 TiDrawableReference E org.appcelerator.kroll.KrollProxy.fireSyncEvent(KrollProxy.java:417) 455 TiDrawableReference E org.appcelerator.titanium.TiBaseActivity.onCreate(TiBaseActivity.java:344) 455 TiDrawableReference E org.appcelerator.titanium.TiLaunchActivity.onCreate(TiLaunchActivity.java:117) 455 TiDrawableReference E org.appcelerator.titanium.TiRootActivity.onCreate(TiRootActivity.java:46) 455 TiDrawableReference E android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 455 TiDrawableReference E android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 455 TiDrawableReference E android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 455 TiDrawableReference E android.app.ActivityThread.access$2300(ActivityThread.java:125) 455 TiDrawableReference E android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 455 TiDrawableReference E android.os.Handler.dispatchMessage(Handler.java:99) 455 TiDrawableReference E android.os.Looper.loop(Looper.java:123) 455 TiDrawableReference E android.app.ActivityThread.main(ActivityThread.java:4627) 455 TiDrawableReference E java.lang.reflect.Method.invokeNative(Native Method) 455 TiDrawableReference E java.lang.reflect.Method.invoke(Method.java:521) 455 TiDrawableReference E com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 455 TiDrawableReference E com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 455 TiDrawableReference E 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 org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:1162) 455 TiDrawableReference E java.net.URL.openStream(URL.java:653) 455 TiDrawableReference E org.appcelerator.titanium.util.TiFileHelper.openInputStream(TiFileHelper.java:172) 455 TiDrawableReference E org.appcelerator.titanium.view.TiDrawableReference.getInputStream(TiDrawableReference.java:671) 455 TiDrawableReference E org.appcelerator.titanium.view.TiDrawableReference.getBitmap(TiDrawableReference.java:238) 455 TiDrawableReference E org.appcelerator.titanium.view.TiDrawableReference.getBitmap(TiDrawableReference.java:467) 455 TiDrawableReference E ti.modules.titanium.ui.widget.TiUIImageView.setImage(TiUIImageView.java:724) 455 TiDrawableReference E ti.modules.titanium.ui.widget.TiUIImageView.processProperties(TiUIImageView.java:849) 455 TiDrawableReference E org.appcelerator.kroll.KrollProxy.setModelListener(KrollProxy.java:641) 455 TiDrawableReference E org.appcelerator.titanium.proxy.TiViewProxy.realizeViews(TiViewProxy.java:464) 455 TiDrawableReference E org.appcelerator.titanium.proxy.TiViewProxy.handleGetView(TiViewProxy.java:456) 455 TiDrawableReference E org.appcelerator.titanium.proxy.TiViewProxy.getOrCreateView(TiViewProxy.java:434) 455 TiDrawableReference E org.appcelerator.titanium.proxy.TiViewProxy.handleAdd(TiViewProxy.java:538) 455 TiDrawableReference E org.appcelerator.titanium.proxy.TiViewProxy.handleMessage(TiViewProxy.java:271) 455 TiDrawableReference E android.os.Handler.dispatchMessage(Handler.java:95) 455 TiDrawableReference E org.appcelerator.kroll.common.TiMessenger.dispatchMessage(TiMessenger.java:318) 455 TiDrawableReference E org.appcelerator.kroll.common.TiMessenger.dispatchPendingMessages(TiMessenger.java:303) 455 TiDrawableReference E org.appcelerator.kroll.common.TiMessenger$2.getResult(TiMessenger.java:188) 455 TiDrawableReference E org.appcelerator.kroll.common.TiMessenger.sendBlockingMessage(TiMessenger.java:215) 455 TiDrawableReference E org.appcelerator.kroll.common.TiMessenger.sendBlockingRuntimeMessage(TiMessenger.java:143) 455 TiDrawableReference E org.appcelerator.kroll.KrollProxy.fireSyncEvent(KrollProxy.java:417) 455 TiDrawableReference E org.appcelerator.titanium.TiBaseActivity.onCreate(TiBaseActivity.java:344) 455 TiDrawableReference E org.appcelerator.titanium.TiLaunchActivity.onCreate(TiLaunchActivity.java:117) 455 TiDrawableReference E org.appcelerator.titanium.TiRootActivity.onCreate(TiRootActivity.java:46) 455 TiDrawableReference E android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 455 TiDrawableReference E android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 455 TiDrawableReference E android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 455 TiDrawableReference E android.app.ActivityThread.access$2300(ActivityThread.java:125) 455 TiDrawableReference E android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 455 TiDrawableReference E android.os.Handler.dispatchMessage(Handler.java:99) 455 TiDrawableReference E android.os.Looper.loop(Looper.java:123) 455 TiDrawableReference E android.app.ActivityThread.main(ActivityThread.java:4627) 455 TiDrawableReference E java.lang.reflect.Method.invokeNative(Native Method) 455 TiDrawableReference E java.lang.reflect.Method.invoke(Method.java:521) 455 TiDrawableReference E com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 455 TiDrawableReference E com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 455 TiDrawableReference E 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 java.net.URI$Helper.validateQuery(URI.java:458) 455 TiUIImageView E java.net.URI$Helper.parseURI(URI.java:360) 455 TiUIImageView E java.net.URI$Helper.access$100(URI.java:302) 455 TiUIImageView E java.net.URI.(URI.java:87) 455 TiUIImageView E ti.modules.titanium.ui.widget.TiUIImageView.setImage(TiUIImageView.java:715) 455 TiUIImageView E ti.modules.titanium.ui.widget.TiUIImageView.access$500(TiUIImageView.java:53) 455 TiUIImageView E ti.modules.titanium.ui.widget.TiUIImageView$3.run(TiUIImageView.java:771) 455 TiUIImageView E android.os.Handler.handleCallback(Handler.java:587) 455 TiUIImageView E android.os.Handler.dispatchMessage(Handler.java:92) 455 TiUIImageView E android.os.Looper.loop(Looper.java:123) 455 TiUIImageView E android.app.ActivityThread.main(ActivityThread.java:4627) 455 TiUIImageView E java.lang.reflect.Method.invokeNative(Native Method) 455 TiUIImageView E java.lang.reflect.Method.invoke(Method.java:521) 455 ...",3 TIMOB-2662,"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,"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,"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,"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-2782,"Android: Generate a Proguard configuration based on API usage","This will decrease the final APK size, improve performance, and further obfuscate bytecode. More info here: http://developer.android.com/tools/help/proguard.html",3 TIMOB-2801,"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,"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-3162,"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}",1 TIMOB-3180,"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,"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-3286,"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-3432,"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-3541,"iOS: Implement Composite Layout Behavior Spec","Implementation of the new (Composite) Behavior Spec for IOS. ",8 TIMOB-3569,"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,"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,"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-4063,"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,"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-4244,"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,"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-4388,"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-4644,"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-4510,"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,"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-4730,"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-4800,"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,"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-5010,"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,"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. ",1 TIMOB-5162,"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,"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}",1 TIMOB-5438,"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-5749,"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-5769,"Android: Add the ability to add multiple polygons to the MapView","h5.Feature Request To add routes and allow for multiple polygons to be added to the MapView as well as have fill, opacity and color properties. h6.Utilities That would allow developers to implement geofencing (see http://en.wikipedia.org/wiki/Geo-fence) a common technique for Android apps. h6.Customer notes ""We'd like to be able to hook into the events when a user enters and leaves a geo-fenced polygon or a radius around a geolocated point.""",34 TIMOB-5812,"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,"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,"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,"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-6922,"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,"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-5989,"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-6038,"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",1 TIMOB-6060,"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,"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,"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-6292,"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,"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-6493,"iOS: Titanium.Media.takeScreenshot fails to orient captured image to reflect hardware orientation","h4. Expected Behavior: Take an horizontal screenShot and attach it to an email and the image attached goes horizontal too, or save the screenshot on the Photo Gallery and save it horizontal too. h4. Actual Behavior: The image saves and attach to the email vertically, even if i create a matrix transformation and rotate this one, if i add to the window the image rotated looks good, but if i save to the photo gallery or attach it to an email, looks vertical again h4. Test Case: {code} var win = Ti.UI.createWindow({ backgroundColor:'#FFFFFF', orientationModes:[Ti.UI.PORTRAIT,Titanium.UI.LANDSCAPE_LEFT,Titanium.UI.LANDSCAPE_RIGHT] }); var button = Ti.UI.createButton({ title: 'ScreenShot!!' }) button.addEventListener('click',function(){ Titanium.Media.takeScreenshot(function(event){ var screenShot = event.media; var img = Titanium.UI.createImageView({ image: screenShot, borderColor: 'red', borderWidth: 10 }); Ti.API.info('taking screenshot'); img.addEventListener('click', function() { Ti.API.info('remove image'); win.remove(img); img = null; }); win.add(img); }); }); win.add(button); win.open(); {code} ",3 TIMOB-6500,"Android: Implement API Coverage for V8","We need to re-implement our coverage report data for the new V8 runtime",5 TIMOB-6666,"Android: Allow users to specify ""Default.jpg"" in place of ""Default.png"" ","h6.Feature request Establish the way to choose which image format should be used as splash image. i.e. Use JPEG image rather than PNG image. h6.Associated HD ticket APP-493615",3 TIMOB-6845,"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-7124,"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,"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.",1 TIMOB-7152,"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,"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-7246,"iOS - Window Proxy does not get release if animated with callback","h3. The Problem: A window that has some type of animation with a callback function leaks. h3. Test case Open instruments and look for proxies while opening and closing the window in the following code sample: h3. Code {code} function Window1(){ var self = {}; var win = Ti.UI.createWindow(); var btn = Ti.UI.createButton({ title:'open', left:20, right:20, height:44 }); btn.addEventListener('click', function(){ Window2().open(); }); win.add(btn); self.open = win.open; self.close = win.close; return self; } function Window2(){ var self = {}; var win = Ti.UI.createWindow({ backgroundColor:'green' }); // win.addEventListener('close', function(){ // win = null; // this will make the window go away from memory, but not the items within // }); win.addEventListener('open', function(){ win.animate({ left:10, duration:300 }, function(){ Ti.API.info('complete'); }); }); var btn = Ti.UI.createButton({title:'close', left:20,right:20,height:44}); btn.addEventListener('click', function(){ win.close(); }); win.add(btn); self.open = win.open; self.close = win.close; return self; } Window1().open(); {code}",21 TIMOB-7249,"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}",1 TIMOB-7259,"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-7301,"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-7333,"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,"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.",1 TIMOB-7664,"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,"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))); } ",1 TIMOB-7391,"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} ",1 TIMOB-7393,"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,"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-7421,"Tooling: As a Ti documentation writer, I would like to have access to enhanced TDoc tools","Enhance TDoc2 tools to support the following functionality. - Enhance documentation generators - Support Code Snippets - Support Modules - Support Localization ",3 TIMOB-7424,"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,"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,"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,"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",1 TIMOB-7536,"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-7559,"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-8472,"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: ti.modules.titanium.ui.widget.tableview.TiBaseTableViewItem.setBackgroundFromProxy(TiBaseTableViewItem.java:182) 03-31 23:00:10.560 5847 5847 E TiApplication: ti.modules.titanium.ui.widget.tableview.TiTableViewRowProxyItem.setRowData(TiTableViewRowProxyItem.java:213) 03-31 23:00:10.560 5847 5847 E TiApplication: ti.modules.titanium.ui.widget.tableview.TiTableViewRowProxyItem.setRowData(TiTableViewRowProxyItem.java:84) 03-31 23:00:10.560 5847 5847 E TiApplication: ti.modules.titanium.ui.widget.tableview.TiTableView$TTVListAdapter.getView(TiTableView.java:210) 03-31 23:00:10.560 5847 5847 E TiApplication: android.widget.AbsListView.obtainView(AbsListView.java:1435) 03-31 23:00:10.560 5847 5847 E TiApplication: android.widget.ListView.makeAndAddView(ListView.java:1824) 03-31 23:00:10.560 5847 5847 E TiApplication: android.widget.ListView.fillSpecific(ListView.java:1365) 03-31 23:00:10.560 5847 5847 E TiApplication: android.widget.ListView.layoutChildren(ListView.java:1651) 03-31 23:00:10.560 5847 5847 E TiApplication: android.widget.AbsListView.onLayout(AbsListView.java:1286) 03-31 23:00:10.560 5847 5847 E TiApplication: android.view.View.layout(View.java:7184) 03-31 23:00:10.560 5847 5847 E TiApplication: android.widget.FrameLayout.onLayout(FrameLayout.java:338) 03-31 23:00:10.560 5847 5847 E TiApplication: android.view.View.layout(View.java:7184) 03-31 23:00:10.560 5847 5847 E TiApplication: org.appcelerator.titanium.view.TiCompositeLayout.onLayout(TiCompositeLayout.java:382) 03-31 23:00:10.560 5847 5847 E TiApplication: android.view.View.layout(View.java:7184) 03-31 23:00:10.560 5847 5847 E TiApplication: org.appcelerator.titanium.view.TiCompositeLayout.onLayout(TiCompositeLayout.java:382) 03-31 23:00:10.560 5847 5847 E TiApplication: android.view.View.layout(View.java:7184) 03-31 23:00:10.560 5847 5847 E TiApplication: android.widget.FrameLayout.onLayout(FrameLayout.java:338) 03-31 23:00:10.560 5847 5847 E TiApplication: android.view.View.layout(View.java:7184) 03-31 23:00:10.560 5847 5847 E TiApplication: android.widget.LinearLayout.setChildFrame(LinearLayout.java:1254) 03-31 23:00:10.560 5847 5847 E TiApplication: android.widget.LinearLayout.layoutVertical(LinearLayout.java:1130) 03-31 23:00:10.560 5847 5847 E TiApplication: android.widget.LinearLayout.onLayout(LinearLayout.java:1047) 03-31 23:00:10.560 5847 5847 E TiApplication: android.view.View.layout(View.java:7184) 03-31 23:00:10.560 5847 5847 E TiApplication: android.widget.FrameLayout.onLayout(FrameLayout.java:338) 03-31 23:00:10.560 5847 5847 E TiApplication: android.view.View.layout(View.java:7184) 03-31 23:00:10.560 5847 5847 E TiApplication: android.view.ViewRoot.performTraversals(ViewRoot.java:1180) 03-31 23:00:10.560 5847 5847 E TiApplication: android.view.ViewRoot.handleMessage(ViewRoot.java:1914) 03-31 23:00:10.560 5847 5847 E TiApplication: android.os.Handler.dispatchMessage(Handler.java:99) 03-31 23:00:10.560 5847 5847 E TiApplication: android.os.Looper.loop(Looper.java:130) 03-31 23:00:10.560 5847 5847 E TiApplication: android.app.ActivityThread.main(ActivityThread.java:3859) 03-31 23:00:10.560 5847 5847 E TiApplication: java.lang.reflect.Method.invokeNative(Native Method) 03-31 23:00:10.560 5847 5847 E TiApplication: java.lang.reflect.Method.invoke(Method.java:507) 03-31 23:00:10.560 5847 5847 E TiApplication: com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:840) 03-31 23:00:10.560 5847 5847 E TiApplication: com.android.internal.os.ZygoteInit.main(ZygoteInit.java:598) 03-31 23:00:10.560 5847 5847 E TiApplication: 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: ti.modules.titanium.ui.widget.tableview.TiBaseTableViewItem.setBackgroundFromProxy(TiBaseTableViewItem.java:182) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: ti.modules.titanium.ui.widget.tableview.TiTableViewRowProxyItem.setRowData(TiTableViewRowProxyItem.java:213) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: ti.modules.titanium.ui.widget.tableview.TiTableViewRowProxyItem.setRowData(TiTableViewRowProxyItem.java:84) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: ti.modules.titanium.ui.widget.tableview.TiTableView$TTVListAdapter.getView(TiTableView.java:210) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: android.widget.AbsListView.obtainView(AbsListView.java:1435) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: android.widget.ListView.makeAndAddView(ListView.java:1824) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: android.widget.ListView.fillSpecific(ListView.java:1365) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: android.widget.ListView.layoutChildren(ListView.java:1651) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: android.widget.AbsListView.onLayout(AbsListView.java:1286) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: android.view.View.layout(View.java:7184) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: android.widget.FrameLayout.onLayout(FrameLayout.java:338) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: android.view.View.layout(View.java:7184) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: org.appcelerator.titanium.view.TiCompositeLayout.onLayout(TiCompositeLayout.java:382) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: android.view.View.layout(View.java:7184) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: org.appcelerator.titanium.view.TiCompositeLayout.onLayout(TiCompositeLayout.java:382) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: android.view.View.layout(View.java:7184) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: android.widget.FrameLayout.onLayout(FrameLayout.java:338) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: android.view.View.layout(View.java:7184) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: android.widget.LinearLayout.setChildFrame(LinearLayout.java:1254) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: android.widget.LinearLayout.layoutVertical(LinearLayout.java:1130) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: android.widget.LinearLayout.onLayout(LinearLayout.java:1047) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: android.view.View.layout(View.java:7184) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: android.widget.FrameLayout.onLayout(FrameLayout.java:338) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: android.view.View.layout(View.java:7184) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: android.view.ViewRoot.performTraversals(ViewRoot.java:1180) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: android.view.ViewRoot.handleMessage(ViewRoot.java:1914) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: android.os.Handler.dispatchMessage(Handler.java:99) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: android.os.Looper.loop(Looper.java:130) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: android.app.ActivityThread.main(ActivityThread.java:3859) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: java.lang.reflect.Method.invokeNative(Native Method) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: java.lang.reflect.Method.invoke(Method.java:507) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:840) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: com.android.internal.os.ZygoteInit.main(ZygoteInit.java:598) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: 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,"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,"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,"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,"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,"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,"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-7624,"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,"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,"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,"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,"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.",1 TIMOB-7652,"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,"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,"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,"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,"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.",1 TIMOB-7700,"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-8293,"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,"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). ",1 TIMOB-7816,"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-7833,"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,"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,"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.",1 TIMOB-8486,"iOS: VideoPlayer does not fire touch events since 1.8.1","VideoPlayer is not firing touch events anymore on iOS (other platforms not tested). The next code works with sdk 1.7.5 and 1.8.0.1 on iOS, but is not working with sdk 1.8.1 nor 1.8.2 I tried to capture click, dblclik and touchstart events with same result. Bug has been confirmed by the community at Q&A [http://developer.appcelerator.com/question/132645/bug-videoplayer-does-not-fire-touch-events-sdk-181] {code:title=Test case: App.js|borderStyle=solid} var win = Ti.UI.createWindow(); var videoObject = Titanium.Media.createVideoPlayer({ contentURL:'test.mp4', scalingMode:Titanium.Media.VIDEO_SCALING_MODE_FILL, top:0, left:0, height:'100%', width:'100%', autoplay:true }); videoObject.addEventListener('click', function(){ alert('click!'); }); win.add(videoObject); win.open(); {code}",2 TIMOB-7897,"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,"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): android.database.sqlite.SQLiteQueryBuilder.computeProjection(SQLiteQueryBuilder.java:588) E/DatabaseUtils(31274): android.database.sqlite.SQLiteQueryBuilder.buildQuery(SQLiteQueryBuilder.java:403) E/DatabaseUtils(31274): android.database.sqlite.SQLiteQueryBuilder.query(SQLiteQueryBuilder.java:347) E/DatabaseUtils(31274): android.database.sqlite.SQLiteQueryBuilder.query(SQLiteQueryBuilder.java:291) E/DatabaseUtils(31274): com.android.providers.calendar.CalendarProvider2.handleInstanceQuery(CalendarProvider2.java:1015) E/DatabaseUtils(31274): com.android.providers.calendar.CalendarProvider2.query(CalendarProvider2.java:840) E/DatabaseUtils(31274): android.content.ContentProvider$Transport.query(ContentProvider.java:178) E/DatabaseUtils(31274): android.content.ContentProviderNative.onTransact(ContentProviderNative.java:112) E/DatabaseUtils(31274): android.os.Binder.execTransact(Binder.java:338) E/DatabaseUtils(31274): 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,"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,"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,"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-8048,"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,"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,"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,"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,"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,"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,"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,"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-8172,"Android: memory leaks opening/closing tabGroups","h2. Problem Memory leaks when opening and closing a window including a tabGroup h2. Code and steps to reproduce {code:lang=javascript|title=app.js} var mainwin = Ti.UI.createWindow({ title:'TEST WINDOW', backgroundColor:'#fff', fullscreen:true, statusBarHidden: true, navBarHidden:true, exitOnClose:true }); var button = Ti.UI.createButton({ title: ""create tabGroup"" }); var MY_TABGROUP = null; Titanium.App.addEventListener('tabGroupclosed', function(e) { Ti.API.debug('MY_TABGROUP close...'); MY_TABGROUP = null; }); button.addEventListener('click', function(e) { MY_TABGROUP = require('/myNewTabGroup').innerTabGroup(); MY_TABGROUP.open({ animated: true }); }); var button2 = Ti.UI.createButton({ bottom: 200, title:'show MY_TABGROUP' }); button2.addEventListener('click', function(){ alert(MY_TABGROUP) }); mainwin.add(button2); var button3 = Ti.UI.createButton({ bottom:5, title:'GC' }); button3.addEventListener('click', function(){ views1 = []; views2 = []; MY_TABGROUP=null; }); mainwin.add(button3); mainwin.add(button); mainwin.open(); {code} {code:lang=javascript|title=myNewTabGroup.js} exports.innerTabGroup = function() { var tabGroup = null; var win1 = null; var tab1 = null; var win2 = null; var tab2 = null; var views1 =[]; var view1 = null; var views2 =[]; var view2 = null; tabGroup = Titanium.UI.createTabGroup(); win1 = Titanium.UI.createWindow({ title:'Tab 1', backgroundColor:'#fff' }); for (var i=0; i < 600; i++) { view1 = Ti.UI.createView(); views1.push(view1); win1.add(view1); } tab1 = Titanium.UI.createTab({ icon:'KS_nav_views.png', title:'Tab 1', window:win1 }); win2 = Titanium.UI.createWindow({ title:'Tab 2', backgroundColor:'#fff' }); for (var i=0; i < 600; i++) { view2 = Ti.UI.createView(); views2.push(view2); win2.add(view2); } tab2 = Titanium.UI.createTab({ icon:'KS_nav_ui.png', title:'Tab 2', window:win2 }); tabGroup.addTab(tab1); tabGroup.addTab(tab2); return tabGroup; }; {code} Steps followed with allocated memory and # of objects: 1. Run the app (memory 3144MB - #Objects 60,139) and click on 'create tabGroup' button (mem 8053 - Obj 148,156) 2. Hit back button (mem 4457 - 91,059). Reference to MY_TABGROUP is still present and is still not GC 3. Click the GC button to set MY_TABGROUP to null (mem 4234 - Obj 86,654) 4. Click on create tabGroup button (mem 9007 - 172,396) 5. Hit back button (5408 - 115,292) Memory increase in size subsequently repeating the steps. Attaching also the log file. h2. Additional info Customer ticket: http://support-admin.appcelerator.com/display/APP-355811",4 TIMOB-8173,"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,"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-8186,"iOS: Feature request to add X.509 certificate authentication over SSL in HTTPClient connection","It has been requested to add the functionality to send x.509 certificate through SSL to the server while establishing HTTPClient connection. So basically, during authentication process, client would be able to send a (.cer) file through HTTPS. Essentially, something like this: 1) Package .p12 files/ .cer files as part of Resources, and 2) Extract data from these files (an API from TiHTTPClient) and send it over to server.",3 TIMOB-8200,"Android: webViews has a white background when turning on hardware acceleration ","h6.Issue When using android:hardwareAccelerated=""true"" (most likely in android manifest), the transparency of the WebView is lost and replaced by plain white background. Not all devices seem affected by this issue. h6.Non affected devices Droid Razr 2.3.5 Samsung Galaxy Tab p1000, Froyo(2.2) h6.Affected device Asus Transformer TF101, Honeycomb(ver3.1) h6.Repro sequence {code:title=app.js} var win = Ti.UI.createWindow({ backgroundImage : 'KS_nav_ui.png', //'/images/guide_fond_notice.png', navBarHidden : true, exitOnClose : true, top : '0dp', left : '0dp', right : '0dp', bottom : '0dp' }); var webView = Ti.UI.createWebView({ backgroundColor : 'transparent', html : 'This WebView\'s Background Must Be transparent', top : '50dp', left : '470dp', right : '0dp', bottom : '50dp' }); win.add(webView); win.open(); {code} h6.Setting HW accelerated via Tiapp.xml {code:title=Tiapp.xml} v8 true true true true false 1.8.2 com.appcelerator.com AcScreenConfs 1.0 egomez http:// not specified 2012 by egomez appicon.png false false default false false false true 95f32b4c-0c20-4f0e-86d5-3bc8ece20641 Ti.UI.PORTRAIT Ti.UI.PORTRAIT Ti.UI.UPSIDE_PORTRAIT Ti.UI.LANDSCAPE_LEFT Ti.UI.LANDSCAPE_RIGHT 11 {code} h6.Or via Manifest {code:title=platform/android/AndroidManifest.xml} 11 {code}",4 TIMOB-8241,"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,"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,"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-8303,"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}",1 TIMOB-8306,"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,"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,"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,"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,"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,"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,"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,"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,"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.",1 TIMOB-8417,"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,"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,"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,"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-8431,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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.",1 TIMOB-8515,"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-8549,"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,"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-8562,"BlackBerry: Adapt scons script (SConstruct) [build script for mobile_sdk] to build for blackberry",NULL,3 TIMOB-8563,"BlackBerry: Support ability to create new blackberry project in Titanium Studio","Work with the studio team to integrate project creation ",2 TIMOB-8564,"BlackBerry: Run and debug on device/simulator from Titanium Studio","- Some testing/investigation required to figure out how this can be accomplished, can likely use help from RIM technical contact to mimic what's available in the QNX IDE - minimum: trap console logging",7 TIMOB-8565,"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,"BlackBerry: Build v8 on the QNX ndk as static lib","Possibly create wrappers for the v8",3 TIMOB-8567,"BlackBerry: Build blackberry native app","Build blackberry native app from shell application, v8 and Kroll from titanium (tie in with builder)",10 TIMOB-8568,"BlackBerry: Integrate with the cascades framework",NULL,3 TIMOB-8569,"BlackBerry: Integrate unit tests","need more info from Vishal, drillbit vs module tests?",20 TIMOB-8570,"BlackBerry: Run on simulator and device","minimum BB10 for demo",5 TIMOB-8572,"BlackBerry: Implement Analytics module",NULL,20 TIMOB-8573,"BlackBerry: Implement BlackBerry specific components",NULL,3 TIMOB-8574,"BlackBerry: Implement important Ti.API functionality","This may be completed. It only looks like the following are required: * Titanium.API.debug * Titanium.API.error * Titanium.API.info * Titanium.API.log * Titanium.API.timestamp * Titanium.API.trace * Titanium.API.warn",19 TIMOB-8576,"BlackBerry: Implement important Titanium.Codec functionality",NULL,2 TIMOB-8577,"BlackBerry: Implement Contacts module",NULL,20 TIMOB-8579,"BlackBerry: Implement Facebook module",NULL,8 TIMOB-8580,"BlackBerry: Implement important Titanium.Filesystem functionality","* Titanium.Filesystem * Titanium.Filesystem.applicationDataDirectory * Titanium.Filesystem.File * Titanium.Filesystem.File.append * Titanium.Filesystem.File.createDirectory * Titanium.Filesystem.File.deleteFile * Titanium.Filesystem.File.exists * Titanium.Filesystem.File.getNativePath * Titanium.Filesystem.File.nativePath * Titanium.Filesystem.File.read * Titanium.Filesystem.File.writable * Titanium.Filesystem.File.write * Titanium.Filesystem.getFile * Titanium.Filesystem.resourcesDirectory * Titanium.Filesystem.tempDirectory h3. Test code: Reading a file from the Resources dir {code} Ti.API.info('------------------------'); Ti.API.info('Testing resources directory reading app.js'); var app_js = Ti.Filesystem.getFile(Ti.Filesystem.resourcesDirectory, 'app.js'); var blob = app_js.read(); Ti.API.info('---------'); Ti.API.info(blob.text); {code} Creating, writing, and reading a file from the data dir {code} Ti.API.info('------------------------'); Ti.API.info('Testing data directory reading writing and reading'); var file = Ti.Filesystem.getFile(Ti.Filesystem.applicationDataDirectory, 'hello_world.txt'); if(!file.exists()) { Ti.API.info('file does not exist'); file.write('this is a test'); Ti.API.info('file exists? ' + file.exists()); } Ti.API.info('---------'); var blob = file.read(); Ti.API.info(blob.text); {code} Getting the directory listing from the data dir {code} Ti.API.info('------------------------'); Ti.API.info('Testing data directory get listing'); var directory = Ti.Filesystem.getFile(Ti.Filesystem.applicationDataDirectory); var files = directory.getDirectoryListing(); for(var i = 0; i < files.length; i++) { Ti.API.info('====================='); var file = files[i]; Ti.API.info('filename: ' + file); var _file = Ti.Filesystem.getFile(Ti.Filesystem.applicationDataDirectory, file); Ti.API.info('isDirectory: ' + _file.isDirectory()); Ti.API.info('isFile: ' + _file.isFile()); } {code}",17 TIMOB-8582,"BlackBerry: Implement important Gesture functionality","Implement the Gesture module. h3. Acceptance Test {code} function orientationToString(orientation) { switch (orientation) { case Ti.UI.PORTRAIT: return 'portrait'; case Ti.UI.UPSIDE_PORTRAIT: return 'upside portrait'; case Ti.UI.LANDSCAPE_LEFT: return 'landscape left'; case Ti.UI.LANDSCAPE_RIGHT: return 'landscape right'; case Ti.UI.FACE_UP: return 'face up'; case Ti.UI.FACE_DOWN: return 'face down'; default: return 'unknown'; } } var win = Ti.UI.createWindow({ backgroundColor: 'red', layout: 'vertical' }); var labelA = Ti.UI.createLabel({ width: Ti.UI.FILL, text: 'e.orientation = N/A' }); win.add(labelA); var labelB = Ti.UI.createLabel({ width: Ti.UI.FILL, text: 'Gesture.orientation = N/A' }); win.add(labelB); var labelC = Ti.UI.createLabel({ width: Ti.UI.FILL, wrap: true, text: 'No shake yet.' }); win.add(labelC); function onShake(e) { Ti.API.info('Shake: {' + e.x + ', ' + e.y + ', ' + e.z + '}'); labelC.text = 'Shake!'; win.backgroundColor = 'yellow'; setTimeout(function() { labelC.text = 'No shake yet.'; win.backgroundColor = 'red'; }, 500); } var toggleShake = Ti.UI.createButton({ title: 'Toggle Shake' }); var shakeEnabled = false; toggleShake.addEventListener('click', function() { shakeEnabled ? Ti.Gesture.removeEventListener('shake', onShake) : Ti.Gesture.addEventListener('shake', onShake); shakeEnabled = !shakeEnabled; }); win.add(toggleShake); Ti.Gesture.addEventListener('orientationchange', function(e) { labelA.text = 'e.orientation = ' + orientationToString(e.orientation); labelB.text = 'Gesture.orientation = ' + orientationToString(Ti.Gesture.orientation); }); win.open(); {code} # Rotate the device and flip it around. The first two labels should be equal and display the current orientation. # Try shaking the device, nothing should happen. # Click the ""Toggle Shake"" button and shake again. The background should flash yellow. # Try clicking the ""Toggle Shake"" button and shake again. Nothing should happen.",17 TIMOB-8583,"BlackBerry: Implement important Titanium.Locale functionality",NULL,19 TIMOB-8585,"BlackBerry: Implement Media module",NULL,20 TIMOB-8587,"BlackBerry: Implement Network module for Anvil",NULL,8 TIMOB-8589,"BlackBerry: Implement important Titanium.Stream functionality",NULL,8 TIMOB-8591,"BlackBerry: Implement important Titanium.Utils functionality",NULL,17 TIMOB-8592,"BlackBerry: Implement important Titanium.XML functionality",NULL,17 TIMOB-8593,"BlackBerry: Implement important Titanium.Yahoo functionality",NULL,15 TIMOB-8594,"BlackBerry: Full support for builder script","Implement all targets",20 TIMOB-8597,"BlackBerry: Get KitchenSink to work",NULL,30 TIMOB-8598,"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-8602,"BlackBerry: Integrate the final deliverable into the current build, testing and development infrastructure",NULL,20 TIMOB-8610,"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-8653,"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,"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,"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,"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-8680,"Core: Define Javascript coding standards","Define a document that outlines all Javascript coding standards any javascript 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. This is a collaboration ticket.",5 TIMOB-8681,"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-8710,"Core: Research source code validation tool","Investigate the use of a validation tool for source code against our defined language standards. Do we need one per language? Can we use a single tool with plugins perhaps?",1 TIMOB-8714,"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,"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-8721,"BlackBerry: Implement module API","This is the api that will be available for 3rd party module extensions. This api also needs to be well documented. ""The ""Extending Titanium"" set of guides might be a good starting point: http://docs.appcelerator.com/titanium/2.1/index.html#!/guide/Extending_Titanium_Mobile There will need to be a C/C++ API for module developers. You can look at the API documentation for Android and iOS to get an idea of what sort of native API we expose for extensions. Module developers should be able to create their own proxy and views. Need to also figure out how these external modules get compiled into the application. I am guess module developers will provide some sort of static/dynamic library that gets included into the application. For application developers they use the require() function to load these external modules. So you will need to add support into your require implementation to search for these external modules if it can't find any files in the applications resources folder. For external modules we use the module's ID string for the require lookup. Ex: require('com.my.module') We also support external CommonJS modules. The Titanium Cloud module is an example of this type of module. This document provides some details: https://wiki.appcelerator.org/display/guides/CommonJS+Modules+in+Titanium Basically this allows module developers to distribute JS only modules. This works by extending the require() search path to include these modules when the application developers adds them to their tiapp.xml section. So I hope that gives you a good starting line. Feel free to ask for detailed questions on each of these requirements. We should also loop in the module team and work closely with them on any requirements they require for creating modules for BB. -- Joshua Roesslein Platform Engineer Appcelerator, Inc. jroesslein@appcelerator.com""",15 TIMOB-8730,"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,"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,"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,"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-8837,"BlackBerry: Implement UI.TabGroup elements needed for KitchenSink",NULL,12 TIMOB-8838,"BlackBerry: Implement UI.TableView - Part 1",NULL,10 TIMOB-8839,"BlackBerry: Implement Simple TableViewRows","h3. Feature Implement TableViewRow proxies which support the simple row style. For simple rows (title, leftImage, etc) can probably use the Cascades StandardListItem. This is already implemented for using plain objects for the data array. Developers should also be able to listen for click and swipe events on rows. h3. Acceptance Test 1. Download the test case (tableview-test.zip) which includes the resources. 2. Create a project with the resources and run the app. 3. A list of items should appear with title text and a left image. 4. After a few seconds the last item should change to a pear. 5. Try clicking various rows. The text should change to ""Click!"" for a few seconds. The text should revert back to its original value. ",19 TIMOB-8840,"BlackBerry: Implement important Titanium.UI.TableViewSection functionality","A TableView section object. Usually contains TableViewRows In iOS, this is an abstract non-iOS class used to group rows into sections. There is no native analog.",17 TIMOB-8841,"BlackBerry: Implement important Titanium.UI.TextArea functionality",NULL,17 TIMOB-8842,"BlackBerry: Implement UI.TextField - Part 1",NULL,8 TIMOB-8843,"BlackBerry: Implement UI.View based on R4","Every UI control in Titanium extends the View and as such inherit methods from it. This implementation is missing from the current framework. It needs to be implemented asap so as to minimize the rework to be done in existing controls at the time this is implemented. To facilitate this change, we will likely include a container for all controls that we have, so the View methods to act upon.",30 TIMOB-8844,"BlackBerry: Implement UI.WebView",NULL,5 TIMOB-8851,"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-8852,"Core: Integrate Drillbit into the CI Loop",NULL,5 TIMOB-8870,"BlackBerry: Integrate Cascades R4","Condition: Cascades R4 needs to be available - tentative date April 30th 1) resolve conflicts, pay special attention to things that have already been implemented in Titanium.API 2) investigate if there is anything new added to controls that we already implemented 3) if any, implement new additions to controls that we already implemented",10 TIMOB-8897,"BlackBerry: Implement important Titanium.Blob functionality","* Titanium.Blob * Titanium.Blob.text * Titanium.Blob.toString Implement basic Blob functionality: accessing data, getting size, appending, convert to string. Blobs are primarily used to wrap native data structures or sources (ex: file descriptor, image, buffers). The goal of this ticket is just implement the proxy front facing APIs. Internally it should be architected to support wrapping various data sources. For the initial implementation support ""buffer"" based blobs would be a good first step. Blobs are not creatable, but returns by various API methods in Titanium. For testing this ticket implement the Buffer.toBlob() method. This should return a Blob which should allocate a buffer and copy the data over. Blob streams and to image conversions will not be implemented at this time. Separate tickets for those will be created. h3. Acceptance Test Look into using the test in Anvil for Blobs. The test is currently very small, so try to improve it. Anvil may not run right now on BlackBerry, but we can just copy the test into an application for now.",17 TIMOB-8925,"Blackberry: Add support for debugging titanium apps in studio",NULL,8 TIMOB-8926,"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-8983,"Blackberry: Add formatting check in git pre-commit hook",NULL,3 TIMOB-8996,"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,"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-9028,"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-9037,"CLI: Implement ""export"" command","Exports a project to a standalone project without any dependencies on Titanium. The arguments will be similar to the build command.",34 TIMOB-9092,"BlackBerry: Implement UI.ActivityIndicator - Part2","Implement the rest based on TIMOB-8810 To be implemented: Properties color : String font : Font message : String messageid : String style : Number Methods getColor( ) getFont( ) getMessage( ) getMessageid( ) getStyle( ) setColor( String color ) setFont( Font font ) setMessage( String message ) setMessageid( String messageid ) setStyle( Number style ) ",12 TIMOB-9111,"iOS: Ti.Utils.base64encode result is different between iOS and 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,"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-9142,"BlackBerry: Implement BB animations","In matching what's currently available on other platform, look for 2Dmetric, 3Dmetric and other references to animation",17 TIMOB-9143,"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,"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,"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,"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-9202,"BlackBerry: Implement important Titanium.UI.OptionDialog functionality","For now used native DropDown component for OptionDialog. In future when modal dialog will be supported by cascades, we need to switch to something more similar thing for OptionDialog, as already in Android and iPhone.",15 TIMOB-9203,"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,"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,"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,"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-9291,"BlackBerry: Generate moc files during the build",NULL,5 TIMOB-9293,"BlackBerry: Create string table for Titanium error messages","Error messages during runtime are, in most cases, not returning a readable message. A centralized string table should be created with properly formatted messages to help users with debugging.",10 TIMOB-9306,"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-9309,"BlackBerry: Convert argparse to optparse","The argparse module was introduced in python 2.7 but we need to support 2.6 so we need to use optparse instead. It's fairly similar except it doesn't support sub-parsers.",7 TIMOB-9369,"BlackBerry: bring in the latest Appcelerator code into BB branch",NULL,3 TIMOB-9378,"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,"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,"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,"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,"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-9539,"BlackBerry: Implement include()","Needed for unit tests and Kitchen Sink",19 TIMOB-9542,"BlackBerry: Implement important Titanium.Buffer functionality",NULL,15 TIMOB-9543,"BlackBerry: Implement Ti.BufferStream",NULL,3 TIMOB-9552,"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-9604,"BlackBerry: Implement important Titanium.UI.TabGroup functionality","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 Add at least: * Titanium.UI.TabGroup.enabled * Titanium.UI.TabGroup.touchEnabled",21 TIMOB-9605,"BlackBerry: Implement important Titanium.UI.Window functionality","Use the implementation matrix to see what's remaining: https://docs.google.com/a/macadamian.com/spreadsheet/ccc?key=0Ajs-e76-B0yIdG1oLVVleVVxaGRYd3lWWXd0czhqUFE Implement at least: * Titanium.UI.Window.modal (sheets/dialogs in Cascades?) * Titanium.UI.Window.setKeepScreenOn",21 TIMOB-9658,"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,"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,"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-9685,"Blackberry: Resolve and clean TODOs and FIXMEs in the code",NULL,8 TIMOB-9788,"BlackBerry: Implement important Titanium.UI.Picker functionality","Need to implement plain picker using BB drop down control. 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",17 TIMOB-9830,"BlackBerry: Support UI Controller property which value is another controller",NULL,5 TIMOB-9840,"BlackBerry: Integrate Anvil unit test framework and get tests to run","- Implement platform specific file in anvil/driver/platforms (closest match likely to be android.js) - minor updates to anvil/driver/driver.js to add BB as a known platform - select a socket port for BB in anvil/driver/config.js created from a copy of exampleConfig.js - Identify necessary Ti API calls needed for the harness app and implement them - Figure out the communication between driver and harness",7 TIMOB-9859,"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-9897,"Blackberry: address comments from Martin's review",NULL,3 TIMOB-9916,"BlackBerry: Upgrade Cascades to R6",NULL,3 TIMOB-9930,"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-9933,"BlackBerry: make sure that TiObjects get to the destruction state",NULL,2 TIMOB-9950,"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,"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,"BlackBerry: Complete 'remove' method in UI View","Implement 'remove' method for removing child controls from a container.",3 TIMOB-9972,"BlackBerry: Implement UI.Tab.open and .setWindow, needed for KitchenSink","To get this to work in KS, we need TIMOB-9879 and whatever else to fix the click event for TableView, but the Tab.open and setWindow can still be implemented separately. Take a look at android/modules/ui/src/js/tab.js for .open(), but currently we can't use the bootstrapping to extend the API because we create different objects instead of using the prototype.",7 TIMOB-10025,"BlackBerry: Sync with Appcelerator branch",NULL,3 TIMOB-10059,"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-10224,"Blackberry: Implement startLayout, finishLayout, updateLayout methods",NULL,3 TIMOB-10233,"BlackBerry: Sync with Appcelerator branch (Sprint 11)",NULL,2 TIMOB-10257,"BlackBerry: Implement Titanium.IOStream","IOStream is the interface that all stream types implement. Methods: 5 Sub Classes: 4",3 TIMOB-10264,"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-10266,"BlackBerry: Complete Ti.UI.View methods / properties / events","Complete UI View methods / properties / events NOT required by Kitchen Sink Add at least: * Titanium.UI.View.animate * Titanium.UI.View.append * Titanium.UI.View.backgroundGradient * Titanium.UI.View.borderColor * Titanium.UI.View.borderRadius * Titanium.UI.View.borderWidth * Titanium.UI.View.control * Titanium.UI.View.currentIndex * Titanium.UI.View.currentY * Titanium.UI.View.fireEvent * Titanium.UI.View.id * Titanium.UI.View.layout * Titanium.UI.View.on * Titanium.UI.View.refreshRssTable * Titanium.UI.View.reset * Titanium.UI.View.scrollView * Titanium.UI.View.showArticle * Titanium.UI.View.shuffle * Titanium.UI.View.state * Titanium.UI.View.titleId * Titanium.UI.View.toggle * Titanium.UI.View.toImage * Titanium.UI.View.touchEnabled * Titanium.UI.View.updateHandheldNav * Titanium.UI.View.updateSubNav * Titanium.UI.View.videoId ",21 TIMOB-10269,"BlackBerry: Implement Ti.UI.View setLayout / getLayout",NULL,4 TIMOB-10270,"BlackBerry: Implement getWidth, getHeight in R6 UI View",NULL,2 TIMOB-10271,"BlackBerry: Implement getZIndex on R6 UI View",NULL,2 TIMOB-10272,"BlackBerry: Finish size and position methods / properties on R6 UI View","Implement: getHeight getWidth getBottom setBottom getRight setRight getSize setSize",3 TIMOB-10275,"BlackBerry: Implement important Titanium.Network functionality","Implement at least: * Titanium.Network.httpURLFormatter * Titanium.Network.networkType * Titanium.Network.online * Titanium.Network.registerForPushNotifications",21 TIMOB-10299,"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,"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,"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-10345,"Blackberry: Implement applyProperties({}) method on Ti.UI objects to take a list of json properties as is done at create time.",NULL,8 TIMOB-10371,"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-10442,"BlackBerry: Anvil: Make list of anvil tests that can be run for BlackBerry",NULL,1 TIMOB-10534,"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-10468,"Blackberry: Merge Appcelerator's KS branch with our branch",NULL,2 TIMOB-10713,"BlackBerry: Anvil: Add ability to run on device",NULL,2 TIMOB-10717,"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. ",1 TIMOB-10748,"Blackberry: AlertDialog inherits from View rather than Proxy","AlertDialog inherits from the wrong parent. To change this, the properties of UI.AlertDialog need to be moved to TIProxy otherwise the properties don't work on AlertDialog and this is why it is currently this way. This will be the case for all UI objects that should extend Proxy directly instead of View.",19 TIMOB-10763,"CLI: Android: ""run"" hook for Android apps",NULL,3 TIMOB-10778,"BlackBerry: Sync with Appcelerator branch (Sprint 13)",NULL,2 TIMOB-10800,"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-10814,"Blackberry: Fix Anvil issue caused by sync",NULL,2 TIMOB-10820,"Blackberry: Upgrade to R8",NULL,8 TIMOB-11373,"Android Device Debugging: console window fails to display console output after port forward","Titanium Studio Console output fail to display output results. Steps to Reproduce: 1. Create default project, add sample code: {code} Ti.API.info('INFO LOGGED'); {code} 2. Run 'debug' on Android Device. Port forward message should appear on console. 3. Launch app from device. Actual Result: Titanium Studio console log fail to display the console output Expected Result: Titanium Studio console log display the console output as DDMS or Catlog. ",13 TIMOB-10849,"Blackberry: Implement important Ti.UI.Label functionality","Implement at least: * Titanium.UI.Label.opacity * Titanium.UI.Label.touchEnabled * Titanium.UI.Label.url",21 TIMOB-10869,"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-10870,"BlackBerry: Implement important Titanium.UI.ActivityIndicator functionality","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 Add at least: * Titanium.UI.ActivityIndicator.style (does not appear to be applicable in Cascades)",21 TIMOB-10872,"BlackBerry: Implement important Titanium.UI.TextField functionality","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 Implement at least: * Titanium.UI.TextField.blur * Titanium.UI.TextField.focus * Titanium.UI.TextField.keyboardType",21 TIMOB-10873,"BlackBerry: Implement important Titanium.UI.ImageView functionality","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",19 TIMOB-10875,"Blackberry: Implement important Titanium.UI.ProgressBar functionality","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",15 TIMOB-10876,"Blackberry: Implement important Titanium.UI.Slider functionality","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",15 TIMOB-10877,"Blackberry: Implement important Titanium.UI.Switch functionality","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",15 TIMOB-10878,"Blackberry: Implement important UI.TableView functionality","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 Implement at least: * Titanium.UI.TableView.addEventListener * Titanium.UI.TableView.appendRow * Titanium.UI.TableView.setData",21 TIMOB-10919,"Windows: Implement UI.PickerRow ""title"" and ""setTitle""",NULL,3 TIMOB-11093,"iOS: Update jscore to 538.11.1 version","Ticket for tracking the update of JSCore to the version shipping with a later version of iOS. Document is here: https://wiki.appcelerator.org/display/pe/iOS+-+Updating+JSCore. We can pick a version based on a tag from https://trac.webkit.org/browser/tags?order=name. Some versions we have been able to ascertain, but it is unclear why we wouldn't just pick the latest stable version. iOS 8.X: https://trac.webkit.org/browser/tags/Safari-600.1.4 iOS 8.1.0: AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12B411 Safari/600.1.4 iOS 8.0.2: AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12A405 Safari/600.1.4 iOS 8.0.0: AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12A365 Safari/600.1.4 iOS: 7.1: https://trac.webkit.org/browser/tags/Safari-537.51.2 7.1: AppleWebKit/537.51.2 (KHTML, like Gecko) Version/7.0 Mobile/11D167 Safari/9537.53 iOS 6.1.3: http://www.opensource.apple.com/release/ios-613/ ",34 TIMOB-11172,"iOS: Debugger: breakpoint at unassigned variable declaration skipped","Breakpoints at unassigned variable declarations are skipped. For example: {code} var deadVar1; // breakpoint Ti.API.info('Global Variables Defined!'); (function(){ var deadVar2; // breakpoint Ti.API.info('Anonymous Function Called!'); })(); alert('App Exited!'); {code} Running this code in debug mode will skip all breakpoints. This does not occur in Android, this is a parity issue. Steps to Reproduce: 1. Run code in debug (manually insert breakpoints as per code comments): {code} var deadVar1; // breakpoint Ti.API.info('Global Variables Defined!'); (function(){ var deadVar2; // breakpoint Ti.API.info('Anonymous Function Called!'); })(); alert('App Exited!'); {code} Actual Result: App exits without hitting any breakpoints. Expected Result: The first breakpoint should be hit and pressing 'Resume' should hit the next breakpoint. Here is the expected console log for the sample code: {code} [INFO] Global Variables Defined! [INFO] Anonymous Function Called! {code}",1 TIMOB-11188,"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-11628,"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-14008,"Android: layout vertical and zIndex problem","*Expected result* The red view should be located on the black view. *Actual result* The black view is missing. *Note* Works on iOS (both the red view and black view show), but not Android. *Test case* {code:javascript}var win = Ti.UI.createWindow({ backgroundColor : '#fff', navBarHidden : true, exitOnClose : true }); var view = Ti.UI.createView({ layout : 'vertical' }); view.add(Ti.UI.createView({ width : 200, height : 50, backgroundColor : 'red', zIndex : 1 })); view.add(Ti.UI.createView({ height : 50, backgroundColor : 'black', top : -15 })); win.add(view) win.open(); {code}",8 TIMOB-11603,"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-11637,"Ti.Network.HTTPClient needs to be implemented",NULL,21 TIMOB-11769,"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,"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,"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,"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-11867,"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-11932,"BlackBerry: Implement important Titanium.Media functionality",NULL,17 TIMOB-11943,"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,"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,"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,"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,"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,"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-12116,"BlackBerry: Implement Titanium.Database","Need to implement at least: * Titanium.Database * Titanium.Database.DB ** Titanium.Database.DB.close ** Titanium.Database.DB.execute ** Titanium.Database.DB.lastInsertRowId ** Titanium.Database.DB.remove * Titanium.Database.install * Titanium.Database.open * Titanium.Database.ResultSet ** Titanium.Database.ResultSet.close ** Titanium.Database.ResultSet.fieldByName ** Titanium.Database.ResultSet.getRowCount ** Titanium.Database.ResultSet.isValidRow ** Titanium.Database.ResultSet.next",21 TIMOB-13398,"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-12169,"CLI: Project compilation - no build.log is being created","Building a mobile project to iOS device or simulator wont create build.log if CLI is enabled. Occurs in 3.0.0 and 3.1.0 Test steps: 1. Create a project in Titanium Studio 2. Run it as iOS simulator or build it to device 3. Check project's build folder for build.log Actual result: No build.log Expected result: build.log should be created in both scenarios (success or failure) ",13 TIMOB-12457,"iOS: Ti.Locale.currentLocale and currentCountry issues","h6.Ti.Locale issue Ti.Locale is NOT working as expected after reading the doc. h6.Expected currentLocale and getCurrentLocale() to work like language i.e. http://docs.appcelerator.com/titanium/latest/#!/api/Titanium.Locale-method-getCurrentLocale h6.Repro sequence {code} Ti.API.error(""locale: "" + Ti.Locale.currentLocale); Ti.API.error(""country: "" + Ti.Locale.currentCountry); Ti.API.error(""language: "" + Ti.Locale.currentLanguage); Ti.API.error(""locale: "" + Ti.Locale.getCurrentLocale()); Ti.API.error(""country: "" + Ti.Locale.getCurrentCountry()); Ti.API.error(""language: "" + Ti.Locale.getCurrentLanguage()); {code} h6.returns {code} [ERROR] locale: undefined [ERROR] country: undefined [ERROR] language: fr [ERROR] locale: fr-BE [ERROR] country: BE [ERROR] language: fr {code} h6.yet another console output {code} [ERROR] :  locale: undefined [ERROR] :  country: undefined [ERROR] :  language: en [ERROR] :  locale: en-US [ERROR] :  country: US [ERROR] :  language: en {code} I am not competent enough in objective-C and mobile SDK knowledge but the implementation of locale module here looks fishy to me (I would expect implementations for currentLocale and currentCountry). I tested w/ SDKs 1.8.2, 2.1.2.GA and 3.0.0.GA on Mac OSX for iOS.",2 TIMOB-12223,"BlackBerry: Implement Titanium.UI.WebView","Add at least: * Titanium.UI.WebView.addEventListener * Titanium.UI.WebView.evalJS * Titanium.UI.WebView.html * Titanium.UI.WebView.onCreateWindow * Titanium.UI.WebView.remove * Titanium.UI.WebView.url",21 TIMOB-12225,"BlackBerry: Implement important Titanium.Facebook functionality",NULL,17 TIMOB-12226,"BlackBerry: Implement important Titanium.Media.AudioPlayer functionality",NULL,15 TIMOB-12227,"BlackBerry: Implement important Titanium.Media.Item functionality",NULL,15 TIMOB-12228,"BlackBerry: Implement important Titanium.Media.MusicPlayer functionality",NULL,15 TIMOB-12230,"BlackBerry: Implement important Titanium.Media.VideoPlayer functionality",NULL,15 TIMOB-12233,"BlackBerry: Implement important Titanium.Accelerometer functionality","h3. Acceptance Test {code} var win = Ti.UI.createWindow({ layout: 'vertical' }); var enableAccelerometer = Ti.UI.createButton({ title: 'Toggle Accelerometer' }); win.add(enableAccelerometer); var labels = ['x', 'y', 'z'].map(function(coord) { var label = Ti.UI.createLabel({text: coord + ': N/A'}); win.add(label); return label; }); function onUpdate(e) { labels[0].text = e.x; labels[1].text = e.y; labels[2].text = e.z; } var accelerometerEnabled = false; enableAccelerometer.addEventListener('click', function() { accelerometerEnabled ? Ti.Accelerometer.removeEventListener('update', onUpdate) : Ti.Accelerometer.addEventListener('update', onUpdate); accelerometerEnabled = !accelerometerEnabled; }); win.open(); {code} # Try moving the device around. No updates should be displayed. # Click ""Toggle Accelerometer"". Move device and you should now see updates (x, y, z values). # Click the toggle button again and the updates should stop. Repeat and verify. ",15 TIMOB-12235,"BlackBerry: Implement important Titanium.Contacts functionality",NULL,15 TIMOB-12236,"BlackBerry: Implement important Titanium.Analytics functionality",NULL,15 TIMOB-12237,"BlackBerry: Implement important Titanium.Map functionality","Need to implement at least: * Titanium.Map.createAnnotation * Titanium.Map.createView * Titanium.Map.STANDARD_TYPE",21 TIMOB-12238,"BlackBerry: Implement important Titanium.Map.Annotation functionality","Need to implement at least: * Titanium.Map.ANNOTATION_GREEN * Titanium.Map.ANNOTATION_PURPLE * Titanium.Map.ANNOTATION_RED",21 TIMOB-12239,"BlackBerry: Implement important Titanium.Map.View functionality","Need to implement at least: * Titanium.Map.View.add * Titanium.Map.View.addAnnotation * Titanium.Map.View.addEventListener * Titanium.Map.View.removeAnnotation * Titanium.Map.View.setLocation",21 TIMOB-12280,"Log messages lost when logging commands are placed in a loop","While testing TISTUD-3120 I ran into the issue where log output in a for loop did not appear (see screenshot). I can only reproduce this issue in 3.0.2 not 3.1.0 or 3.0.1 using the attached app.js file in a standard titanium project. This is a regression. Steps to reproduce: 1. Open the Titanium project. 2. Run in Simulator. Expected results: All console output should be shown filtered based on settings. Actual results: Console output missing lines from the looped log calls.",8 TIMOB-12372,"Android: Layout resources in res/layout/filename.xml no longer work","h4. Description Android layout resources no longer work as they did in 2.1.4GA. h4. Code to reproduce To customize the tab group in Android so that it is hidden, we used to be able to add a file in /platform/android/res/layout/titanium_tabgroup.xml. Code inside titanium_tabgroup.xml: {code} {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-12409,"BlackBerry: Implement important Titanium.Platform functionality","Implement at least: * Titanium.Platform.createUUID * Titanium.Platform.openURL",21 TIMOB-12410,"BlackBerry: Implement important Titanium.App functionality","Implement at least: * Titanium.App.deployType * Titanium.App.getArguments * Titanium.App.guid * Titanium.App.id",21 TIMOB-12411,"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-12516,"BlackBerry: Implement important Titanium.UI.Toolbar functionality",NULL,15 TIMOB-12600,"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,"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,"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-12764,"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,"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,"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-13190,"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-13254,"Windows: Implement Ti.UI.WebView","Implement TI.UI.WebView functionality. This may require some other functionality to be implemented first.",21 TIMOB-13364,"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-13520,"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,"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,"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,"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,"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,"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-13890,"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,"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,"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-13922,"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,"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,"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,"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-13999,"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,"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-14194,"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,"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,"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,"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,"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,"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,"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,"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-14393,"Android: JS proxies are prematurely cleaned up when dalvik gc is triggered ","Originally from https://jira.appcelerator.org/browse/TIMOB-13664: The problem is about Javascript scope for Titanium objects. In the logs, the problem was clearly after a garbage collect, so, first of all, we created a small module called ""androidgc"" which simply launch Android garbage collector (not the V8 GC). You can find this module here : https://github.com/ChrOnOs83/TiModuleAndroidGC Then, we decided to use your files and made it as simple as possible. We finally got a unique app.js file with this content : {code} function createView(){ var view = Ti.UI.createView({backgroundColor: 'white'}); var gc = Ti.UI.createButton({top: '10dp',title: ""First, click here many time quickly (cause GC)""}); var btn = Ti.UI.createButton({title: ""Next, click here""}); var label = Ti.UI.createLabel({text: 'Hello World', bottom: '10dp'}); view.add(btn); view.add(gc); btn.addEventListener('click', function(){ view.add(label); }); var androidgc = require('ti.nartex.androidgc'); gc.addEventListener('click', function(){ androidgc.gc(); }); return view; } var win = Ti.UI.createWindow({}); win.open(); var view = createView(); win.add(view); {code} When you run this code on your Android Device, you should press many times on the ""GC"" button, because garbage collector may not clean your ressources each time... If GC has be done correctly, the second button press will fail, because the label is not here anymore. If you add the label to the view, and then change its title, no problem If you create the label in the event listener, no problem *If you makes a reference to a global variable (without the _var_ keyword for example), it works* If you put the function in a CommonJS module, the same rules apply. So... Titanium objects created in a function (all the Ti.something) may be killed by garbage collector at any time if they are not attached to a view/window, or declared as global var. It breaks the Javascript scope pattern... ",34 TIMOB-14425,"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-15247,"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,"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,"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-14544,"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,"LiveView: Create Error/Warning Screen","create window to display liveview errors/warnings. examples: error connecting to server, parse error, etc..",8 TIMOB-14637,"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,"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,"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-14699,"LiveView: Create Unit Test Suite",NULL,20 TIMOB-14701,"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-14740,"Android: Automatically generate ProGuard configuration file","Hi, Create a sample Android module and build it. Then follow this step by step. 1. Extract the contents of the zip file inside the dist folder. 2. Extract the JAR file obtained from the zip file. 3. Use JAD (Decompile tool) to decompile the any *.class file. You will observe that the entire source code is displayed. There is no obfuscation. I think Appcelerator must provide an obfuscation procedure during the build process. If any such process is present (using ProGuard for example), then can you please let us know. If no such process exists then it will be a great idea to add this feature. This will increase the security and also reduce the module size.",21 TIMOB-14735,"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-14780,"iOS: Ti.UI.orientationModeFilter to app-wide block orientations","Note: While this spec is for iOS only, consideration in the design should include Android. On iOS, not all view controllers are under Titanium control (e.g., Mail composer, Activities). Because of issues (especially in 5.x and before), we did not control their orientation. But with iOS 6, native applications can control them. We should provide a means similar. Ti.UI.orientationModeFilter is an array of orientations allowed with the following pseudocode: On startup, the info.plist is checked. If no such orientation limits are mentioned, the default for the device (all but upside down for iPod/iPhone, all orientations for iPad) is used. This property can be changed. Whenever the OS requests the window's orientation, Titanium reports to the OS the orientationModes as such: # The orientation flags are set to all orientations. # If the Ti.UI.orientationModeFilter is valid, change the orientations to that. # If the window's orientationModes are set, bitwise AND it with the orientation flags. # if the result is 0, replace the orientation flags with the windows orientationModes, and warn about the edge case. # Return orientation flags. The behavior of the Ti.UI.orientationModeFilter changed at any time after startup is undefined. There is no guarantee that changes made to it will propagate to existing windows.",8 TIMOB-14784,"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,"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,"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,"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,"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,"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,"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-15732,"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,"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,"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,"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,"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-15253,"Android: singleTask launchMode with HeavyWeight window hangs after 1st launch","When launching your app with it's main activity set to {{android:launchMode=""singleTask""}} and it's main window a HeavyWeight one, it will hang on the second and every following launch. This bug blocks me from allowing users to open my app by using an URL scheme on a webpage or in a email message, send to them when they lost their password, received an invite to play a game etc. h1. Why use launchMode? By default, when launching your app via another app, e.g. using an URL scheme in the browser, your apps main activity will be stacked onto the current app's task. If your app was already running in the background, you will have 2 instances of the app running. Android has a [launchMode|http://developer.android.com/guide/topics/manifest/activity-element.html#lmode] attribute that allows you to instruct the OS to always open the activity as the root of a new task, using {{singleTask}} as value. This works fine, but not when the app's main window is HeavyWeight, for example a {{Ti.UI.TabGroup}} or a {{Ti.UI.Window}} with {{modal:false}}. h1. To reproduce # Create a new project: {{titanium create -p android -n test}} # Build (only) to generate manifest: {{titanium build -b -p android}} # Open the generated {{build/android/AndroidManifest.xml}} and copy the first {{}} tree to the {{tiapp.xml}} under {{ti:app/android/manifest/application}}. You will need to create the empty {{}} and {{}} elements yourself. # Add {{android:launchMode=""singleTask""}} to the {{}} element and save {{tiapp.xml}}. # Build the app to the device: {{titanium build -p android -T device}} # Open the updated {{AndroidManifest.xml}} to confirm the only effective change is the newly added attribute. # Seeing the app properly launched on the device, move it to the background by clicking the device's home button. # Lookup the app on the device and launch it again. You'll see a black screen with a titlebar ({{test}}) only. # Now replace the app's {{app.js}} with a lightweight window instead of the default heavyweight tabgroup: {code} Ti.UI.createWindow({backgroundColor:'white'}).open(); {code} # Repeat steps 5-8 and this time, the app will properly launch.",8 TIMOB-14973,"Android Build: Validate command line arguments and tiapp.xml settings","* validate command line options ** --alias ** --android-sdk ** --avd-abi ** --avd-id ** --avd-name NEW! ** --avd-skin ** --device NEW! (TIMOB-12661 CLI: Support adb's -s option for pointing a build to a specific emulator or device) ** --debug-host ** --deploy-type NEW! (TIMOB-9139 Android: Tooling: How to set the deploytype) ** --key-password NEW! (TIMOB-6423 builder.py should accept an alias password) ** --keystore ** --output-dir ** --store-password (formerly --password) ** --target (emulator, device, dist-playstore) * if 64-bit Linux ** make sure i386 architecture has been added (not sure how to check, but to add run ""dpkg --add-architecture i386"") ** make sure ia32-libs package is installed (TIMOB-13520 Android Emulator: improve error message from missing ia32-libs dependency on linux) ** make sure /usr/lib/libGL.so exists * enforce sdk dependencies ** check java version is <=1.6 (TIMOB-5010 Latest version of Java unusable for building Android projects) * check that build directory is writeable * read tiapp.xml ** read proguard flag (TIMOB-2782 Android: Generate / Run a Proguard configuration based on API usage) ** determine tool api level *** ensure correct version fallback (TIMOB-11603 Android: invalid android path in bash profile results in project creation error, improve error message) ** packageid must contain at least one period (prepend ""com."" if no periods present) ** appversion should be the tiapp.xml and is injected into the AndroidManifest.xml (TIMOB-559 Android: Appversion never taken from tiapp.xml) ** default minimum Android SDK is 2.3.3 (10) ** default target Android SDK is latest or 2.3.3 (10) ** classname is the app name, capitalized, only alpha-numeric and _, prepend _ if starts with a number ** make sure deploy type is correct ** validate ""ti.ui.defaultunit"" property (must be 'system', 'px', 'dp', 'dip', 'mm', 'cm', or 'in') (TIMOB-9682 Android: Packaging:No warning displayed for default system value of 'ti.ui.defaultunit') ** get ""ti.android.loadfromsdcard"" property ** get ""ti.android.compilejs"" property ** get ""ti.android.include_all_modules"" property??? * scrub debugger/profiler args * find the android sdk home * validate icon from tiapp.xml * detect modules from tiapp.xml ** if required module is not found, fail (TIMOB-9930 Android: Packaging: With a non-existing module added to the project in the tiapp.xml,app packages without error and gets installed on device) (TIMOB-14064 Android build select wrong module jars for dex build) ** load module hooks *** allow module hooks to modify classpath (TIMOB-14170 Android: Provide mechanism for partners to specify the classpath for builds)",13 TIMOB-14974,"Android Build: Detect if need to force rebuild","* detect if need to force rebuild (TIMOB-4510 Force full re-build discrepancy between Android and iOS - Android requires modified tiapp.xml) ** yes if --force flag is set ** yes if build/android does not exist ** yes if build/android/AndroidManifest.xml does not exist ** yes if app id changes ** yes if app name changes ** yes if app version changes ** yes if publisher changes ** yes if url changes ** yes if copyright changes ** yes if description changes ** yes if icon changes ** yes if analytics changes ** yes if guid changes ** yes if fullscreen changes ** yes if navbar-hidden changes ** yes if classname changes ** yes if deploy type changes ** yes if compile js changes ** yes if list of modules change ** yes if any of the module's manifest or api name changes ** yes if any module's binary is changed (TIMOB-5837 Tooling: Adding a module requires a clean build) ** yes if new properties are added to tiapp.xml ** yes if Android target SDK version changes ** yes if any changes to activities in the Android in the tiapp.xml ** yes if any changes to activities in the Android in the tiapp.xml ** yes if any jss files change",5 TIMOB-14976,"Android Build: Init the build/android directory and files","* init the build/android directory and files ** if force rebuild, remove build/android if exists ** create build/android if does not exist ** remove directories, if exists *** build/android/src *** build/android/res ** create directories, if does not exist *** build/android/assets *** build/android/gen *** build/android/gen/ *** build/android/lib *** build/android/res *** build/android/res/drawable *** build/android/res/values *** build/android/src (IS THIS EVEN USED??? if not, we don't need the aidl file) ** copy over files *** AppInfo.java => build/android/gen//AppInfo.java *** AndroidManifest.xml => build/android/AndroidManifest.xml *** App.java => build/android/gen//Application.java *** Activity.java => build/android/gen//Activity.java *** classpath => build/android/.classpath *** project => build/android/.project **** make sure the .project file is a valid Eclipse project (TIMOB-11700 Make generated android projects importable into eclipse) *** default.properties => build/android/default.properties *** gitignore => build/android/.gitignore *** NOTE: each of the files must be converted from mako templates to handlebars templates ** merge custom classpath with build/android/.classpath ** generate activities from tiapp.xml ** generate services from tiapp.xml ** write app_modules to build/android/bin/assets/app.json??? * create directories, if does not exist ** build/android/bin ** build/android/bin/assets ** build/android/bin/assets/Resources ** build/android/bin/classes",5 TIMOB-14977,"Android Build: Compile resources","* compile resources ** copy Resources directory (exclude all platform directories) *** load dependency.json *** load modules.json *** handle tiapp.xml ""ti.android.include_all_modules"" property *** walk specified directory **** ignore globally ignored files and directories (TIMOB-2733 Android: Getting Error at Rebuilding after changing tiapp.xml) (TIMOB-7816 Android: Ignore files that start with ._) **** if file is a html file, scan for all                     A basic bar chart  [No canvas support] {code}",5 TIMOB-16562,"Android: Kroll bridge passing null/undefined values can throw exceptions when passed to TiConvert methods","h5. Problem Description Exception is thrown when passing objects with null/undefined values for expected keys values on Android. Ti.map.TiUIMapView passes this null value to TiConvert.toDouble which causes then throws a NullPointerException. Here is an example piece of code when setting a map region. This works fine on iOS: {code} function setup(event) { $.map.region = { latitude: 36, longitude: -78, latitudeDelta: null, longitudeDelta: null }; } {code} Here is the exception on Android: {code} [ERROR] : TiApplication: (main) [1830,1830] Sending event: exception on thread: main msg:java.lang.NullPointerException; Titanium 3.2.0,2013/12/20 10:57,d9182d6 [ERROR] : TiApplication: java.lang.NullPointerException [ERROR] : TiApplication: at org.appcelerator.titanium.util.TiConvert.toDouble(TiConvert.java:527) [ERROR] : TiApplication: at org.appcelerator.titanium.util.TiConvert.toDouble(TiConvert.java:540) [ERROR] : TiApplication: at ti.map.TiUIMapView.updateCamera(TiUIMapView.java:247) [ERROR] : TiApplication: at ti.map.TiUIMapView.propertyChanged(TiUIMapView.java:171) [ERROR] : TiApplication: at org.appcelerator.kroll.KrollPropertyChange.fireEvent(KrollPropertyChange.java:21) [ERROR] : TiApplication: at org.appcelerator.kroll.KrollProxy.handleMessage(KrollProxy.java:1059) [ERROR] : TiApplication: at org.appcelerator.titanium.proxy.TiViewProxy.handleMessage(TiViewProxy.java:329) [ERROR] : TiApplication: at ti.map.ViewProxy.handleMessage(ViewProxy.java:150) [ERROR] : TiApplication: at android.os.Handler.dispatchMessage(Handler.java:95) [ERROR] : TiApplication: at android.os.Looper.loop(Looper.java:158) [ERROR] : TiApplication: at android.app.ActivityThread.main(ActivityThread.java:5789) [ERROR] : TiApplication: at java.lang.reflect.Method.invokeNative(Native Method) [ERROR] : TiApplication: at java.lang.reflect.Method.invoke(Method.java:525) [ERROR] : TiApplication: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027) [ERROR] : TiApplication: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:843) [ERROR] : TiApplication: at dalvik.system.NativeStart.main(Native Method) {code} This the kroll bridge should either ignore null/undefined values or have each have maps module defensively check for null values. I've attached a project showcases the error. ",8 TIMOB-16593,"iOS: DocumentViewer shifts up on second tap when it's in Landscape mode","h6.Issue description The UI at the top of the Ti.UI.iOS.DocumentViewer shifts up after the second tap. h6.Steps to reproduce # Open sample attached # Put the device in landscape mode # Tap on 'Open PDF # Tap on the PDF viewer contents (enter fullscreen mode) # Tap on the PDF viewer contents again (Exit fullscreen mode). Notice that the top of the PDF moves down, to lower than it was when the PDF first opened",3 TIMOB-16597,"iOS: Can't create modal transparent Window","Try code above, after animation Window color is reset to Titanium.UI.backgroundColor {code} var win = Titanium.UI.createWindow({ backgroundColor: 'white', }); win.open(); var fail = Ti.UI.createWindow({ modal:true, backgroundColor:'transparent'//or #00FFFFFF }); fail.add(Ti.UI.createLabel({ text:""Test"" })); fail.open();//after animation background is black (default) {code}",2 TIMOB-16619,"Android: LiveView throws errors if action bar is implemented in the app","NOTE : This is seen on post & pre 3.0 android devices & emulators. h5. Description: 1. Create a default & replace the app.js with the sample code for action bar from the docs: {code} var win = Ti.UI.createWindow({ title: ""Old Title"", navBarHidden: false }); var actionBar; win.addEventListener(""open"", function() { if (Ti.Platform.osname === ""android"") { if (! win.activity) { Ti.API.error(""Can't access action bar on a lightweight window.""); } else { actionBar = win.activity.actionBar; if (actionBar) { actionBar.backgroundImage = ""/bg.png""; actionBar.title = ""New Title""; actionBar.onHomeIconItemSelected = function() { Ti.API.info(""Home icon clicked!""); }; } } } }); win.open(); {code} 2. Build for android device/emulator with live view enabled. h5. Actual Result: 1. We see following error in console: {code} [INFO] : [LiveView] Error Evaluating app.js @ Line: undefined [ERROR] : ReferenceError: actionBar is not defined [ERROR] : File: app.js [ERROR] : Line: undefined [ERROR] : SourceId: undefined [ERROR] : Backtrace: [ERROR] : undefined {code} h5. Expected Result: 1. We should not see any errors & liveview should work successfully. ",8 TIMOB-16669,"iOS: Packaging for iTunes Store first attempt - Archive Type: Mac App Archive instead of iOS App Archive","h5. Details: Packaging an app to the iOS iTunes Store at first time archives it as a Mac App. Second attempt to package results in an expected result, which is iOS App Archive. QE and Dev will investigate and check, if it is a regression. Due to a large size, .zip files are not attached to compare 2 archives.",13 TIMOB-16680,"iOS: listView when views overlap itemclick event return wrong bindId","h3. Issue When creating a listView template that overlaps UI elements and we use the 'itemClick' to get the bindId we always receive the id from the element on the back instead of the clicked item. h3. Testing After adding zIndex and setting bubble parent to false makes no difference and keeps throwing the wrong bindId. h3. Steps to repro 1. Run the sample code 2. Click on the label Expected Result: The alert will show the bindId 'innerLabel' Actual Result: The alert show the bindId 'innerThumbnailImageView' h3. Sample code index.xml {code} {code} index.js {code} (function() { var items = []; for(var i=0;i<10;++i){ var item = {}; item.innerThumbnailImageView = { image: '/images/pic.png' }; item.innerLabel = { text: 'Inner Label Tester' }; items.push(item); } $.listingSection.items = items; }()); $.index.open(); function listItemClick(e) { alert(e.bindId); } {code} h3. Workaround If we add the event directly to the element of the template we receive the correct id. {code} {code}",5 TIMOB-16697," iOS: SDK should have 0 compiler warnings (it currently has 9)","We should have 0 compiler warnings. An SDK that produces even 1 compiler warning should never make it to QE. There are 64-Bit issues buried in these 159 warnings, so these issues need to be fixed before our SDK can be certified as 64-Bit clean. This is Apple's guide to making source code ""64-bit clean"": [64-Bit Transition Guide for Cocoa Touch|https://developer.apple.com/library/ios/documentation/General/Conceptual/CocoaTouch64BitGuide]",8 TIMOB-16741,"Android: Kindle HDX Ti.App event listeners stop responding","h6.Issue description An Android Tablet Kindle HDX device running the same app, at around the 10 time alternation mark the webView event listener stops receiving the events and the webView will not receive any events. h6.Steps to replicate # Get example available at: https://www.dropbox.com/s/nzjhsu5as8dc1nf/MapWebViewBugExample_Remove_And_Re-addEvents.zip # Alternate clicking between the setLocation 1 and setLocation 2 buttons. # Notice that the map moves when each is hit. Perform this alternate clicking 30+ times. # Notice how the map always moves and the webView receives the ""app:map:setLocation"" event. This never fails on iOS and most Android Tablets. h6.Devices Affected by this issue: Kindle Fire HDX 8.9 - 14.3.2.1 Model: GU045RW - 14.3.2.1 Model: GU045RW Kindle Fire HDX 7 - 13.3.1.0 - Model: C9R6QM - 13.3.2.1 - Model: C9R6QM h6.Devices not affected None of iOS devices. The 2.3.4 HTC Incredible and Nexus 7 running 4.3 don't seem to exhibit the problem. h6.Background This issue seems to occur very quickly on the Kindle HDX 8.9 inch (~10 events) and it is the main use case for the Google Web Map. Another Android Tablets reproduces this although not consistently. ",13 TIMOB-16838,"Android: Add searchAsChild to ListView to support Search View in Action Bar","We can use a the SearchView in the ActionBar with a TableView, but not ListView if we can't set searchAsChild to false in ListView. Please add this property to ListView.",3 TIMOB-17143,"iOS : Ti.Media.takeScreenshot() returns black toolbars","It seems like the ""old"" way of taking screenshots results in black toolbars when running the app on a device. Simply adding [window drawViewHierarchyInRect:window.bounds afterScreenUpdates:YES]; for iOS 7 seems to fix the problem, as mentioned in this StackOverflow answer: http://stackoverflow.com/a/8017292/646859 I've tried it and it seems to work. I'm not used to contributing to open source-projects to I hope someone can take a look at it for me :) » Marcus",5 TIMOB-16879,"ScrollableView: Add ""insertViewsAt()"" method","The ScrollableView currently supports the "".addView()"" method to programmatically append additional views to the end of the collection. However, it has no method to insert one or more views at the beginning (prepend), or somewhere in the middle of the collection. A [suggested workaround|http://developer.appcelerator.com/question/161891/scrollable-view---insert-a-view-into-a-specific-spot] for this limitation involves getting the views array with .getViews(), updating the array, then re-assiging the views array back to the control with .setViews(). While this works, it is not efficient and causes significant flickering on the UI with complex views, every time .setViews() is used. It would be great to have a method like "".insertViewsAt(idx, views)"" so one item (or more) can be prepended or inserted at specific locations without requiring the entire views collection to be re-bound and rendered. This would also bring the ScrollableView control in line with ListView and TableView, both of which feature ""insert"" methods. In my particular case; I'm using a ScrollableView to page through over 500 views which are fairly complex. Loading all views into the ScrollableView is not an option as that takes too much memory and crashes the app. My solution is to have a sliding range that loads 9 views at a time (4 before and 4 after the current page) on the ScrollableView. And as the user moves left or right, it dynamically prepends or appends more views as needed, removing views also from the opposite end so only 9 views are loaded at any given time. Appending with addView() works well (no need for setViews(), so no flickering), but prepending with the getViews()/update/setViews() process does not work well in these situations. ",5 TIMOB-16878,"Android Parity: Percentage dimension doesn't work with ScrollableView and Ti.UI.FILL","I created a parent view as ScrollableView and gave its width and height as Ti.UI.FILL. Then I created child view giving its width and height as 80%. In iOS simulator I get the expected result, but in android device child view takes the whole view In the attachment I have added my code and also the screenshot from iOS simulator and android device.",5 TIMOB-16911,"Android: Setting touchEnabled on labels (TextView) crashes intermittently on Axiom device","I'm getting this crash report on Google Play for a Galaxy Axiom {code} java.lang.ClassCastException: java.lang.String cannot be cast to android.text.Spannable at android.widget.TextView.setEnabled(TextView.java:1432) at org.appcelerator.titanium.view.TiUIView.registerForTouch(TiUIView.java:1457) at org.appcelerator.titanium.view.TiUIView.registerForTouch(TiUIView.java:1271) at org.appcelerator.titanium.proxy.TiViewProxy.handleGetView(TiViewProxy.java:472) at org.appcelerator.titanium.proxy.TiViewProxy.getOrCreateView(TiViewProxy.java:449) at org.appcelerator.titanium.proxy.TiViewProxy.realizeViews(TiViewProxy.java:487) at org.appcelerator.titanium.proxy.TiViewProxy.handleGetView(TiViewProxy.java:471) at org.appcelerator.titanium.proxy.TiViewProxy.getOrCreateView(TiViewProxy.java:449) at org.appcelerator.titanium.proxy.TiViewProxy.realizeViews(TiViewProxy.java:487) at org.appcelerator.titanium.proxy.TiViewProxy.handleGetView(TiViewProxy.java:471) at org.appcelerator.titanium.proxy.TiViewProxy.getOrCreateView(TiViewProxy.java:449) at org.appcelerator.titanium.proxy.TiViewProxy.realizeViews(TiViewProxy.java:487) at org.appcelerator.titanium.proxy.TiViewProxy.handleGetView(TiViewProxy.java:471) at org.appcelerator.titanium.proxy.TiViewProxy.getOrCreateView(TiViewProxy.java:449) at org.appcelerator.titanium.proxy.TiViewProxy.handleAdd(TiViewProxy.java:566) at org.appcelerator.titanium.proxy.TiViewProxy.handleMessage(TiViewProxy.java:218) at org.appcelerator.titanium.proxy.TiWindowProxy.handleMessage(TiWindowProxy.java:100) at ti.modules.titanium.ui.WindowProxy.handleMessage(WindowProxy.java:443) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4962) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1004) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:771) at dalvik.system.NativeStart.main(Native Method) {code} My preliminary research indicates this can happen when calling ""setEnabled"" on a TextView that doesn't yet have a value. You can find our app @ https://play.google.com/store/apps/details?id=com.findingrover.findingrover If you happen to have a Samsung Axiom laying around running Android 4.1",5 TIMOB-16882,"iOS: 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 mimeType, height, or width on iOS. 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): 1600 . 2560 . application/octet-stream {code} h6.iOS {code} [INFO] : 0 . 0 . application/octet-stream {code}",3 TIMOB-16909,"Android: Anti-aliasing does not work properly in views","See the attached image. 1. Seems there is no anti-aliasing at all in case of borderWidth=""0"" 2. Anti-aliasing is not good (especially on the border inner) in case of borderWidth>""0"" 2. Seems the border alpha channel (opacity) is being ignored and the corresponding view opacity is being used instead. The markup: {code:xml} {code}",21 TIMOB-16941,"iOS: System Info icon size is different between toolbar / toolbar and a view ","h2. Problem When info system button is added to anything other than toolbar/navbars, it appears distorted (see attached screenshot). In the following test case, you may notice that I created two info buttons, one for view, the other for toolbar. The one added to view has ' style : Ti.UI.iPhone.SystemButton.INFO_DARK ', which seems not acceptable. But accepting it may itself be a bug. However, it is the only possible way to add info system buttons to view and this feature is quite common everywhere. I'm afraid this distortion may cause Apple rejection. h2. Test case {code:lang=javascript|title=ApplicationWindow.js} //create component instance var self = Ti.UI.createWindow({ backgroundColor : '#ffffff', tintColor : 'red' }); var button1 = Titanium.UI.createButton({ bottom : 64, left : 16, style : Ti.UI.iPhone.SystemButton.INFO_DARK, }); self.add(button1); var button2 = Titanium.UI.createButton({ systemButton : Ti.UI.iPhone.SystemButton.INFO_DARK, }); var toolbar = Titanium.UI.iOS.createToolbar({ items : [button2], bottom : 0, borderTop : true, borderBottom : true }); self.add(toolbar); self.open(); {code}",5 TIMOB-16938,"iOS: Font property doesn't work for Picker and PickerColumn","Steps to reproduce: 1. Copy Paste the code in app.js and run the app on iOS device. Expected Result: 1. Must observe the difference in font size than normal. Actual Result: 1. No differences appear. Font Size appears the same. Working fine for Android. See the issue TIMOB-14007 {code} var win = Ti.UI.createWindow({ backgroundColor: 'white', exitOnClose: true, fullscreen: false, title: 'Use picker to make selection' }); var fruit = [ 'Bananas', 'Grapes', 'Blueberries', 'Strawberries' ]; var color = [ 'blue', 'red', 'yellow', 'white' ]; var column1 = Ti.UI.createPickerColumn({font: {fontSize: 40}}); for(var i=0, ilen=fruit.length; i Analyze 2. Results will appear, indicating all the analyzer errors After resolving all issues, this should result in 0 analyzer errors.",21 TIMOB-16985,"TiAPI: Remove window.url property","The window.url property was a solution fit for another time in Titanium's history. That time has long since gone. Too many newbies are using window.url as if it is the correct pattern to develop their apps against. The only reason against deprecation is that some older apps still use window.url. However using this as a reason only serves to increase the number of apps this will affect. Note: {{Ti.UI.currentWindow}} should be removed as well.",5 TIMOB-17001,"iOS: Search disappears from ListView","ListView with a search, where the itemclick event opens a window. This defect works in the ElementsOfListView tutorial app ( https://github.com/appcelerator-services/ElementsOfListView ). The customer is having the same issue in their own app. 1) Wait for the elements list to open 2) Scroll down a bit, half a screen or more. 3) Click on an element (the name, not the symbol) and wait for the new window to open. 4) Close that new window by clicking the ""Done"" button. 5) Scroll back up to the top. Notice there is a white space where the Search was. At this point, it should be noted that the search is still there, it just appears blank. If you click into it, it'll appear as it should. h3. Edit: Simpler test case, copy and paste into app.js {code} function MainWindow() { var win = Ti.UI.createWindow({ backgroundColor: 'white' }); var items = []; for(var i = 0; i < 100; i++) { items.push({ properties:{ title: 'Row #' + (i + 1), searchableText: 'Row #' + (i + 1) } }); } var listViewSection = Ti.UI.createListSection({ items: items }); var searchBar = Ti.UI.createSearchBar(); var listView = Ti.UI.createListView({ sections: [listViewSection], searchView: searchBar }); win.add(listView); listView.addEventListener('itemclick', function(){ SecondWindow().open({modal:true}); }); return win; } function SecondWindow() { var navWindow = Ti.UI.iOS.createNavigationWindow(); var win = Ti.UI.createWindow({ backgroundColor: 'gray' }); var closeBtn = Ti.UI.createButton({ title: 'close' }); win.rightNavButton = closeBtn; navWindow.window = win; closeBtn.addEventListener('click', function(){ navWindow.close(); }); return navWindow; } MainWindow().open(); {code}",13 TIMOB-17145,"Android: Add support to HTTPClient for PATCH requests","It would be great if the HTTPClient supported PATCH requests. We use ASP Web Api 2 and the convention is to use a PATCH request for a partial update. ",5 TIMOB-17141,"iOS: Application crashes during a numeric search on a ListView","h1. Problem if you change the position of the listView during a search the app crashes h1. Reproduction Drop the following in an app.js. 1) Run it 2) put 555 in the textField and do a search 3) press the button (""change top of listview"") twice and it will crash. (values like 555 or 100 crash the application) warning!: we noticed that if the searched values are less than the listview's height the application will crash. As a matter of fact, if we put values like '78' or '0' the application does not crash. {code:title=App.js | borderStyle=solid} var win = Ti.UI.createWindow({}); var search = Ti.UI.createSearchBar({}); var items = []; for (var i = 0; i<1000; i++) { items.push({ properties: { title: 'item: ' + i, searchableText: 'item: ' + i } }); } var button = Ti.UI.createButton({ title : 'Change top of listView', top:50, }); button.addEventListener('click', function() { listView.top === 100 ? listView.top = 150 : listView.top = 100; }); var listView = Titanium.UI.createListView({ top: 100, sections: [ Ti.UI.createListSection({items: items}) ], searchView: search, }); win.add(button); win.add(listView); win.open(); {code} h1. Console Log {code:title=Console Log | borderStyle=solid} [ERROR] : The application has crashed with an uncaught exception 'NSRangeException'. [ERROR] : Reason: [ERROR] : *** -[__NSArrayM objectAtIndex:]: index 19 beyond bounds [0 .. 0] [ERROR] : Stack trace: [ERROR] : 0 CoreFoundation 0x044081c8 __exceptionPreprocess + 152 [ERROR] : 1 libobjc.A.dylib 0x040c48e5 objc_exception_throw + 44 [ERROR] : 2 CoreFoundation 0x043a93f6 -[__NSArrayM objectAtIndex:] + 246 [ERROR] : 3 test 0x00291768 -[TiUIListView pathForSearchPath:] + 184 [ERROR] : 4 test 0x00297b19 -[TiUIListView tableView:cellForRowAtIndexPath:] + 73 [ERROR] : 5 UIKit 0x00ade11f -[UITableView _createPreparedCellForGlobalRow:withIndexPath:] + 412 [ERROR] : 6 UIKit 0x00ade1f3 -[UITableView _createPreparedCellForGlobalRow:] + 69 [ERROR] : 7 UIKit 0x00abfece -[UITableView _updateVisibleCellsNow:] + 2428 [ERROR] : 8 UIKit 0x00ad46a5 -[UITableView layoutSubviews] + 213 [ERROR] : 9 UIKit 0x00a54964 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 355 [ERROR] : 10 libobjc.A.dylib 0x040d682b -[NSObject performSelector:withObject:] + 70 [ERROR] : 11 QuartzCore 0x0301a45a -[CALayer layoutSublayers] + 148 [ERROR] : 12 QuartzCore 0x0300e244 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 380 [ERROR] : 13 QuartzCore 0x0300e0b0 _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 26 [ERROR] : 14 QuartzCore 0x02f747fa _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 294 [ERROR] : 15 QuartzCore 0x02f75b85 _ZN2CA11Transaction6commitEv + 393 [ERROR] : 16 QuartzCore 0x02f76258 _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 92 [ERROR] : 17 CoreFoundation 0x043d036e __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 30 [ERROR] : 18 CoreFoundation 0x043d02bf __CFRunLoopDoObservers + 399 [ERROR] : 19 CoreFoundation 0x043ae254 __CFRunLoopRun + 1076 [ERROR] : 20 CoreFoundation 0x043ad9d3 CFRunLoopRunSpecific + 467 [ERROR] : 21 CoreFoundation 0x043ad7eb CFRunLoopRunInMode + 123 [ERROR] : 22 GraphicsServices 0x05e795ee GSEventRunModal + 192 [ERROR] : 23 GraphicsServices 0x05e7942b GSEventRun + 104 [ERROR] : 24 UIKit 0x009e5f9b UIApplicationMain + 1225 [ERROR] : 25 test 0x00005a58 main + 456 [ERROR] : 26 libdyld.dylib 0x04a3b701 start + 1 [ERROR] : 2014-05-23 11:46:27.329 test[85362:70b] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 19 beyond bounds [0 .. 0]' [ERROR] : *** First throw call stack: [ERROR] : ( [ERROR] : 0 CoreFoundation 0x044081e4 __exceptionPreprocess + 180 [ERROR] : 1 libobjc.A.dylib 0x040c48e5 objc_exception_throw + 44 [ERROR] : 2 CoreFoundation 0x043a93f6 -[__NSArrayM objectAtIndex:] + 246 [ERROR] : 3 test 0x00291768 -[TiUIListView pathForSearchPath:] + 184 [ERROR] : 4 test 0x00297b19 -[TiUIListView tableView:cellForRowAtIndexPath:] + 73 [ERROR] : 5 UIKit 0x00ade11f -[UITableView _createPreparedCellForGlobalRow:withIndexPath:] + 412 [ERROR] : 6 UIKit 0x00ade1f3 -[UITableView _createPreparedCellForGlobalRow:] + 69 [ERROR] : 7 UIKit 0x00abfece -[UITableView _updateVisibleCellsNow:] + 2428 [ERROR] : 8 UIKit 0x00ad46a5 -[UITableView layoutSubviews] + 213 [ERROR] : 9 UIKit 0x00a54964 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 355 [ERROR] : 10 libobjc.A.dylib 0x040d682b -[NSObject performSelector:withObject:] + 70 [ERROR] : 11 QuartzCore 0x0301a45a -[CALayer layoutSublayers] + 148 [ERROR] : 12 QuartzCore 0x0300e244 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 380 [ERROR] : 13 QuartzCore 0x0300e0b0 _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 26 [ERROR] : 14 QuartzCore 0x02f747fa _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 294 [ERROR] : 15 QuartzCore 0x02f75b85 _ZN2CA11Transaction6commitEv + 393 [ERROR] : 16 QuartzCore 0x02f76258 _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 92 [ERROR] : 17 CoreFoundation 0x043d036e __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 30 [ERROR] : 18 CoreFoundation 0x043d02bf __CFRunLoopDoObservers + 399 [ERROR] : 19 CoreFoundation 0x043ae254 __CFRunLoopRun + 1076 [ERROR] : 20 CoreFoundation 0x043ad9d3 CFRunLoopRunSpecific + 467 [ERROR] : 21 CoreFoundation 0x043ad7eb CFRunLoopRunInMode + 123 [ERROR] : 22 GraphicsServices 0x05e795ee GSEventRunModal + 192 [ERROR] : 23 GraphicsServices 0x05e7942b GSEventRun + 104 [ERROR] : 24 UIKit 0x009e5f9b UIApplicationMain + 1225 [ERROR] : 25 test 0x00005a58 main + 456 [ERROR] : 26 libdyld.dylib 0x04a3b701 start + 1 [ERROR] : ) [ERROR] : libc++abi.dylib: terminating with uncaught exception of type NSException {code} ",3 TIMOB-17048,"Build error if Map module in app build with TiSDK prior to 3.3.0","h5.Description: 1. If we try to build an app with map module 2.1.5 & SDK 3.2.3.GA it throws the following errors. {code} [ERROR] : Failed to package application: [ERROR] : [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values/strings.xml:36: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-af/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-am/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-ar/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-be/strings.xml:23: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-bg/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-ca/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-cs/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-da/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-de/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-el/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-en-rGB/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-en-rIN/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-es/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-es-rUS/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-et-rEE/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-fa/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-fi/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-fr/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-fr-rCA/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-hi/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-hr/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-hu/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-hy-rAM/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-in/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-it/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-iw/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-ja/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-ka-rGE/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-km-rKH/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-ko/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-lo-rLA/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-lt/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-lv/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-mn-rMN/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-ms-rMY/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-nb/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-nl/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-pl/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-pt/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-pt-rBR/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-pt-rPT/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-ro/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-ru/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-sk/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-sl/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-sr/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-sv/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-sw/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-th/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-tl/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-tr/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-uk/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-vi/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-zh-rCN/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-zh-rHK/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-zh-rTW/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] : /Users/lokeshchoudhary/Desktop/workspaces/comerica_workspcae/mapv2ModuleTest/build/android/res/values-zu/strings.xml:28: error: Error parsing XML: unbound prefix [ERROR] Application Installer abnormal process termination. Process exit value was 1 {code} 2. In order to make sdk 3.2.3.GA pick up the right compatible module version which is 2.1.4, change the change the minsdk to 3.3.0 in the manifest file of map module 2.1.5. 2. Use SDK 3.2.3.GA and build the map again. h5.Actual Result: 1. The 3.2.3 SDK should pick up map module 2.1.4 as the latest compatible when its is rebuilt after changing the minsdk version in the manifest file, but rather it still picks up 2.1.5 & throws errors as below: {code} [ERROR] : Found incompatible Titanium Modules: [ERROR] : id: ti.map version: 2.1.5 platform: android min sdk: undefined [ERROR] Application Installer abnormal process termination. Process exit value was 1 {code} h5.Expected Result: 1. The SDK should pick up the latest compatible version of the map module build.",5 TIMOB-17260,"Android: Animation is broken if you don't stringify the affected view","h4. Problem Description Three (red, blue, green) square views should move from top of the screen ([ 0,50], [0,80], [0,random]) to the same target position [300, 300] (grey square). They **only** move as expected after you add a stringify the view. See the video attached. I managed to recreate the issue on the GT-S7562 device as well. h4. Steps to reproduce 1. Create a new mobile project (classic titanium) 2. Add this code to app.js {code} var win = Ti.UI.createWindow({ backgroundColor:'white', }); var viewo = Ti.UI.createView({ backgroundColor:'#888', top:300, left:300, width:100, height:100, }); win.add(viewo); function createView(color, id){ return Ti.UI.createView({ backgroundColor: color, width: 100, height: 100, opacity: 0.5, id: id }); } var view1 = createView('green', '1'); var view2 = createView('blue', '2'); var view3 = createView('red', '3'); var animation1 = Ti.UI.createAnimation(); var animation2 = Ti.UI.createAnimation(); var animation3 = Ti.UI.createAnimation(); animation1.addEventListener('complete', function() { //Ti.API.info('animation1 complete. view: ' + JSON.stringify(view1)); startAll(); }); animation2.addEventListener('complete', function() { //Ti.API.info('animation2 complete. view: ' + JSON.stringify(view2)); }); animation3.addEventListener('complete', function() { //Ti.API.info('animation3 complete. view: ' + JSON.stringify(view3)); }); function initAnimation(animation){ animation.left = 300; animation.top = 300; animation.duration = 5000; } function startAnimation(x, view, animation){ view.setLeft(x); view.setTop(0); initAnimation(animation); JSON.stringify(view); // Comment out this line in order to see the bug in your emulator. view.animate(animation); } function startAnimation1(){ var startX = 50; startAnimation(startX, view1, animation1); } var startX = 50; function startAnimation2(){ startX += 30; startAnimation(startX, view2, animation2); } function startAnimation3(){ var startX = Math.floor(Math.random() * 500); startAnimation(startX, view3, animation3); } function startAll(){ setTimeout(function(){ startAnimation1(); startAnimation2(); startAnimation3(); }, 3000); } win.add(view1); win.add(view2); win.add(view3); win.open(); startAll(); {code} 3. Comment out the line with the comment ""Comment out this line in order to see the bug in your emulator."". 4. Run it in emulator to see the issue (the animation breaks down when you comment out the line in step 3 - if you add it again, it will work as expected). h4. Extra info Please check the video for more information. ",5 TIMOB-17053,"Android: tablet in portrait mode not showing splash screen","h3. Issue The basic scenario is that customer need their app to be portrait for handhelds and landscape for tablets. The splash screens also need to appear properly based on those requirements, everything is working in a sample app with the exception of the splash screen on Portrait mode. h3. Steps to repro using attached app 1. Hold a tablet in Portrait mode 2. Open the app Expected result: The splash screen will be displayed Actual result: No splash screen is displayed",5 TIMOB-17085,"Android: Map module V2 not rendering map on Android 2.3.X","h3. Issue When using the Map Module 2.1.3 for Android the map tiles are not being rendered correctly in devices with Android SDK 2.3.x but they work correctly on Android 4.X h3. Steps to repro 1. Run the testcase on an Android device 2.3.x Expected Result: The map will be rendered on screen Actual Result: The mapview is rendered and show on screen but the map tiles are never showed (Attachement device-2014-06-06-120722.png). h3. Test Case {code} var win = Ti.UI.createWindow(); var MapModule = require('ti.map'); var mapObj = MapModule.createView({ width: Ti.UI.FILL, height: Ti.UI.FILL, userLocation: true }); win.add(mapObj); win.open(); {code} ",21 TIMOB-17197,"Android: Geolocation is not turning on in Webview","h4. Problem Description The geolocation bug which used to exist in version 3.0.0 (TIMOB-4982) has been reintroduced in version 3.2.0 The last working good version is 3.1.3. . h4. Test Case 1. Create a new mobile project (classic) 2. Paste this to app.js 3. {code} //var URL=""http://maps.google.com/maps?saddr=39.745740, -104.985757&daddr=39.740368, -104.981938""; var URL = ""http://maps.google.com""; var tWebView = Ti.UI.createWebView({ url:URL, top:0, left:0, }); var WWWwindow = Titanium.UI.createWindow({ backgroundColor:'#E0E0E0', navBarHidden:true} ); WWWwindow.add(tWebView); WWWwindow.open(); {code} 4. The map never ask for permission for the GPS access, not even if the user presses the location icon google will briefly flash ""Location could not be identified"" h4. Extra information Use case: When we open a html5 page that as a geolocation titanium does not give access to GPS on the device. ",5 TIMOB-17480,"Android: Android menuItem with actionView can't handle invalidateOptionsMenu()"," Android menuItem with actionView can’t handle invalidateOptionsMenu() with Titanium SDK 3.3.0.GA. h5. TESTING ENVIRONMENT: Mac OS X 10.9 Ti CLI 3.3.0 Titanium SDK: 3.3.0.RC, 3.3.0.GA and 3.2.3.GA Android emulator and device 4.4.3 h5. TEST CODE {code} var searchView = Ti.UI.Android.createSearchView(); var win = Ti.UI.createWindow({ backgroundColor : 'blue', fullscreen : false, activity : { onCreateOptionsMenu : function(e) { var menu = e.menu; var menuItem = menu.add({ actionView : searchView, icon : Ti.Android.R.drawable.ic_menu_search, showAsAction : Ti.Android.SHOW_AS_ACTION_IF_ROOM | Ti.Android.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW }); menuItem.addEventListener(""click"", function(e) { Ti.API.info(""I was clicked""); }); } } }); 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 tableview = Titanium.UI.createTableView({ data : data, search : searchView, searchAsChild : false }); tableview.addEventListener('click', function(e) { // event data win.getActivity().invalidateOptionsMenu(); var index = e.index; var section = e.section; var row = e.row; var rowdata = e.rowData; Titanium.UI.createAlertDialog({ title : 'Table View', message : 'row ' + row + ' index ' + index + ' section ' + section + ' row data ' + rowdata }).show(); }); win.add(tableview); win.open(); {code} h5. STEPS TO TEST • Create a new project • Update app.js file with sample code • Run on android emulator/device • Click the search button, see the searchView appear and works fine. • Click a row, see the alert (win.getActivity().invalidateOptionsMenu(); i called) • Click the search button again, now the searchView is not displayed h5. EXPECTED RESULT It’s not working as expected in Ti SDK 3.3.0 but works fine in 3.2.3.GA ",8 TIMOB-17193,"CLI 3.3.0.Beta crashes when no parameter is given to --device-id","Running: ti build -p android --device-id Gives me this error /usr/local/lib/node_modules/titanium/node_modules/longjohn/dist/longjohn.js:185 throw e; ^ TypeError: Cannot call method 'indexOf' of undefined at /usr/local/lib/node_modules/tn/lib/utils.js:11:13 at Array.forEach (native) at _.each._.forEach (/usr/local/lib/node_modules/tn/node_modules/underscore/underscore.js:79:11) at Object.join (/usr/local/lib/node_modules/tn/lib/utils.js:8:5) at Object.cook (/usr/local/lib/node_modules/tn/lib/cook.js:57:69) at /usr/local/lib/node_modules/tn/hooks/tn.js:16:28 at /usr/local/lib/node_modules/titanium/lib/hook.js:235:13 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 run (/Users/ralcocer/Library/Application Support/Titanium/mobilesdk/osx/3.3.0.Beta/node_modules/node-appc/lib/subprocess.js:59:8) at /Users/ralcocer/Library/Application Support/Titanium/mobilesdk/osx/3.3.0.Beta/iphone/cli/lib/detect.js:415:9 at /Users/ralcocer/Library/Application Support/Titanium/mobilesdk/osx/3.3.0.Beta/node_modules/async/lib/async.js:511:21 at /Users/ralcocer/Library/Application Support/Titanium/mobilesdk/osx/3.3.0.Beta/node_modules/async/lib/async.js:227:13 at /Users/ralcocer/Library/Application Support/Titanium/mobilesdk/osx/3.3.0.Beta/node_modules/async/lib/async.js:111:13 at Array.forEach (native) at _each (/Users/ralcocer/Library/Application Support/Titanium/mobilesdk/osx/3.3.0.Beta/node_modules/async/lib/async.js:32:24) at async.each (/Users/ralcocer/Library/Application Support/Titanium/mobilesdk/osx/3.3.0.Beta/node_modules/async/lib/async.js:110:9)",3 TIMOB-17199,"Android: Orientation does not change for Window inside tabGroup","Orientation does not change When orientation modes property set on Window inside TabGroup. {code} var tabGroup = Titanium.UI.createTabGroup(); var win1 = Titanium.UI.createWindow({ title:'Tab 1', orientationModes: [Titanium.UI.LANDSCAPE_LEFT] }); var tab1 = Titanium.UI.createTab({ title:'Tab 1', window:win1 }); var win2 = Titanium.UI.createWindow({ title:'Tab 2', orientationModes: [Titanium.UI.PORTRAIT] }); var tab2 = Titanium.UI.createTab({ title:'Tab 2', window:win2 }); tabGroup.addTab(tab1); tabGroup.addTab(tab2); tabGroup.open(); {code} *Steps to reproduce:* 1.Copy Paste the code on app.js and run the app. 2. Click on Tab2. Expected Result: 1. App opens in landscape mode, having two tabs sharing 50 % width. 2. App opens in portrait mode, having two tabs sharing 50 % width. Actual Result: 1. App launches in portrait mode. 2. Tab 2 gets actives and app remains on portrait mode. Window's orientation modes does not gets changed. Not a regression. Working fine for iOS ",5 TIMOB-17203,"TextField keyboardType: parity issues between iOS and Android","KeyboardTypes KEYBOARD_NUMBER_PAD and KEYBOARD_DECIMAL_PAD do not act the same on iOS and Android. h5. Steps to repro: 0. Create a basic app with a window and add a textField to it (text field code is available below). 1. Create a textField with a keyboardType of Ti.UI.KEYBOARD_NUMBER_PAD 2. Run the app on iOS and Android 3. Notice that on iOS there are numbers but no decimal point 4. Notice on Android there are numbers and a decimal point, and you can type as many decimal points as you like. 5. Create a textField with a keyboardType of Ti.UI.KEYBOARD_DECIMAL_PAD 6. Run the app on iOS and Android 7. Notice that on iOS there are numbers and a decimal point, and you can type as many decimal points as you like. 8. Notice on Android there are numbers and a decimal point, but you can only type one decimal point. In our documentation is says: ""Use a keyboard with decimal numbers only"". http://docs.appcelerator.com/titanium/latest/#!/api/Titanium.UI-property-KEYBOARD_DECIMAL_PAD So this seems like it would be correct behavior of Android, but it is not consistent across both platforms. h5. Workaround Set different keyboardtypes for iOS and Android {code} var ipAddress = Ti.UI.createTextField({ hintText: 'IP Address', top: 10, height: 40, borderStyle: Ti.UI.INPUT_BORDERSTYLE_ROUNDED, autocapitalization: Ti.UI.TEXT_AUTOCAPITALIZATION_NONE, keyboardType: (Ti.Platform.name === 'android') ? Ti.UI.KEYBOARD_NUMBER_PAD : Ti.UI.KEYBOARD_DECIMAL_PAD }); {code}",5 TIMOB-17208,"CLI: CLI crashes when ""ti build -d"" and ""ti build -A"" command is run without path values","titanium build command fails for the flags *-d* and *-A* if there are no path values specified. The behavior of flags are described in following table based on the test result. || command || behavior || | ti build -d | CLI crashes | | ti build --project-dir (if current directory is a project directory) | build success | | ti build --project-dir ( if current directory is not a project directory) | CLI crashes | | | | | ti build -A | CLI crashes | | ti build --android-sdk | build success with default android path | | ti build --android-sdk (without valid android path settings) | Invalid SDK path error is thrown and prompting for new *SDK path* | For more details, please refer the attached screenshots. This is *not a regression* since issue is occurring in CLI 3.2.3 GA as well.",3 TIMOB-17211,"Android: KitchenSink: Layout/Dimension Properties is not working as expected","*Steps to reproduce* 1. Install KS on android device 2. Navigate to Window properties>Layout/Dimension Properties {color:green}Expected results{color} 1: Two rectangular views should appear in lower left corner. The one in the foreground is blue and the one behind is pink. Refer to expected.png {color:red}Actual Result{color} 1: Two rectangular views appears in mid and views are very thinly colored. Refer to actual.png It is regression. Works fine on 3.2.3.GA Works fine on iOS",2 TIMOB-17219,"Android: Google Maps stop loading in Android 4.4 with Google Play Services (4.4.52)","h4. Problema Description Before navigating for awhile the map stop loading, that only happens when using Android 4.4.x and Google Play Services 4.4.52 h4. Community Extra info [http://developer.appcelerator.com/question/174507/google-map-v2---map-data-stop-loading-and-updating-] h4. Tests {quote} Nexus 4, Android 4.4.2, Google Play services 4.4.52 - stopped working Nexus 4, Android 4.4.2, Google Play services 4.0.33 - OK Xperia Neo V, Android 4.0.4, Google Play services 4.4.52 - OK Galaxy Nexus Android 4.3, Google Play services 4.4.52 - OK Razr D3, Android 4.1.2, Google Play services 4.4.52 - OK {quote} h4. Testcase {code:title=app.js|borderStyle=solid} var MapModule = require('ti.map'); var code = MapModule.isGooglePlayServicesAvailable(); if (code != MapModule.SUCCESS) { alert (""Google Play Services is not installed/updated/available""); } else { var win = Ti.UI.createWindow(); var map = MapModule.createView({ userLocation: true, mapType: MapModule.NORMAL_TYPE, animate: true, region: {latitude: -33.87365, longitude: 151.20689, latitudeDelta: 0.02, longitudeDelta: 0.02 } }); win.add(map); win.open(); } {code} h4. Logs {code:title=log|borderStyle=solid} [INFO] : Installing app on device: Nexus 4 [INFO] : App successfully installed [INFO] : Starting app: com.fllor.appdev/.GooglemapsActivity [INFO] : Application pid: 4857 [INFO] : Project built successfully in 49s 991ms -- Start application log ----------------------------------------------------- [INFO] : TiApplication: (main) [0,0] checkpoint, app created. [INFO] : TiApplication: (main) [83,83] Titanium 3.2.3 (2014/04/22 10:17 b958a70) [INFO] : TiDbHelper: (main) [78,161] No value in database for platform key: 'unique_machine_id' returning supplied default '' [INFO] : TiDbHelper: (main) [8,169] No value in database for platform key: 'hardware_machine_id' returning supplied default '' [WARN] : linker: libstlport_shared.so has text relocations. This is wasting memory and is a security risk. Please fix. [WARN] : linker: libkroll-v8.so has text relocations. This is wasting memory and is a security risk. Please fix. [WARN] : linker: libtiverify.so has text relocations. This is wasting memory and is a security risk. Please fix. [INFO] : TiApplication: (main) [90,259] Titanium Javascript runtime: v8 [INFO] : TiRootActivity: (main) [0,0] checkpoint, on root activity create, savedInstanceState: null [INFO] : TiAnalyticsDb: (main) [37,37] Upgrading Database from 1 to 4 [WARN] : V8Object: Runtime disposed, cannot set property 'userAgent' [WARN] : linker: libti.map.so has text relocations. This is wasting memory and is a security risk. Please fix. [WARN] : dalvikvm: VFY: unable to resolve static field 1618 (common_google_play_services_unknown_issue) in Lcom/google/android/gms/R$string; [WARN] : dalvikvm: VFY: unable to resolve static field 1618 (common_google_play_services_unknown_issue) in Lcom/google/android/gms/R$string; [WARN] : dalvikvm: VFY: unable to resolve static field 1613 (common_google_play_services_install_title) in Lcom/google/android/gms/R$string; [WARN] : dalvikvm: VFY: unable to resolve static field 1609 (common_google_play_services_enable_title) in Lcom/google/android/gms/R$string; [WARN] : dalvikvm: VFY: unable to resolve static field 1624 (common_google_play_services_update_title) in Lcom/google/android/gms/R$string; [WARN] : dalvikvm: VFY: unable to resolve static field 1621 (common_google_play_services_unsupported_title) in Lcom/google/android/gms/R$string; [WARN] : dalvikvm: VFY: unable to resolve static field 1617 (common_google_play_services_network_error_title) in Lcom/google/android/gms/R$string; [WARN] : dalvikvm: VFY: unable to resolve static field 1618 (common_google_play_services_unknown_issue) in Lcom/google/android/gms/R$string; [WARN] : dalvikvm: VFY: unable to resolve static field 1618 (common_google_play_services_unknown_issue) in Lcom/google/android/gms/R$string; [WARN] : dalvikvm: VFY: unable to resolve static field 1615 (common_google_play_services_invalid_account_title) in Lcom/google/android/gms/R$string; [WARN] : dalvikvm: VFY: unable to resolve static field 1618 (common_google_play_services_unknown_issue) in Lcom/google/android/gms/R$string; [WARN] : dalvikvm: VFY: unable to resolve static field 1621 (common_google_play_services_unsupported_title) in Lcom/google/android/gms/R$string; [WARN] : dalvikvm: VFY: unable to resolve static field 1610 (common_google_play_services_install_button) in Lcom/google/android/gms/R$string; [WARN] : dalvikvm: VFY: unable to resolve static field 1607 (common_google_play_services_enable_button) in Lcom/google/android/gms/R$string; [WARN] : dalvikvm: VFY: unable to resolve static field 1622 (common_google_play_services_update_button) in Lcom/google/android/gms/R$string; [WARN] : dalvikvm: VFY: unable to resolve static field 1618 (common_google_play_services_unknown_issue) in Lcom/google/android/gms/R$string; [WARN] : dalvikvm: VFY: unable to resolve static field 1612 (common_google_play_services_install_text_tablet) in Lcom/google/android/gms/R$string; [WARN] : dalvikvm: VFY: unable to resolve static field 1611 (common_google_play_services_install_text_phone) in Lcom/google/android/gms/R$string; [WARN] : dalvikvm: VFY: unable to resolve static field 1608 (common_google_play_services_enable_text) in Lcom/google/android/gms/R$string; [WARN] : dalvikvm: VFY: unable to resolve static field 1623 (common_google_play_services_update_text) in Lcom/google/android/gms/R$string; [WARN] : dalvikvm: VFY: unable to resolve static field 1620 (common_google_play_services_unsupported_text) in Lcom/google/android/gms/R$string; [WARN] : dalvikvm: VFY: unable to resolve static field 1616 (common_google_play_services_network_error_text) in Lcom/google/android/gms/R$string; [WARN] : dalvikvm: VFY: unable to resolve static field 1614 (common_google_play_services_invalid_account_text) in Lcom/google/android/gms/R$string; [WARN] : dalvikvm: VFY: unable to resolve static field 1619 (common_google_play_services_unsupported_date_text) in Lcom/google/android/gms/R$string; [WARN] : dalvikvm: VFY: unable to resolve static field 1618 (common_google_play_services_unknown_issue) in Lcom/google/android/gms/R$string; [ERROR] : GooglePlayServicesUtil: The Google Play services resources were not found. Check your project configuration to ensure that the resources are included. [INFO] : I/dalvikvm-heap: Grow heap (frag case) to 11.904MB for 2731536-byte allocation [INFO] : TiRootActivity: (main) [0,0] checkpoint, on root activity resume. activity = com.fllor.appdev.GooglemapsActivity@41f55fe8 [WARN] : dalvikvm: VFY: unable to resolve static field 1628 (MapAttrs) in Lcom/google/android/gms/R$styleable; [ERROR] : GooglePlayServicesUtil: The Google Play services resources were not found. Check your project configuration to ensure that the resources are included. [INFO] : I/Google Maps Android API: Google Play services client version: 4132500 [INFO] : I/Google Maps Android API: Google Play services package version: 4452036 [INFO] : fpp: Making Creator dynamically [INFO] : I/Google Maps Android API: Google Play services client version: 4452000 [INFO] : I/Adreno-EGL: : EGL 1.4 QUALCOMM Build: I0404c4692afb8623f95c43aeb6d5e13ed4b30ddbDate: 11/06/13 [WARN] : dalvikvm: VFY: unable to resolve static field 1628 (MapAttrs) in Lcom/google/android/gms/R$styleable; [WARN] : TiVerify: (Timer-0) [5016,5016] Verifying module licenses... [INFO] : TiVerify: (Timer-0) [830,5846] Succesfully verified module licenses [INFO] : I/dalvikvm-heap: Grow heap (frag case) to 16.576MB for 292268-byte allocation [INFO] : dalvikvm: Jit: resizing JitTable from 4096 to 8192 [INFO] : I/dalvikvm-heap: Grow heap (frag case) to 16.704MB for 329936-byte allocation [INFO] : TiAnalyticsSvc: (Thread-189) [24214,30060] Analytics Service Started [INFO] : TiAnalyticsSvc: (Thread-189) [2203,32263] Stopping Analytics Service [INFO] : I/dalvikvm-heap: Grow heap (frag case) to 15.234MB for 292268-byte allocation [INFO] : I/dalvikvm-heap: Grow heap (frag case) to 16.435MB for 360412-byte allocation [INFO] : dalvikvm: Jit: resizing JitTable from 8192 to 16384 [INFO] : I/dalvikvm-heap: Grow heap (frag case) to 17.201MB for 156852-byte allocation [INFO] : I/dalvikvm-heap: Grow heap (frag case) to 17.070MB for 277324-byte allocation {code}",13 TIMOB-17462,"Can't use density-independent image as map annotation rightButton","h4. Problem Description Everytime I try to use a density independent image as map annotation rightButton property, I get the following error (like the image was not there): {code} [WARN] dalvikvm: VFY: unable to resolve static field 1611 (common_google_play_services_install_button) in Lcom/google/android/gms/R$string; [WARN] dalvikvm: VFY: unable to resolve static field 1608 (common_google_play_services_enable_button) in Lcom/google/android/gms/R$string; [WARN] dalvikvm: VFY: unable to resolve static field 1623 (common_google_play_services_update_button) in Lcom/google/android/gms/R$string; [WARN] dalvikvm: VFY: unable to resolve static field 1619 (common_google_play_services_unknown_issue) in Lcom/google/android/gms/R$string; [WARN] dalvikvm: VFY: unable to resolve static field 1613 (common_google_play_services_install_text_tablet) in Lcom/google/android/gms/R$string; [WARN] dalvikvm: VFY: unable to resolve static field 1612 (common_google_play_services_install_text_phone) in Lcom/google/android/gms/R$string; [WARN] dalvikvm: VFY: unable to resolve static field 1609 (common_google_play_services_enable_text) in Lcom/google/android/gms/R$string; [WARN] dalvikvm: VFY: unable to resolve static field 1624 (common_google_play_services_update_text) in Lcom/google/android/gms/R$string; [WARN] dalvikvm: VFY: unable to resolve static field 1621 (common_google_play_services_unsupported_text) in Lcom/google/android/gms/R$string; [WARN] dalvikvm: VFY: unable to resolve static field 1617 (common_google_play_services_network_error_text) in Lcom/google/android/gms/R$string; [WARN] dalvikvm: VFY: unable to resolve static field 1615 (common_google_play_services_invalid_account_text) in Lcom/google/android/gms/R$string; [WARN] dalvikvm: VFY: unable to resolve static field 1620 (common_google_play_services_unsupported_date_text) in Lcom/google/android/gms/R$string; [WARN] dalvikvm: VFY: unable to resolve static field 1619 (common_google_play_services_unknown_issue) in Lcom/google/android/gms/R$string; [ERROR] GooglePlayServicesUtil: The Google Play services resources were not found. Check your project configuration to ensure that the resources are included. [INFO] I/Google Maps Android API: Google Play services client version: 4132500 [INFO] I/Google Maps Android API: Google Play services package version: 4452032 [INFO] fpp: Making Creator dynamically [INFO] I/Google Maps Android API: Google Play services client version: 4452000 [DEBUG] dalvikvm: GC_CONCURRENT freed 1928K, 25% free 8152K/10755K, paused 29ms+18ms, total 129ms [INFO] Choreographer: Skipped 79 frames! The application may be doing too much work on its main thread. [INFO] I/Adreno200-EGL: : EGL 1.4 QUALCOMM build: AU_LINUX_ANDROID_JB_REL_RB1.04.01.01.06.042_msm7627a_JB_REL_RB1.2_Merge_release_AU (Merge) [INFO] I/Adreno200-EGL: Build Date: 11/06/12 Tue [INFO] I/Adreno200-EGL: Local Branch: [INFO] I/Adreno200-EGL: Remote Branch: m/jb_rel_rb1.2 [INFO] I/Adreno200-EGL: Local Patches: NONE [INFO] I/Adreno200-EGL: Reconstruct Branch: AU_LINUX_ANDROID_JB_REL_RB1.04.01.01.06.042 + NOTHING [ERROR] TiDrawableReference: (main) [2960,2960] Problem opening stream with url /images/infoicon.png: Resources/images/infoicon.png [ERROR] TiDrawableReference: java.io.FileNotFoundException: Resources/images/infoicon.png [ERROR] TiDrawableReference: at android.content.res.AssetManager.openAsset(Native Method) [ERROR] TiDrawableReference: at android.content.res.AssetManager.open(AssetManager.java:315) [ERROR] TiDrawableReference: at android.content.res.AssetManager.open(AssetManager.java:289) [ERROR] TiDrawableReference: at org.appcelerator.titanium.util.TiFileHelper.openInputStream(TiFileHelper.java:220) [ERROR] TiDrawableReference: at org.appcelerator.titanium.view.TiDrawableReference.getInputStream(TiDrawableReference.java:791) [ERROR] TiDrawableReference: at org.appcelerator.titanium.view.TiDrawableReference.getBitmap(TiDrawableReference.java:300) [ERROR] TiDrawableReference: at org.appcelerator.titanium.view.TiDrawableReference.getBitmap(TiDrawableReference.java:284) [ERROR] TiDrawableReference: at ti.map.TiMapInfoWindow.setLeftOrRightPane(TiMapInfoWindow.java:171) [ERROR] TiDrawableReference: at ti.map.AnnotationProxy.processOptions(AnnotationProxy.java:168) [ERROR] TiDrawableReference: at ti.map.TiUIMapView.addAnnotation(TiUIMapView.java:327) [ERROR] TiDrawableReference: at ti.map.TiUIMapView.addAnnotations(TiUIMapView.java:341) [ERROR] TiDrawableReference: at ti.map.TiUIMapView.processMapProperties(TiUIMapView.java:157) [ERROR] TiDrawableReference: at ti.map.TiUIMapView.onViewCreated(TiUIMapView.java:111) [ERROR] TiDrawableReference: at org.appcelerator.titanium.view.TiUIFragment.handleMessage(TiUIFragment.java:65) [ERROR] TiDrawableReference: at android.os.Handler.dispatchMessage(Handler.java:95) [ERROR] TiDrawableReference: at android.os.Looper.loop(Looper.java:137) [ERROR] TiDrawableReference: at android.app.ActivityThread.main(ActivityThread.java:4795) [ERROR] TiDrawableReference: at java.lang.reflect.Method.invokeNative(Native Method) [ERROR] TiDrawableReference: at java.lang.reflect.Method.invoke(Method.java:511) [ERROR] TiDrawableReference: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) [ERROR] TiDrawableReference: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556) [ERROR] TiDrawableReference: at dalvik.system.NativeStart.main(Native Method) {code} h3.Testing Environment: Titanium SDK: 3.2.3.GA 3.3.0.RC, Titanium CLI: 3.3.0 –rc, Android SDK: 4.2.2,4.4.2, OS X Version: 10.9.3, Appcelerator Studio: 3.2.3 h3.Steps to reproduce the issue: 1.Create a Alloy project. 2.Paste this code in index.xml,index.js file and Alloy.js file. 3.configure your tiapp.xml file with Google API key. 4. Paste some density-independent image in Android>images>> folders 5.Run this code with testing environment. {code: title=index.xml} {code} {code: title=index.js} $.map.setAnnotations([Alloy.Globals.Map.createAnnotation({ latitude : 35.8667, longitude : 6.2333, title : 'A title', subtitle:'test', rightButton : ""/images/infoicon.png"" }), Alloy.Globals.Map.createAnnotation({ latitude : 44.8667, longitude : 10.2333, title : 'Another title', subtitle:'test', leftButton : ""/images/infoicon.png"" })]); $.index.open(); {code} {code: title=alloy.js} Alloy.Globals.Map = require('ti.map'); {code} ",3 TIMOB-17238,"iOS8: Add support for Interactive Notifications","iOS 8 brings a new feature that allows users to perform actions against notifications. A short writeup is here: http://techcrunch.com/2014/06/02/actionable-push-notifications/ Apple has added notification action support so that user can immediately handle notifications in the home screen or lock screen, without the user having to enter the app. To enable this for both local and remote notifications, the following steps have to followed: 1. Create and Configure Notification Actions 2. Create and assign Notification Actions to Notification Categories 3. Register the Notification Categories and Notification Types 4. After which, add event listeners for notifications received while the app is active, or in background. *Detailed Steps:* *1. Create and Configure Notification Actions* {code:javascript} var acceptAction = Ti.App.iOS.createUserNotificationAction({ identifier: ""ACCEPT_IDENTIFIER"", title: ""Accept"", activationMode: Ti.App.iOS.NOTIFICATION_ACTIVATION_MODE_BACKGROUND, destructive: false, authenticationRequired: false }) ; {code} key parameters: activation Mode: NOTIFICATION_ACTIVATION_MODE_BACKGROUND, NOTIFICATION_ACTIVATION_MODE_FOREGROUND determines where app should be activated when user selects this action destructive: if this action does something permanent like delete authenticationRequired: if this action needs user to enter pin to continue *2.Create and assign Notification Actions to Notification Categories* {code:javascript} var backgroundCategory = Ti.App.iOS.createUserNotificationCategory({ identifier: ""BACKGROUND_CATEGORY"", actionsForDefaultContext: [acceptAction, maybeAction, declineAction], actionsForMinimalContext: [acceptAction, declineAction] }); {code} key parameters: actionsForDefaultContext: default actions to show. Will show all if user has set app to display notifications in alert style. actionsForMinimalContext(optional) : actions to show when user has set app to display notifications in banner style, and in lock screen. *3.Register the Notification Categories and Notification Types* {code:javascript} Ti.App.iOS.registerForLocalNotifications({ types: Ti.App.iOS.NOTIFICATION_TYPE_SOUND | Ti.App.iOS.NOTIFICATION_TYPE_ALERT, categories: [backgroundCategory,backgroundLockCategory,foregroundCategory] }); {code} Note: categories: nil will allow local notifications to work without actions *4.Add event listeners* {code:javascript} // for notifications received while app is in foreground Ti.App.iOS.addEventListener('notification',function(e) { var content = e.userInfo.content; //do stuff with notification received }); //for notifications received while app is in background Ti.App.iOS.addEventListener('backgroundNotification',function(e) { var content = e.userInfo.content; var identifier = e.identifier; //do stuff with notification received }); {code} Note: To enable interactive remote notifications, steps 1 to 3 should be done as well. Followed by Ti.Network.registerForPushNotifications. Require ACS to add additional field ""category"" to aps push packet, so that we can enable this for remote notifications.",8 TIMOB-17564,"Crittercism: Add support for Customizing the Version Name ","h6.Feature Request To expose setCustomVersionName Crittercism method since customer would like to be able to customise version name for the performance management section of our Platform. h6.Android docs This configuration option allows you to customize the app version diagnostic that is reported to Crittercism. It will allow you to filter crashes, handled exceptions, app loads, and service monitoring data by a custom app version, and this version will appear in the Proguard mapping upload page of the website. For library versions 3.1.4 and above, use an instance of CrittercismConfig as shown in the following code example: {code} import com.crittercism.app.Crittercism; import com.crittercism.app.CrittercismConfig; import android.os.Bundle; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // create the CrittercismConfig instance. CrittercismConfig config = new CrittercismConfig(); String myCustomVersionName = ""My Custom Version Name""; // set the custom version name. config.setCustomVersionName(myCustomVersionName); // initialize. Crittercism.initialize(getApplicationContext(), """", crittercismConfig); } {code} - http://docs.crittercism.com/android/android.html#setting-advanced-crittercism-options ",3 TIMOB-17271,"Crittercism: iOS crashes do not show up with 1.0.9 module","iOS crashes do not show up in ""Performance iFrame"" with 1.0.9 Crittercism module. Note: This is a regression, works with 1.0.8 Crittercism module h6.Steps to reproduce: 1. Create a default titanium application in 3.3.0 stack environment 2. Copy the attached app.js 3. Make sure that you are using 1.0.9 Crittercism module 4. Launch the application on iOS device 5. Generate crashes 6. Check on the Crittercism iframe related to the app h6.Actual Result: iOS crashes do not show up in Crittercism iframe when 1.0.9 Crittercism module is used. h6.Expected Result: The iOS crashes should show up in the Crittetcism iframe. ",13 TIMOB-17367,"iOS: rightNavButtons and leftNavButtons touch events don't work","Try code below. The events work twice and then no longer function. index.xml: {code} {code} index.js: {code} var leftNav1 = Ti.UI.createLabel({ text: 'tch', height: 30, width: Ti.UI.SIZE }); leftNav1.addEventListener('touchstart', function() { alert ('left touch'); }); var leftNav2 = Ti.UI.createLabel({ text: 'clk', height: 30, width: Ti.UI.SIZE }); leftNav2.addEventListener('click', function() { alert ('click left'); }); $.win1.leftNavButtons = [leftNav1, leftNav2]; var rightNav1 = Ti.UI.createLabel({ text: 'tch', height: 30, width: Ti.UI.SIZE }); rightNav1.addEventListener('touchstart', function() { alert ('right touch'); }); var rightNav2 = Ti.UI.createLabel({ text: 'clk', height: 30, width: Ti.UI.SIZE }); rightNav2.addEventListener('click', function() { alert ('right click'); }); $.win1.rightNavButtons = [rightNav1, rightNav2]; $.index.open(); {code}",5 TIMOB-17627,"iOS: Fix fullscreen transform for Camera","h4. Problem Description A black stripe on the bottom when using showCamera with a parameter of scale 1 and overlay rotating 90 degree. The code will show a black Stripe on the Bottom of the Screen and the app is in Landscape mode. Use a 2d matrix to transform the live view of the camera by scaling it 1 to 1.x or whatever scale you want to fill the screen. for me the camera previews full screen at scale 1.75. h4. Steps to reproduce 1. Create new mobile project (classic titanium) 2. Copy this code into app.js {code} var container ={}; var overlayTransform = Ti.UI.create2DMatrix().rotate(90); container.overlay = Titanium.UI.createView({transform:overlayTransform} ); var cameraTransform = Ti.UI.create2DMatrix(); cameraTransform = cameraTransform.scale(1); Titanium.Media.showCamera( { success:function(event) { }, cancel:function() { }, error:function(error) { }, autohide:false, overlay:container.overlay, showControls:false, transform:cameraTransform, }); {code} 3. Run it in device.",13 TIMOB-17281,"CLI: fails to build to device with Android 5.0","After installing the preview of the new Android version ""L"" to my Nexus, the Titanium CLI fails to build apps. It works fine if I build with Titanium Studio. I know that this may be fixed automatically when L releases with an actual version number. But is there a way to fix it or work around at the moment? *Steps to reproduce* 1. create new default App (Classic or Alloy) 2. build from CLI with {{--target device}} to device with L installed *Result* creates the following error {code:bash} TiNy cooked: ti build --platform android --sdk 3.3.0.Beta build --target device --shadow Titanium Command-Line Interface, CLI version 3.3.0-rc, Titanium SDK version 3.3.0.Beta Copyright (c) 2012-2014, Appcelerator, Inc. All Rights Reserved. Please report bugs to http://jira.appcelerator.org/ [INFO] Auto selecting device that closest matches 4.4.2 /usr/local/lib/node_modules/titanium/node_modules/longjohn/dist/longjohn.js:185 throw e; ^ TypeError: Invalid Version: L.0.0 at new SemVer (/Users/manu/Library/Application Support/Titanium/mobilesdk/osx/3.3.0.Beta/node_modules/node-appc/node_modules/semver/semver.js:271:11) at compare (/Users/manu/Library/Application Support/Titanium/mobilesdk/osx/3.3.0.Beta/node_modules/node-appc/node_modules/semver/semver.js:424:10) at Function.gte (/Users/manu/Library/Application Support/Titanium/mobilesdk/osx/3.3.0.Beta/node_modules/node-appc/node_modules/semver/semver.js:473:10) at Object.gte (/Users/manu/Library/Application Support/Titanium/mobilesdk/osx/3.3.0.Beta/node_modules/node-appc/lib/version.js:90:16) at AndroidBuilder.validate (/Users/manu/Library/Application Support/Titanium/mobilesdk/osx/3.3.0.Beta/android/cli/commands/_build.js:1222:22) at exports.validatePlatformOptions (/Users/manu/Library/Application Support/Titanium/mobilesdk/osx/3.3.0.Beta/node_modules/titanium-sdk/lib/titanium.js:596:69) at /Users/manu/Library/Application Support/Titanium/mobilesdk/osx/3.3.0.Beta/cli/commands/build.js:194:19 at callCommandValidate (/usr/local/lib/node_modules/titanium/lib/cli.js:850: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 Object.run (/Users/manu/Library/Application Support/Titanium/mobilesdk/osx/3.3.0.Beta/node_modules/node-appc/lib/subprocess.js:59:8) at /Users/manu/Library/Application Support/Titanium/mobilesdk/osx/3.3.0.Beta/node_modules/titanium-sdk/lib/emulators/genymotion.js:319:21 at /Users/manu/Library/Application Support/Titanium/mobilesdk/osx/3.3.0.Beta/node_modules/async/lib/async.js:511:21 at /Users/manu/Library/Application Support/Titanium/mobilesdk/osx/3.3.0.Beta/node_modules/async/lib/async.js:227:13 at /Users/manu/Library/Application Support/Titanium/mobilesdk/osx/3.3.0.Beta/node_modules/async/lib/async.js:111:13 at Array.forEach (native) at _each (/Users/manu/Library/Application Support/Titanium/mobilesdk/osx/3.3.0.Beta/node_modules/async/lib/async.js:32:24) at async.each (/Users/manu/Library/Application Support/Titanium/mobilesdk/osx/3.3.0.Beta/node_modules/async/lib/async.js:110:9) {code} *Expected result* It should build the app and install it on the device",8 TIMOB-17404,"iOS: Focusing TextField in HeaderView of empty TableView causes application to crash on iOS7.1","h5. Problem Description Focusing TextField in HeaderView of empty TableView causes application to crash on iOS7.1 h5. TEST ENVIRONMENT: Ti SDK 3.3.0.GA Ti CLI 3.3.0 iOS SDK: 7.1 iOS iPhone Simulator: 7.1 h5. STEP TO REPRODUCE: 1. Create a default alloy project. 2. Replace index.xml with the following code: {code} {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-17293,"CLI: Xcode 6 simulators fail to launch","h5.Description Building a project using Xcode 6 will fail when attempting to focus the iOS simulator h5.Steps To Reproduce 1. Install Xcode 6 (currently in beta) 2. Create an iOS project in Studio 3. Build the project to iOS simulator h5.Expected Result Simulator should start and app should install and run. h5.Actual Result Simulator fails to launch and console logs that the project failed to build. {code} [INFO] Launching application in iOS Simulator [DEBUG] Simulator command: ""/Users/sdowse/Library/Application Support/Titanium/mobilesdk/osx/3.3.0.v20140710142512/iphone/ios-sim"" launch ""/Users/sdowse/Documents/Appcelerator_Studio_Workspace/Kitchen Sink/build/iphone/build/Debug-iphonesimulator/KitchenSink.app"" --xcode-dir ""/Applications/xcodes/Xcode_6b3.app/Contents/Developer"" --sdk 8.0 --family ipad [INFO] Focusing the iOS Simulator [ERROR] Project failed to build after 15s 711ms {code}",21 TIMOB-17335,"iOS8: Add support for Share Extensions","iOS 8 allows developers to add extensions to the Share infrastructure.",5 TIMOB-17554,"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,"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-17509,"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,"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,"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-18788,"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,"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,"Android: Refactor notifications","Our current implementation is deprecated, and likely to stop working with Android L.",13 TIMOB-17359,"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-17361,"Android: Add Support for CardView","A new widget that allows you to display pieces of information inside cards.",21 TIMOB-17371,"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-17548,"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,"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,"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,"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-17884,"Map: Android - Google Maps v2 map tiles not showing when scrolling/zooming ","After starting a map view, everything works fine for a while. If you do a lot of scrolling and zooming, you don't see any map details any more after a while on some devices (e.g. Samsung Galaxy S4 w Android 4.2.1, Oppo Find 7 w Android 4.4, Google Nexus 7 w Android 4.4 etc.). * You can still scroll and zoom, but the map stays blurry (street names still appear). * Switching between satellite and standard view doesn't change the bevhaviour. * Sometimes the app crashes after heavy zooming and scrolling. * After clearing the cache (application settings) and restarting the app, the map works fine again for some time. So I assume it's a memory issue. * In addition some users report that the performance of the map view is, compared to the Google Maps app, worse and the use of internet traffic is higher. I attached a sample project. You just have to enter your Google API key and adapt the app id. If you have any questions or need more information feel free to post a comment.",21 TIMOB-17460,"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,"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,"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,"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,"iOS8: Biometric enhancements to SDK allowing accessing / managing Keychain","Biometric enhancements to SDK allowing accessing / managing Keychain",8 TIMOB-17842,"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,"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,"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-17446,"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,"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,"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,"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,"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,"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,"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-17472,"Tooling: Analyze CLI API analytics data for top-used functionality","Our goal is to convert the API data from the CLI into useful information about which are the most used APIs High-level process: # Grab compressed JSON files from /appcelerator.analytics.datastore/desktop/2014/07 and later (the feature was only released in mid-July) # Parse the JSON for all events with feature ID ""ti.apiusage"". A sample item might appear like (note that API data itself is escaped) {code} { ""event"": ""Titanium API Usage"", ""type"": ""ti.apiusage"", ""sid"": ""971063aa-1b36-470a-9933-a6d02679a975"", ""guid"": ""cf5c67ed-1c3b-494b-afe0-01b958ef0f40"", ""mid"": ""78f11f954dc9107fbe9f9b1b449f46b2"", ""mac_addr"": """", ""ip"": """", ""creator_user_id"": ""1559790"", ""app_name"": ""Titanium Command-Line Interface"", ""app_version"": ""3.3.0"", ""version"": ""3.3.0"", ""tz"": ""-120"", ""ver"": ""2"", ""un"": ""internet@createurdimage.fr"", ""data"": ""{\""platform\"":\""iphone\"",\""tisdkname\"":\""3.3.0.v20140711123603\"",\""tisdkver\"":\""3.3.0\"",\""deployType\"":\""production\"",\""target\"":\""dist-appstore\"",\""usage\"":{\""Titanium.Locale.getCurrentLanguage\"":10,\""Titanium.App.Properties.getString\"":110,\""Titanium.App.Properties.setString\"":9,\""Titanium.App.fireEvent\"":50,\""Titanium.Platform.displayCaps.platformHeight\"":3,\""Titanium.Platform.displayCaps.platformWidth\"":159,\""Titanium.Platform.osname\"":6,\""Titanium.Network.createHTTPClient\"":63,\""Titanium.API.info\"":61,\""Titanium.API.log\"":31,\""Titanium.UI.createTableViewSection\"":16,\""Titanium.UI.createAnimation\"":64,\""Titanium.UI.createWindow\"":19,\""Titanium.UI.createImageView\"":60,\""Titanium.UI.createView\"":169,\""Titanium.UI.FIll\"":45,\""Titanium.UI.createButton\"":37,\""Titanium.UI.createLabel\"":96,\""Titanium.UI.Size\"":50,\""Titanium.UI.SIZE\"":99,\""Titanium.UI.createScrollView\"":6,\""Titanium.UI.FILL\"":24,\""Titanium.UI.createTableView\"":13,\""Titanium.Filesystem.getFile\"":11,\""Titanium.Filesystem.tempDirectory\"":8,\""Titanium.UI.createOptionDialog\"":7,\""Titanium.Media.showCamera\"":7,\""Titanium.UI.createAlertDialog\"":14,\""Titanium.Media.NO_CAMERA\"":7,\""Titanium.Media.openPhotoGallery\"":7,\""Titanium.Filesystem.applicationDataDirectory\"":3,\""Titanium.App.addEventListener\"":20,\""Titanium.UI.createTableViewRow\"":8,\""Titanium.UI.Fill\"":3,\""Titanium.UI.createTextField\"":9,\""Titanium.UI.TEXT_AUTOCAPITALIZATION_NONE\"":2,\""Titanium.UI.createTextArea\"":2,\""Titanium.UI.createScrollableView\"":1,\""Titanium.UI.createPicker\"":4,\""Titanium.UI.PICKER_TYPE_DATE\"":2,\""Titanium.Locale.getCurrentCountry\"":1,\""Titanium.Contacts.getAllPeople\"":1,\""Titanium.Contacts.contactsAuthorization\"":2,\""Titanium.Contacts.AUTHORIZATION_AUTHORIZED\"":1,\""Titanium.Contacts.AUTHORIZATION_UNKNOWN\"":1,\""Titanium.Contacts.requestAuthorization\"":1,\""Titanium.Platform.openURL\"":1,\""Titanium.Platform.Android\"":9,\""Titanium.UI.PICKER_TYPE_TIME\"":1,\""Titanium.UI.PICKER_TYPE_DATE_AND_TIME\"":1,\""Titanium.UI.PORTRAIT\"":1,\""Titanium.UI.UPSIDE_PORTRAIT\"":1,\""Titanium.UI.iPhone.TableViewSeparatorStyle.NONE\"":2,\""Titanium.App.version\"":2,\""Titanium.UI.createSearchBar\"":1,\""Titanium.App.Properties\"":1,\""Titanium.API.warn\"":11,\""Titanium.Database.open\"":6,\""Titanium.API.debug\"":2,\""Titanium.Database.install\"":1,\""Titanium.Database\"":1,\""Titanium.version\"":1,\""Titanium.UI.ActivityIndicatorStyle.DARK\"":1,\""Titanium.UI.iPhone.ActivityIndicatorStyle.PLAIN\"":1,\""Titanium.UI.createActivityIndicator\"":1,\""Titanium.API.error\"":1,\""Titanium.Platform.id\"":2,\""Titanium.Platform.name\"":1,\""Titanium.App.analytics\"":1,\""Titanium.App.sessionId\"":1,\""Titanium.App.deployType.toLowerCase\"":1,\""Titanium.UI.createWebView\"":1}}"", ""id"": ""7f26c3ed-cd66-5832-deeb-0b49-2227d851"", ""os"": ""Mac OS X"", ""platform"": ""osx"", ""osver"": ""10.9.4"", ""ostype"": ""64bit"", ""oscpu"": ""2"", ""memory"": ""4294967296"", ""node"": ""0.10.13"", ""npm"": ""1.3.2"", ""server_ts"": ""2014-08-01T08:01:10-07:00"", ""server_mid"": ""78f11f954dc9107fbe9f9b1b449f46b2"" } {code} ## sid: Session ID ## guid: CLI App ID ## mid: Machine ID ## id: Event ID # Create a data storage mechanism that allows you to initially provide the following information: # Top 500 APIs in order of usage, descending. Each unique App ID only contributes once to the tally ""jq"" is a useful tool for parsing JSON. This strips out only the useful events: {code} ls -laS | grep "".*\.json.txt.gz"" | head -n1 | awk '{print $NF}' | xargs gzip -dc | jq 'select(.type == ""ti.apiusage"") | [{id, data}] | group_by(.id)' | less {code} Once that's complete, provide a data storage that allows us to query the data easily to ask questions like: # Given a set of APIs, how many applications can be implemented 100%",33 TIMOB-17475,"Create Travis status page across repositories","We are using Travis more frequently now to automatically build repositories. However, it can be tedious to get an at-a-view glance of which repositories are building, and which are failing. There are Chrome extensions that supposedly automate this display (see https://chrome.google.com/webstore/detail/github%2Btravis/klbmicjanlggbmanmpneloekhajhhbfb/reviews), but it appears that they only work on the individual repository view, and not the repository list: https://github.com/appcelerator-modules For this, let's create a page that sits next to build.appcelerator.com (so a HTML page using a single-page modern framework) that displays the current build results for repositories in these organizations: * https://github.com/appcelerator: Main account for most projects. * https://github.com/appcelerator-modules: SDK modules. * http://github.com/appcelerator-developer-relations: SDK Samples It should do the following: * Gather the list of repositories to show via the GitHub API * If a repository is enabled for Travis, show the build status (unknown/failing/passing) along with the name of the repo. Don't show non-enabled repositories * Refresh the status of the repo build without needing to refresh the page Initially, we can start with public repositories only. Later, we can allow a second view for private repos.",21 TIMOB-17476,"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 dsCou...",3 TIMOB-17477,"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: ...",3 TIMOB-17478,"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,"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,"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: android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180) [ERROR] : TiApplication: android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) [ERROR] : TiApplication: android.app.ActivityThread.access$600(ActivityThread.java:141) [ERROR] : TiApplication: android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) [ERROR] : TiApplication: android.os.Handler.dispatchMessage(Handler.java:99) [ERROR] : TiApplication: android.os.Looper.loop(Looper.java:137) [ERROR] : TiApplication: android.app.ActivityThread.main(ActivityThread.java:5041) [ERROR] : TiApplication: java.lang.reflect.Method.invokeNative(Native Method) [ERROR] : TiApplication: java.lang.reflect.Method.invoke(Method.java:511) [ERROR] : TiApplication: com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) [ERROR] : TiApplication: com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) [ERROR] : TiApplication: 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: android.view.ViewGroup.addViewInner(ViewGroup.java:3339) [ERROR] : TiApplication: android.view.ViewGroup.addView(ViewGroup.java:3210) [ERROR] : TiApplication: android.view.ViewGroup.addView(ViewGroup.java:3186) [ERROR] : TiApplication: ti.modules.titanium.ui.widget.TiUITableView.processProperties(TiUITableView.java:155) [ERROR] : TiApplication: org.appcelerator.kroll.KrollProxy.setModelListener(KrollProxy.java:1185) [ERROR] : TiApplication: org.appcelerator.titanium.proxy.TiViewProxy.realizeViews(TiViewProxy.java:480) [ERROR] : TiApplication: org.appcelerator.titanium.proxy.TiViewProxy.handleGetView(TiViewProxy.java:471) [ERROR] : TiApplication: org.appcelerator.titanium.proxy.TiViewProxy.getOrCreateView(TiViewProxy.java:449) [ERROR] : TiApplication: org.appcelerator.titanium.proxy.TiViewProxy.realizeViews(TiViewProxy.java:487) [ERROR] : TiApplication: org.appcelerator.titanium.proxy.TiViewProxy.handleGetView(TiViewProxy.java:471) [ERROR] : TiApplication: org.appcelerator.titanium.proxy.TiViewProxy.getOrCreateView(TiViewProxy.java:449) [ERROR] : TiApplication: org.appcelerator.titanium.proxy.TiViewProxy.handleAdd(TiViewProxy.java:566) [ERROR] : TiApplication: org.appcelerator.titanium.proxy.TiViewProxy.add(TiViewProxy.java:544) [ERROR] : TiApplication: ti.modules.titanium.ui.WindowProxy.windowCreated(WindowProxy.java:303) [ERROR] : TiApplication: org.appcelerator.titanium.TiActivityWindows.windowCreated(TiActivityWindows.java:32) [ERROR] : TiApplication: org.appcelerator.titanium.TiBaseActivity.windowCreated(TiBaseActivity.java:452) [ERROR] : TiApplication: org.appcelerator.titanium.TiBaseActivity.onCreate(TiBaseActivity.java:528) [ERROR] : TiApplication: org.appcelerator.titanium.TiActivity.onCreate(TiActivity.java:18) [ERROR] : TiApplication: android.app.Activity.performCreate(Activity.java:5104) [ERROR] : TiApplication: android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) [ERROR] : TiApplication: android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) [ERROR] : TiApplication: ... 11 more {code} Thanks",5 TIMOB-17491,"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-17584,"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-17499,"Windows: Create WP81 Unit and Performance Tests","1. Create WP81 unit and performance tests for JavaScriptCore that integrates with the CI server setup by Allen. 1.1. The unit tests should be based in test262 (this is item 7 from the Igalia SOW). 1.2. The performance tests should be based on JSBench.",21 TIMOB-17621,"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-17525,"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-17526,"Add certificate functionality to ioslib",NULL,5 TIMOB-17527,"Add environment functionality to ioslib",NULL,3 TIMOB-17528,"Add provisioning functionality to ioslib",NULL,5 TIMOB-17529,"Add Xcode functionality to ioslib",NULL,5 TIMOB-17530,"Add simulator logic to ioslib","Querying simulators, Launching simulators (Xcode 5 & 6), stopping simulators",21 TIMOB-17531,"Add device-specific logic to ioslib","Querying what devices are present, installing to device, logging messages from device",5 TIMOB-17532,"Integrate ioslib into Titanium CLI",NULL,8 TIMOB-17533,"Integrate ioslib into tio2",NULL,3 TIMOB-17545,"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,"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,"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,"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): org.appcelerator.titanium.io.TiFileFactory.createTitaniumFile(TiFileFactory.java:56) 08-26 16:54:37.232: E/AndroidRuntime(2664): ti.modules.titanium.media.MediaModule.createDictForImage(MediaModule.java:823) 08-26 16:54:37.232: E/AndroidRuntime(2664): ti.modules.titanium.media.MediaModule$1.onResult(MediaModule.java:794) 08-26 16:54:37.232: E/AndroidRuntime(2664): org.appcelerator.titanium.util.TiActivitySupportHelper$1.onResult(TiActivitySupportHelper.java:58) 08-26 16:54:37.232: E/AndroidRuntime(2664): org.appcelerator.titanium.util.TiActivitySupportHelper.onActivityResult(TiActivitySupportHelper.java:107) 08-26 16:54:37.232: E/AndroidRuntime(2664): org.appcelerator.titanium.TiBaseActivity.onActivityResult(TiBaseActivity.java:632) 08-26 16:54:37.232: E/AndroidRuntime(2664): android.app.Activity.dispatchActivityResult(Activity.java:5922) 08-26 16:54:37.232: E/AndroidRuntime(2664): 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,"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,"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,"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,"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,"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,"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,"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,"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-17945,"Android: CloudPush - events not fired correctly","h4. Problem Description If CloudPush.singleCallback is set to true, ""callback"" event will not be fired when clicking the tray notification that launches the app (app wasn't in the foreground nor the background). Without CloudPush.singleCallback set to true, ""callback"" will be fired as expected. trayClickFocusedApp and trayClickLaunchedApp are never fired in any case. h4. Testcase 1. Create a new mobile project (classic titanium) 2. Paste this to app.js {code} var CloudPush = require('ti.cloudpush'); CloudPush.retrieveDeviceToken({ success: function deviceTokenSuccess(e) { // Use this device token with Ti.Cloud.PushNotifications calls // to subscribe and unsubscribe to push notification channels Ti.API.info('Device Token: ' + e.deviceToken); }, error: function deviceTokenError(e) { alert('Failed to register for push! ' + e.error); } }); // These events monitor incoming push notifications CloudPush.addEventListener('callback', function (evt) { alert(evt.payload); }); CloudPush.addEventListener('trayClickLaunchedApp', function (evt) { Ti.API.info('Tray Click Launched App (app was not running)'); }); CloudPush.addEventListener('trayClickFocusedApp', function (evt) { Ti.API.info('Tray Click Focused App (app was already running)'); }); {code} 3. Run in device. h4. OBSERVED PROBLEM After Enabling ""ti.cloud"" and ""ti.cloudpush"" in the project, we provided the Production and Development Key generated by titanium and also the ACS API key from web console in the ""tiapp.xml"" file. {code} W4dRrpUDB86lWmDP8xUQvFT8GYSba0Py vLJOUvCtWkNZISxsLJnovTUpsYFpE3BY W4dRrpUDB86lWmDP8xUQvFT8GYSba0Py {code} We also configured the app for GCM protocol. After Running the app. An error message has shown and though GCM Authentication was successful, The Device token was not shown in the console. h4. Error Message {code} [ERROR] : SELinux: Function: selinux_android_load_priority [0], There is no sepolicy file [INFO] : TiApplication: (main) [0,0] checkpoint, app created. [INFO] : TiApplication: (main) [210,210] Titanium 3.3.0 (2014/07/11 12:36 787cd39) [ERROR] : SELinux: [ERROR] : SELinux: Function: selinux_android_load_priority [1], There is no sepolicy version file [ERROR] : SELinux: [ERROR] : SELinux: selinux_android_seapp_context_reload: seapp_contexts file is loaded from /seapp_contexts {code} ",21 TIMOB-17600,"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,"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,"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-17583,"CLI: Running ""ti create --workspace-dir” prompts for the directory to place the project but giving the error message as well","Description: Running ""ti create"" prompts the user for the directory to place the project in. Running ""ti create --workspace-dir"" prompts the user for the directory to place the project along with the error message as well. The issue is reproducible with CLI 3.3.0. STEPS TO REPRODUCE 1. Open a terminal window 2. Run 'ti create --workspace-dir' 3. Type in a valid Project name and all prompted values EXPECTED RESULT The CLI should prompt for the directory to place the project in without giving an error message. ACTUAL RESULT {code} KAGRAWAL-MBP:Appcelerator_Studio_Workspace kagrawal$ ti create --workspace-dir 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]: all Project name: example1 App ID: abc Your company/personal URL: [ERROR] Please specify the workspace directory Directory to place project [.]: [INFO] Creating app project {code} ",5 TIMOB-17585,"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-17586,"CLI: Running ""ti create --name” prompts the user for the project name along with the error message.","Description: Running ""ti create --name"" prompts the user for the project name 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 --name' 3. Type in a valid Project name and all prompted values EXPECTED RESULT The CLI should prompt for the project name without giving an error message. ACTUAL RESULT {code} KAGRAWAL-MBP:Appcelerator_Studio_Workspace kagrawal$ ti create --name 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]: app Target platform (all|iphone|ipad|mobileweb|android|blackberry) [all]: iphone [ERROR] Please specify a project name Project name: sample {code}",5 TIMOB-17587,"CLI: Running ""ti create --sdk"" or ""ti create -s"" fails the create command instead of prompting for sdk version.","Description: Running ""ti create --sdk"" or ""ti create -s"" does not prompts the user to specify the sdk version.It's showing ' Failed to run command ""create""' error. The issue is reproducible with CLI 3.3.0. STEPS TO REPRODUCE 1. Open a terminal window 2. Run 'ti create --sdk' or Run 'ti create -s' 3. Type in a valid Project name and all prompted values EXPECTED RESULT The CLI should prompt user for selecting the sdk version with either --sdk or -s options. ACTUAL RESULT Running this fails the ""create"" command by showing below error with both the options '--sdk' and 's' . {code} KAGRAWAL-MBP:Appcelerator_Studio_Workspace kagrawal$ ti create --sdk 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]: iphone Project name: example12 App ID: a.b Your company/personal URL: Directory to place project [.]: /Users/kagrawal/Documents/Appcelerator_Studio_Workspace [INFO] Creating app project [ERROR] Failed to run command ""create"" [ERROR] TypeError: Cannot read property 'path' of null at CreateCommand. (/Users/kagrawal/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140829184521/cli/commands/create.js:414:57) at /Users/kagrawal/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140829184521/node_modules/node-appc/node_modules/async/lib/async.js:610:21 at /Users/kagrawal/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140829184521/node_modules/node-appc/node_modules/async/lib/async.js:249:17 at iterate (/Users/kagrawal/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140829184521/node_modules/node-appc/node_modules/async/lib/async.js:149:13) at /Users/kagrawal/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140829184521/node_modules/node-appc/node_modules/async/lib/async.js:160:25 at /Users/kagrawal/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140829184521/node_modules/node-appc/node_modules/async/lib/async.js:251:21 at /Users/kagrawal/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140829184521/node_modules/node-appc/node_modules/async/lib/async.js:615:34 at appc.async.series.template (/Users/kagrawal/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140829184521/cli/commands/create.js:408:4) at /Users/kagrawal/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140829184521/node_modules/node-appc/node_modules/async/lib/async.js:610:21 at /Users/kagrawal/Library/Application Support/Titanium/mobilesdk/osx/3.4.0.v20140829184521/node_modules/node-appc/node_modules/async/lib/async.js:249:17 {code}",8 TIMOB-17588,"CLI: Running ""ti create -t module --template"" does not prompt user for specifying the project template. ","Description: Running ""ti create -t module --template"" does not prompts the user to specify the project template to be used and creates the module.Running ""ti create -t app --template"" also doesn't prompt user for the project template. The issue is reproducible with CLI 3.3.0. STEPS TO REPRODUCE 1. Open a terminal window 2. Run 'ti create -t module --template' or Run 'ti create -t app --template"" 3. Type in a valid Project name and all prompted values EXPECTED RESULT The CLI should notice the missing parameters for template and ask for a valid input from the user. ACTUAL RESULT The command does not prompt user for project template and creates module or app project successfully.",5 TIMOB-17589,"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,"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,"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-17595,"iOS: The app fails to install on iOS device after a second iOS device is also plugged in","The app does not install to the first iOS device after the second iOS device is also attached in the system. This is a regression as the issue does not exist with SDK 3.3.0.GA The issue occurs on 3.3.0 CLI as well with 3.4.0.x SDK Steps to Reproduce: 1. Attach a development iOS device to the system. 2. For any mobile project, either install the project through studio or run the following cli command ""ti build -p ios -T device -C "" 3. The app gets installed successfully 4. Now plug in another iOS device to the system. 5. Again try to install the same project to the first device In CLI the build is successful but the process terminates without installing the app. In studio the installer process terminates after the console shows ""[INFO] : Image optimization complete"" Note: If at this point we try to install the same app on device 2, it is successful. However, if we unplug and plug the device 1 again then it does not install on device 2 now but does so on device 1. In trying to reproduce this, there are times when the node-ios-device library fails to connect to the device or start the syslog_relay service: {code} Trying to build and run apps on the iOS8 device yields: [TRACE] : ** BUILD SUCCEEDED ** [INFO] : Installing app on device: Mark's iPhone [ERROR] : Failed to start ""com.apple.syslog_relay"" service (0xe800007f) [ERROR] : Project failed to build after 37s 599ms {code} There are also times when node-ios-device crashes with a segmentation fault.",21 TIMOB-17601,"iOS8: Simulator - unexpected behavior before launching the app","h5. Description When launching the app on iOS8 Simulator, I encountered that as soon as the simulator started, it hanged with the black screen for a while before the splash screen appeared. The simulator displays the home screen with the installed app icon. The second attempt to launch the app is successful. Note: the black screen appears for iOS7 and iOS8 Simulators, the return to the home screen happens on iOS8 Sim only. h5. To reproduce 1. Create the default app with appcelerator services enabled 2. Run iOS Simulator h5. Actual result The black screen for a while, the splash screen and return to the home screen. h5. Expected result The application should be launched successfully ",21 TIMOB-17603,"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.",13 TIMOB-17604,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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-17675,"iOS8: Add support for SplitView on iPhones","iOS8 brings the UISplitViewController to iPhones: https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UISplitViewController_class/index.html *This means:* - {{Ti.UI.iPad.SplitWindow}} should be moved to {{Ti.UI.iOS.SplitWindow}} - The 4-year-old [MGSplitViewController|https://github.com/mattgemmell/MGSplitViewController] that is [used|https://github.com/appcelerator/titanium_mobile/blob/58198c641d77e17d156431666e80bae732b5c130/iphone/Classes/TiUIiPadSplitWindow.m#L56] now should probably be replaced by [UISplitViewController|https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UISplitViewController_class/index.html] I'm not sure what originally was the reason for using MG's instead of the official one? *NOTE:* Credits to Malcolm for bringing this up.",21 TIMOB-17676,"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,"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,"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,"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-17749,"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,"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,"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,"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,"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,"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,"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-17691,"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,"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,"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,"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,"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,"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,"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-17992,"Android: Stepping over the last line while debugging does not load the app","When breakpoints for an app is set in a manner that the app will only load on device once the break point is resumed, stepping over on the last line of the code will not allow the app to load on device/emulator. For eg. when breakpoint is inserted in a sample classic project, clicking on the resume option allows the app to load on device however clicking on step over option till the end of the file does not load the app on to device/emulator. This is not a regression as it is reproducible with Appcelerator studio 3.3.0 Steps to reproduce: 1. Create a sample classic app 2. Insert break points on 'win1.add(label1);' on app.js file 3. Debug on an android device/emulator 4. Click on resume 5. Debug again on device/emulator 6. Step over till the end of the file. Actual Result: 3. Break point is hit and a black screen is shown on device/emulator 4. The app loads on device/emulator and works as expected 5. Break point is hit and a black screen is shown 6. App does not load and continues showing black screen Expected Result: 6. App should load and should work as expected. When this is tested with iOS device and emulator, there is no issue and works as expected.",8 TIMOB-17702,"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,"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,"""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,"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-17706,"iOS: TTIDs change on TableView scroll","A customer is seeing incorrect TTIDs being detected on their tableview during a recording. The odd part is that the TTIDs are correctly defined when I look at the tableview before scrolling. After I scroll the table, the TTIDs seem to change. The table is defined as: {code} {code} After scrolling, I see that the last 3 rows in the second section have the TTIDs of the top rows in the first section. Is there an explanation for this? Unfortunately, the customer cannot share the source of the project, but they have given me an IPA that is able to be installed on one of our devices. SOASTA would like to discuss a solution for this with engineering. I will post their questions/requests in the comments.",8 TIMOB-17707,"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,"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,"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,"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,"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): android.content.ComponentName.(ComponentName.java:77) E/AndroidRuntime( 2450): android.content.Intent.(Intent.java:3813) E/AndroidRuntime( 2450): ti.modules.titanium.ui.WindowProxy.handleOpen(WindowProxy.java:128) E/AndroidRuntime( 2450): org.appcelerator.titanium.proxy.TiWindowProxy.handleMessage(TiWindowProxy.java:88) E/AndroidRuntime( 2450): ti.modules.titanium.ui.WindowProxy.handleMessage(WindowProxy.java:399) E/AndroidRuntime( 2450): android.os.Handler.dispatchMessage(Handler.java:98) E/AndroidRuntime( 2450): android.os.Looper.loop(Looper.java:136) E/AndroidRuntime( 2450): android.app.ActivityThread.main(ActivityThread.java:5017) E/AndroidRuntime( 2450): java.lang.reflect.Method.invokeNative(Native Method) E/AndroidRuntime( 2450): java.lang.reflect.Method.invoke(Method.java:515) E/AndroidRuntime( 2450): com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) E/AndroidRuntime( 2450): com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) E/AndroidRuntime( 2450): 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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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,"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-17793,"Windows Hybrid: console.log() fails when printing large string",NULL,3 TIMOB-17798,"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: org.appcelerator.titanium.util.TiResponseCache.peek(TiResponseCache.java:187) [ERROR] : TiDownloadManager: ti.modules.titanium.ui.widget.TiUIImageView$1.postDownload(TiUIImageView.java:119) [ERROR] : TiDownloadManager: org.appcelerator.titanium.util.TiDownloadManager$DownloadJob.run(TiDownloadManager.java:151) [ERROR] : TiDownloadManager: java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) [ERROR] : TiDownloadManager: java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) [ERROR] : TiDownloadManager: 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,"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,"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,"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,"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,"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,"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,"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,"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-17811,"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,"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-17813,"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,"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-17822,"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,"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-17831,"iOS - SQLite module throws warnings about deprecated API usage",NULL,3 TIMOB-17861,"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,"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,"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-17841,"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,"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-17845,"Windows: Detect Visual Studio installations",NULL,5 TIMOB-17846,"Windows: Detect Windows Phone SDK Versions",NULL,5 TIMOB-17847,"Windows: Detect Windows PowerShell Permissions",NULL,5 TIMOB-17848,"Windows: Detect Windows Phone Emulators",NULL,5 TIMOB-17849,"Windows: Detect Windows Phone Devices",NULL,5 TIMOB-17850,"Windows: Add ""Issue Detection"" to 'ti info'",NULL,5 TIMOB-17851,"Windows: Launch Emulator",NULL,8 TIMOB-17852,"Windows: Install app to Emulator",NULL,8 TIMOB-17853,"Windows: Proxy Emulator Log Statements",NULL,8 TIMOB-17854,"Windows: Connect to Device",NULL,8 TIMOB-17855,"Windows: Install app on Device",NULL,8 TIMOB-17856,"Windows: Proxy Device Log Statements",NULL,8 TIMOB-17865,"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-17868,"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-17990,"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-17890,"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,"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-17898,"Windows: Implement Ti.UI.AlertDialog",NULL,13 TIMOB-17899,"Windows: Implement Ti.Network.HTTPClient",NULL,21 TIMOB-17900,"Windows: Implement Ti.Network.TCPSocket",NULL,13 TIMOB-17901,"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,"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-17903,"Windows: Implement Ti.UI.TableView",NULL,21 TIMOB-17904,"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-17905,"Windows: Implement Ti.UI.Slider",NULL,13 TIMOB-17908,"Windows: Implement Ti.Geolocation",NULL,13 TIMOB-17909,"Windows: Implement Ti.UI.ScrollableView","See here: http://docs.appcelerator.com/titanium/3.0/#!/api/Titanium.UI.ScrollableView",21 TIMOB-17912,"Windows: Implement Ti.UI.TableViewSection",NULL,13 TIMOB-17913,"Windows: Implement Ti.Media.VideoPlayer","http://docs.appcelerator.com/titanium/3.0/#!/api/Titanium.Media.VideoPlayer https://msdn.microsoft.com/en-us/library/windows/apps/xaml/windows.ui.xaml.controls.mediaelement.aspx",21 TIMOB-17914,"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-17916,"Windows: Implement Ti.Media.AudioPlayer",NULL,21 TIMOB-17917,"Windows: Implement Ti.Media.AudioRecorder","Implement Ti.Media.AudioRecorder for the Windows platform, to achieve parity with iOS & Android. ",21 TIMOB-17918,"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-17923,"iOS: Complex non-composite layouts show before lay-out since 3.3.0","A few weeks ago I started noticing that a lot of apps where I used complex {{horizontal}} and {{vertical}} layouts were showing their children before they were layed out. I made a simple test case that showed this has been the case since 3.3.0 and is not related to iOS 8 which I first assumed. *NOTE:* In some occasions I've (as well as Jason) have seen the children not being layed out at all! h2. Test case Run the following test case again Titanium 3.3.0.GA or later: {code:javascript} var win = Ti.UI.createWindow({ backgroundColor: 'white' }); win.add(Ti.UI.createLabel({ text: 'Click' })); win.addEventListener('click', function(e) { var win = Ti.UI.createWindow({ backgroundColor: 'red', layout: 'vertical', }); win.addEventListener('click', function(e) { win.close(); }); for (var i = 0; i < 500; i++) { win.add(Ti.UI.createLabel({ top: (i === 0) ? 20 : 0, color: 'white', text: 'Line #' + (i + 1) })); } win.open(); }); win.open(); {code} h2. Attached videos The movies I recorded show clearly that the children show center-top (except the first label which has {{top:20}} before being layed out at their proper place. Before Titanium 3.3.x the children views didn't show up until they were layed out, which of course looks better. - {{323-710.mov}} Titanium 3.2.3 & iOS 7.1 (vertical) (/) - {{330-710.mov}} Titanium 3.3.0 & iOS 7.1 (vertical) (x) - {{330-710-horizontal.mov}} Titanium 3.3.0 & iOS 7.1 (horizontal) (x) - {{340-810.mov}} Titanium 3.4.0 & iOS 8.1 (vertical) (x) ",21 TIMOB-17924,"iOS: Upgrade titanium_debugger source code to 64-bit","Upgrading this to 64-bit: https://github.com/appcelerator/titanium_debugger/tree/master/ios. Also note comments about http://www.cocoanetics.com/2014/10/xcode-6-drops-armv7s/. Please review https://github.com/appcelerator/titanium_debugger/tree/travis which is currently failing, but can likely be fixed easily.",34 TIMOB-17925,"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,"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-17928,"iOS: Rebuild supported closed and open source modules for 64-bit","We need to update and re-build the following modules: h3. Commonly Used * ti.compression: https://github.com/appcelerator-modules/ti.compression * ti.imagefactory: https://github.com/appcelerator-modules/ti.imagefactory * ti.storekit: https://github.com/appcelerator-modules/ti.storekit * ti.styledlabel: https://github.com/appcelerator-modules/ti.styledlabel * ti.urbanAirship: https://github.com/appcelerator-modules/ti.urbanairship * ti.airprint: https://github.com/appcelerator-modules/ti.airprint * ti.paypal: https://github.com/appcelerator-modules/ti.paypal * ti.admob: https://github.com/appcelerator-modules/ti.admob h3. Packaged with the SDK * ti.touchid: https://github.com/appcelerator-modules/ti.touchid * ti.facebook: https://github.com/appcelerator-modules/ti.facebook * ti.map: https://github.com/appcelerator-modules/ti.map * TIMOB-18089 (Core Motion) * TIMOB-18090 (UrlSession) h3. Important Enterprise Modules * TIMOB-18091 (Encrypted Database) * com.appcelerator.apm: https://github.com/appcelerator-modules/com.appcelerator.apm * appcelerator.https: https://github.com/appcelerator-modules/appcelerator.https * ti.geofence: https://github.com/appcelerator-modules/ti.geofence * ti.ldap: https://github.com/appcelerator-modules/ti.ldap * ti.crypto: https://github.com/appcelerator-modules/ti.crypto _EDIT_ * Removed ti.inappbilling from the list since it's android only ",21 TIMOB-17929,"iOS: CLI - Remove any 32-bit only restrictions in Titanium CLI",NULL,13 TIMOB-19470,"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,"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,"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,"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,"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,"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,"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: com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:409) [ERROR] TiHttpClient: com.android.org.conscrypt.OpenSSLSocketImpl$SSLInputStream.(OpenSSLSocketImpl.java:661) [ERROR] TiHttpClient: com.android.org.conscrypt.OpenSSLSocketImpl.getInputStream(OpenSSLSocketImpl.java:632) [ERROR] TiHttpClient: org.apache.http.impl.io.SocketInputBuffer.(SocketInputBuffer.java:70) [ERROR] TiHttpClient: org.apache.http.impl.SocketHttpClientConnection.createSessionInputBuffer(SocketHttpClientConnection.java:83) [ERROR] TiHttpClient: org.apache.http.impl.conn.DefaultClientConnection.createSessionInputBuffer(DefaultClientConnection.java:170) [ERROR] TiHttpClient: org.apache.http.impl.SocketHttpClientConnection.bind(SocketHttpClientConnection.java:106) [ERROR] TiHttpClient: org.apache.http.impl.conn.DefaultClientConnection.openCompleted(DefaultClientConnection.java:129) [ERROR] TiHttpClient: org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:172) [ERROR] TiHttpClient: org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164) [ERROR] TiHttpClient: org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119) [ERROR] TiHttpClient: org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360) [ERROR] TiHttpClient: org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555) [ERROR] TiHttpClient: org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:653) [ERROR] TiHttpClient: org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:637) [ERROR] TiHttpClient: ti.modules.titanium.network.TiHTTPClient$ClientRunnable.run(TiHTTPClient.java:1328) [ERROR] TiHttpClient: 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: appcelerator.https.PinningTrustManager.checkServerTrusted(PinningTrustManager.java:84) [ERROR] TiHttpClient: com.android.org.conscrypt.OpenSSLSocketImpl.verifyCertificateChain(OpenSSLSocketImpl.java:613) [ERROR] TiHttpClient: com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method) [ERROR] TiHttpClient: 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,"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,"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,"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,"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-17965,"iOS: Feature Request to deny debugging to defend against runtime analysis and manipulation","h6.Feature Request Titanium to protect against debuggers and tools like Cycript to do runtime analysis and manipulation of iOS Applications. Briefly described in this article: http://resources.infosecinstitute.com/ios-application-security-part-23-defending-runtime-analysis-manipulation/",5 TIMOB-17972,"Windows: Implement Ti.UI.SearchBar","http://docs.appcelerator.com/titanium/3.0/#!/api/Titanium.UI.SearchBar https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.autosuggestbox.aspx",13 TIMOB-17986,"Windows: Implement Ti.UI.EmailDialog","See: http://docs.appcelerator.com/titanium/3.0/#!/api/Titanium.UI.EmailDialog * Add function: Ti.UI.createEmailDialog * Implement proxy for EmailDialog. h2. Implemented: h3. Properties: - bccRecipients - ccRecipients - messageBody - subject - toRecipients h3. Methods - isSupported( ) - open( properties ) h3. Events - complete ---- h2. Not Implemented: h3. Properties: - barColor - html h3. Methods - addAttachment( attachment ) h3. Constants - CANCELLED - FAILED - SAVED - SENT ",8 TIMOB-18099,"iOS: Parity: Clean up tab events","1. In Android we have the click event on the tab, but in iOS we do not. This event should be removed for Android as well, since it's confusing and quite useless as tabs can be selected by swipes. 2. In Android since 3.5.0 we have the tab selected and unselected events. In iOS we have focus/blur which fire exactly when the tab is selected and unselected. So iOS tab focus/blur should be renamed selected/unselected to match Android. 3. Tab focus/blur should be removed since we have selected/unselected which are much clearer, and since it makes no sense for tabs to be focused/blurred. Focus/blur events should occur on the Window or perhaps on the entire tab group, but not for ""tabs"" which are only used for selection and are not really a containing UI element. Note that for Android tab focus/blur fire in numerous cases, not just tab selection, and in all ""relevant"" cases we have Window focus/blur in any case so for tabs they're redundant.",3 TIMOB-17987,"iOS: Document start/stopVideoCapture methods","Evidently, these methods aren't in our documentation: http://docs.appcelerator.com/titanium/latest/#!/api/Titanium.Media but they are in code: https://github.com/appcelerator/titanium_mobile/blob/master/iphone/Classes/MediaModule.m#L888",3 TIMOB-17993,"iOS: Split CFBundleVersion and CFBundleShortVersionString ","Early on the growth of iOS development the use of CFBundleVersion and CFBundleShortVersionString interchangeably was a tolerable behavior. However, these are two unique keys. The problem with using them interchangeably was originally raised when the Testflight ad-hoc distribution service became available. With Apple now having acquired the Testflight platform and incorporating it into their iTunes Connect platform, it is time to separate these two keys and to use them properly. This will require changes to the CLI tooling and the exposing of these to the tiapp.xml editor in Studio. Parity: TISTUD-5088 Android: Expose versionCode and versionName in TiApp Editor View Reference: https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html {quote} CFBundleShortVersionString CFBundleShortVersionString (String - iOS, OS X) specifies the release version number of the bundle, which identifies a released iteration of the app. The release version number is a string comprised of three period-separated integers. The first integer represents major revisions to the app, such as revisions that implement new features or major changes. The second integer denotes revisions that implement less prominent features. The third integer represents maintenance releases. The value for this key differs from the value for CFBundleVersion, which identifies an iteration (released or unreleased) of the app. This key can be localized by including it in your InfoPlist.strings files. {quote} {quote} CFBundleVersion CFBundleVersion (String - iOS, OS X) specifies the build version number of the bundle, which identifies an iteration (released or unreleased) of the bundle. The build version number should be a string comprised of three non-negative, period-separated integers with the first integer being greater than zero. The string should only contain numeric (0-9) and period (.) characters. Leading zeros are truncated from each integer and will be ignored (that is, 1.02.3 is equivalent to 1.2.3). This key is not localizable. {quote}",8 TIMOB-19164,"iOS: textfield getValue() returns the misspelled text under iOS8","h2. Problem description The textfield function ""getValue()"" returns the wrong (old) value, if the autocorrection replace the misspelled word. h2. Steps to reproduce 1. Click into the textfield 2. Enter a misspelled word like ""asdjflkjsd"" 3. Click into the textfield as soon as the autocorrection appears 4. Click the button to alert the wrong misspelled textfield value again h2. Test case {code:lang=javascript|title=app.js} (function() { var win = Ti.UI.createWindow({backgroundColor:'#ffffff'}); var view = Ti.UI.createView({layout:'vertical'}); var button = Ti.UI.createButton({title:' Read textfield value ',top:20,borderRadius:5,borderColor:'#1C1C1C',backgroundColor:'#C0C0C0'}); var textfield = Ti.UI.createTextField({ borderStyle: Ti.UI.INPUT_BORDERSTYLE_ROUNDED, autocapitalization: Titanium.UI.TEXT_AUTOCAPITALIZATION_NONE, top: 70, height: 30, width:Titanium.UI.FILL }); var label = Ti.UI.createLabel({left:20,top:20,width:Titanium.UI.FILL,font:{fontSize:12}, text:'PROBLEM DESCRIPTION\n' +'The textfield function ""getValue()"" returns the wrong (old)value, if the autocorrection replace the misspelled word\n\n' +'STEPT TO REPRODUCE\n' +'1. Click into the textfield\n' +'2. Enter a misspelled word like ""asdjflkjsd""\n' +'3. Click into the textfield as soon as the autocorrection appears\n' +'4. Click the button to alert the wrong misspelled textfield value again.\n\n' +'ENVIRONMENT\n' +'Ti Mobile SDK: 3.4.0 GA, Ti Studio: 3.4.0.201409261227, iOS: 8.1 & 8.1.1, Device: iPhone 5 and 5S'}); button.addEventListener('click',function(e){ alert(textfield.getValue()); }); textfield.addEventListener('click',function(e){ if(textfield.getValue() !== ''){ alert(textfield.getValue()); } }); view.add(textfield); view.add(button); view.add(label); win.add(view); win.open(); })(); {code}",8 TIMOB-17997,"iOS: playing local file in AudioPlayer results in crash","Calling start() or play() on an AudioPlayer that has the url set to a local file results in a crash: {code} [DEBUG] : Application booted in 146.823049 ms [DEBUG] : -[__NSCFDictionary close]: unrecognized selector sent to instance 0x14ebef40 [ERROR] : The application has crashed with an uncaught exception 'NSInvalidArgumentException'. [ERROR] : Reason: [ERROR] : -[__NSCFDictionary close]: unrecognized selector sent to instance 0x14ebef40 [ERROR] : Stack trace: [ERROR] : [ERROR] : 0 CoreFoundation 0x26068c1f + 126 [ERROR] : 1 libobjc.A.dylib 0x33870c8b objc_exception_throw + 38 [ERROR] : 2 CoreFoundation 0x2606e039 + 0 [ERROR] : 3 CoreFoundation 0x2606bf57 + 714 [ERROR] : 4 CoreFoundation 0x25f9ddf8 _CF_forwarding_prep_0 + 24 [ERROR] : 5 MediaModule 0x0022316b MediaModule + 1692011 [ERROR] : 6 Foundation 0x26d77b5b + 1118 [ERROR] : 7 libsystem_pthread.dylib 0x33f33e93 + 138 [ERROR] : 8 libsystem_pthread.dylib 0x33f33e07 _pthread_start + 118 [ERROR] : 9 libsystem_pthread.dylib 0x33f31b90 thread_start + 8 [ERROR] : *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFDictionary close]: unrecognized selector sent to instance 0x14ebef40' [ERROR] : *** First throw call stack: [ERROR] : (0x26068c1f 0x33870c8b 0x2606e039 0x2606bf57 0x25f9ddf8 0x22316b 0x26d77b5b 0x33f33e93 0x33f33e07 0x33f31b90) {code} *Steps to reproduce issue*: 1. Create a project with the attached files 2. Launch the app on an iOS device and click 'play' 3. Notice that the app crashes, occasionally with the above error *Expected results*: The local file is played properly or no crash is witnessed if the file/method is unsupported. *Notes*: snippet for reference: {code} var audioPlayer = Ti.Media.createAudioPlayer({ url : 'toddle.mp3' }); var but = Ti.UI.createButton({ title : 'Play', top : 20, }); but.addEventListener('click', function(e) { audioPlayer.start(); alert("" Playing !!""); }); {code}",4 TIMOB-17998,"Android 5.0: In a two column picker the selection indicator does not match the postion of the selected item","h5.Description On an Android L device when using a two column picker the selection indicator and the selected item do not line up and the selected item appears lower than the indicator. This only happens on a Android L device, on a 4.4.2 device the two match up correctly. h5.Steps To Reproduce 1. Add the attached app.js to a project. 2. Build to h5.Actual Result The application matches screenshot AndroidLPicker h5.Expected Result The application should match screenshot 442Picker",8 TIMOB-23634,"iOS: Toolbar on TextField doesn't hide smoothly when calling blur","Setup: >Textfield with a Ti.UI.IOS.Toolbar with one button. >Click eventlistener on the button which calls .blur() on the textfield The keypad slides down, leaving the Toolbar at the top. When the keypad has slid off the page, only then does the Toolbar start to slide down. Here's a slow-mo GIF: http://i.stack.imgur.com/x2zc2.gif Sample code: Causes a noticeable flash for the user. {code} {code:title=index.js|borderStyle=solid|javascript} function doClick(e) { alert('touchEnabled = '+typeof(e.source.touchEnabled)); } $.index.open(); {code} ",2 TIMOB-18546,"LiveView: Incompatible with Node 0.12","After the fixes for TIMOB-18538 are applied, apps will still not build. The {{ti build}} command ends with this error: {code} [INFO] Skipping xcodebuild [INFO] Finished building the application in 1s 850ms /Users/admin/repos/titanium_skypanther/node_modules/longjohn/dist/longjohn.js:185 throw e; ^ Socket.socketErrorListener (_http_client.js:269:42),Socket.emit (events.js:107:17),net.js:451:14,process._tickCallback (node.js:355:11) {code} Removing the LiveView hook from my ~/.titanium/config.json file eliminates this error and apps build fine, indicating LiveView is the source of this error.",5 TIMOB-18550,"Set Node 0.10 as minimum supported version across CLI-related projects","Update the various products to specify Node 0.10.x as the minimum supported version, removing all references and checks for earlier Node versions. Projects include CLI, SDK, Alloy, LiveView, node-appc, node-ios-device, etc.",13 TIMOB-18551,"SDK: Set Node 0.10 as minimum supported version","Update the minimum supported version of Node to 0.10.x. Make sure to check for and update any version checks in the code as well as updating the package.json file.",5 TIMOB-18552,"node-appc: Set Node 0.10 as minimum supported version","Update the minimum supported version of Node to 0.10.x. Make sure to check for and update any version checks in the code as well as updating the package.json file.",5 TIMOB-18553,"LiveView: Set Node 0.10 as minimum supported version","Update the minimum supported version of Node to 0.10.x. Make sure to check for and update any version checks in the code as well as updating the package.json file.",5 TIMOB-18555,"CLI: Add mocha tests to verify the installed SDKs ","This is for adding unit tests in CLI to verify the installed SDKs detection mechanism. - Install or Mock up a couple of SDKs in a temp location. - Set the temp location as one of the location for SDKs. - Now, CLI should detect the new SDKs and the new temp location as a valid one. - Remove those temp SDKs - CLI should detect the change. We can also add unit tests to verify whether CLI is able to sort the SDKs in the correct order or not.",5 TIMOB-18556,"Android: Update Appcompat Libraries","Update Appcompat libraries.",3 TIMOB-18557,"Windows: Build fails with CMakeError 'Configuring incomplete, errors occurred'","h5.Description When building using SDK version 4.0.0.v20150211151855 the build fails with the the CMakeError *Configuring incomplete, errors occurred* {code} [WARN] CMake Error at CMakeLists.txt:41 (find_package): By not providing ""FindSQLite.cmake"" in CMAKE_MODULE_PATH this project has asked CMake to find a package configuration file provided by ""SQLite"", but CMake did not find one. Could not find a package configuration file provided by ""SQLite"" with any of the following names: SQLiteConfig.cmake sqlite-config.cmake Add the installation prefix of ""SQLite"" to CMAKE_PREFIX_PATH or set ""SQLite_DIR"" to a directory containing one of the above files. If ""SQLite"" provides a separate development package or SDK, be sure it has been installed. [INFO] -- Configuring incomplete, errors occurred! See also ""C:/Users/Windo_000/AppData/Local/Temp/testCommunity/wp.ARM/CMakeFiles/CMakeOutput.log"". {code} I have attached the build log and the CMake log If I step back to a SDK 4.0.0.v20150205101324 then the project builds fine. Any build using an SDK after this fails. h5.Steps to reproduce 0. Ensure you have Titanium SDK from master branch 1. Download the latest SDK using ti sdk install -b master -d 2. Create a new Windows project 3. Build the project h5.Actual Result The build will fail with a CMakeError h5.Expected Result The build should pass and deploy to device or emulator",2 TIMOB-18565,"Android: Support android *.aar libraries while building module","It will be nice to support android *.aar libraries while building module",8 TIMOB-18559,"iOS: TypeError: Arguments to path.join must be strings","This is a regression. When packaging for iOS, I see the below error. Xcode is still opened and the archive/package is still created, however. {code} [INFO] : Archiving debug symbols to /Users/ewieber/Library/Developer/Xcode/Archives/2015-02-12/universalIconSplash_10-38-52.xcarchive/dSYMs/universalIconSplash.app.dSYM [INFO] : Launching Xcode: /Applications/Xcode.app /usr/local/lib/node_modules/titanium/node_modules/longjohn/dist/longjohn.js:185 throw e; ^ TypeError: Arguments to path.join must be strings at path.js:360:15 at Array.filter (native) at exports.join (path.js:358:36) at /Library/Application Support/Titanium/mobilesdk/osx/4.0.0.v20150212085635/iphone/cli/hooks/package.js:94:34 at exithandler (child_process.js:635:7) at EventEmitter.emit (events.js:98:17) at maybeClose (child_process.js:743:16) at Socket. (child_process.js:956:11) --------------------------------------------- at exports.execFile (child_process.js:691:9) at exports.exec (child_process.js:578:18) at /Library/Application Support/Titanium/mobilesdk/osx/4.0.0.v20150212085635/iphone/cli/hooks/package.js:92:7 at /Library/Application Support/Titanium/mobilesdk/osx/4.0.0.v20150212085635/node_modules/async/lib/async.js:232:13 at /Library/Application Support/Titanium/mobilesdk/osx/4.0.0.v20150212085635/node_modules/async/lib/async.js:119:25 at /Library/Application Support/Titanium/mobilesdk/osx/4.0.0.v20150212085635/node_modules/async/lib/async.js:24:16 at /Library/Application Support/Titanium/mobilesdk/osx/4.0.0.v20150212085635/node_modules/async/lib/async.js:229:17 at /Library/Application Support/Titanium/mobilesdk/osx/4.0.0.v20150212085635/node_modules/async/lib/async.js:516:34 {code} *Steps To reproduce issue*: 1. Create a new project with SDK 4.0.0.v20150212104820 2. Package the project for iOS (either adhoc or for the store) 3. Notice the above error in the console *Expected results*: No error is shown *Notes*: 1. This is a regression as I do not see the error with 3.5.0.GA 2. I get this error with Xcode 6.1.1 as well as 6.2b5",3 TIMOB-18562,"Windows: Database module doesn't properly clean up ResultSets or guard against accessing fields after being closed","We need to do a better job of finalizing result sets for the user, doing so in destructors. We need to check the status of closing the DB to ensure we're really closing it. If a result set is closed and the user calls field, or fieldByName, it will cause a crash because we don't guard against accessing a finalized prepared statement.",5 TIMOB-18571,"iOS: Investigate including native extensions in a Titanium project","Investigate injecting native extensions into a titanium app at build time",21 TIMOB-18573,"CLI: When build tools are newer than supported range, warn & build rather than fail","TIMOB-18113 added the ability to specify a specific Android build tools level as well as failing when such tools are newer than the known-supported version. Instead, the tooling should clearly warn the user that they're using a newer version than what is known to work but the build should continue.",8 TIMOB-18581,"Windows: Implement cross-platform mapping of status codes to status text for HTTPClient","http://docs.appcelerator.com/titanium/3.0/#!/api/Titanium.Network.HTTPClient-property-statusText We currently implement this in the Windows subclass. But it's really just a standard mapping from integer http codes to the text describing that code. See http://www.restpatterns.org/HTTP_Status_Codes or http://httpstatus.es/",2 TIMOB-18588,"CLI: Remove BB from Titanium CLI",NULL,5 TIMOB-18589,"BlackBerry: Remove from SDK Distribution","Remove the packaging of the BlackBerry distribution from the regular SDK.",3 TIMOB-18594,"Cannot build after upgrade to 3.5.0","h4. Problem Description Whenever the user attempts to build a project after upgrading to titanium 3.5.0 they now receive this error message, however they can still build on 3.4.1 {code} C:\Users\pkulkarni\AppData\Roaming\npm\node_modules\titanium\node_modules\longjohn\dist\longjohn.js:185 throw e; ^ ChildProcess.emit (events.js:110:17),maybeClose (child_process.js:1008:16),Socket. (child_process.js:1176:11),Socket.emit (events.js:107:17),Pipe.close (net.js:476:12) [ERROR] Application Installer abnormal process termination. Process exit value was 1 {code} They have attempted reinstalling the SDK and the command below returns no response titanium build -p mobileweb -sdk 3.5.0.GA -log-level trace",3 TIMOB-18599,"Windows: Stub out remaining properties and methods on existing UI proxies for Corporate Directory app","The Corporate directory app uses opacity, animate(), and a series of images on a ImageView to generate a loading animation. We should at least stub out these properties and methods so that we don't crash when they're referenced.",5 TIMOB-18600,"LiveView: Building to an Android emulator fails with [LiveView] File Server unavailable. Host Unreachable","h5.Description When attempting to build to an Android emulator the build fails with. {code} [ERROR] : TiExceptionHandler: (main) [9499,9499] ----- Titanium Javascript Runtime Error ----- [ERROR] : TiExceptionHandler: (main) [1,9500] - In app.js:567,13 [ERROR] : TiExceptionHandler: (main) [1,9501] - Message: Uncaught Error: [LiveView] File Server unavailable. Host Unreachable @ 172.16.0.216:8324 [ERROR] : TiExceptionHandler: [LiveView] Please ensure your device and computer are on the same network and the port is not blocked. {code} I *do not believe this is a regression* as it has been reported in previous versions of LiveView To workaround just disable LiveView and the build will be fine Building to device with LiveView works fine and I am able to make changes with no errors Checking the log output shows that the LiveView server has started {code} [LiveView] version 1.0.7 [LiveView] File Server Started on Port 8324 [LiveView] Alloy project monitor started [LiveView] Event Server Started on Port 8323 {code} This issue is not reliant on a node version, it occurs in node 0.12 as well as 0.10.32 h5.Steps To Reproduce 1. Build to an Android emulator from Studio with LiveView enabled h5.Actual Result The build fails with the error above h5.Expected Result The build should not fail and LiveView should be working as expected",8 TIMOB-18601,"CLI: ti sdk install -b latest installs different version than ti sdk install latest","These commands should be equivalent: {{ti sdk install latest}} {{ti sdk install -b latest}} (or {{ti sdk install --branch latest}}) In my tests, however {{ti sdk install latest}} installs 3.5.0.GA {{ti sdk install -b latest}} installs 3.4.2.v20141125154126 ",5 TIMOB-18782,"Title text truncated on OptionDialog on Android","Long title text on the OptionDialog is truncated on android, but shown in full on iOS. The code to replicate the issue can be found at the following gist. https://gist.github.com/gllittler/0cf95651218a9cffb640",8 TIMOB-18607,"Windows: Convert current corporate directory app into example","The version we currently have in the Examples folder is out of date. We'll need to rebuild with alloy on windows and update the example with the generated files.",3 TIMOB-18608,"Android: Add ""link"" event to label for use with ""html"" and ""attributedString"" properties","For sample code and details please look at https://jira.appcelerator.org/browse/TIMOB-18499",5 TIMOB-18609,"Android: The number of log messages from closing a window increases every time a window is closed","h5.Description When building an application to device and then opening and closing a window the message 'Window: Window is closed normally'. If the window is opened and closed multiple times then the messaged is printed out equal to the number of times it has been opened and closed. This is *not a regression* as it occurs in 3.5.0.GA SDK The logging appears to be coming from line 72 in *android/modules/ui/src/js/window.js* If the app is packaged and installed onto device then the code at that line is not executed as the if statement does not trigger For example, see the below log output where I have opened and closed the window 3 times {code} [DEBUG] : Window: Checkpoint: postWindowCreated() [DEBUG] : Window: Window is closed normally. [DEBUG] : Window: Checkpoint: postWindowCreated() [DEBUG] : Window: Window is closed normally. [DEBUG] : Window: Window is closed normally. [DEBUG] : Window: Checkpoint: postWindowCreated() [DEBUG] : Window: Window is closed normally. [DEBUG] : Window: Window is closed normally. [DEBUG] : Window: Window is closed normally. {code} h5.Steps To Reproduce 1. Add the attached app.js to an existing project 2. Build the app to an Android device 3. Tap the button to open a window 4. Use the Android back button or the 'Close window button' on screen 5. Repeat steps 3 and 4 h5.Actual Result 4. The window will close '\[DEBUG] : Window: Window is closed normally.' will be printed in the console. As expected 5. For each time you repeat the above steps the number of log message will increase h5.Expected Result 5. There should only be one of the above log messages shown when a window is closed",8 TIMOB-18617,"iOS Debugger: Studio hangs with Ti SDK 4.0.0.XXX","Debugging an app in Titanium master (SDK 4.0.0.xxx) does not work from Studio. The app never launches.",8 TIMOB-18619,"Windows: Implement simple linear animations",NULL,13 TIMOB-18622,"Tooling: Organize parity report platforms","Re-organize the ordering in which the platforms are displayed in the parity report into : [iphone, ipad, android, windowsphone, blackberry, mobileweb]",3 TIMOB-18625,"Android: Remove or fix warnings in Titanium SDK","We have a number of warnings in the Titanium SDK for a variety of issues, including deprecation warnings, issues about raw types, etc. We should correct them # Import Titanium SDK Android projects into Eclipse. # No warnings or errors should appear.",3 TIMOB-18627,"iOS: Allow different deployment targets for extensions","Currently the deployment target set for an app, is also used when building extensions. This should be removed so that the deployment target can be set in the extension's xcode project.",1 TIMOB-18629,"CLI: Warn if using an unsupported Node version","Currently, if you upgrade to Node 0.12 and attempt to build with a pre-3.5.1 SDK, it will fail. This is expected by us, but confusing to the end user. To fix, we will warn the user that they should downgrade (or upgrade) to a supported node version # Check the root package.son file for the node range supported # Compare that against the node version installed. # If the installed range lies outside the supported range, print a *HIGHLY VISIBLE WARNING* that this node version may not work as expected and encourage them to upgrade (if older) or downgrade (if newer) to a supported node version.",8 TIMOB-18630,"iOS: Allow relative paths when pointing to an extension project","Currently the projectPath in does not accept ~ or relative paths. Add support.",5 TIMOB-18632,"CLI: Node 0.12: If the CLI is updated to 3.4.2 before the SDK is updated then you can't install the new SDK","h5.Description When upgrading to the latest versions of the CLI and SDK if the install process of the user, or Studio, is to first install the CLI and then install the SDK on their system then the user will be unable to upgrade the SDK without first reverting back to the previous version of the CLI. After installing Titanium@3.4.2-rc2 and attempting to run any ti commands the following will be printed out in the console. {code} Ewans-MacBook-Pro:Titanium eharris$ ti sdk Titanium Command-Line Interface, CLI version 3.4.2-rc2 Copyright (c) 2012-2015, Appcelerator, Inc. All Rights Reserved. Please report bugs to http://jira.appcelerator.org/ [ERROR] Titanium SDK 3.5.0.GA is incompatible with Node.js v0.12.0 You will need to install Node.js v0.10 in order to use this version of the Titanium SDK. {code} *Notes* This only occurs if the upgrade process is *Install CLI -> Install SDK* This only occurs if the Node version is *0.12* It is also possible to get into this state by installing the SDK and the CLI, then running ti sdk select 3.5.0.GA. If a user gets into this state then it is impossible for them to be get out of it without having to re-install the CLI h5.Steps To Reproduce 0. Set your ti sdk select to 3.5.0.GA, ti sdk select 3.5.0.GA 1. Install the latest Titanium CLI, \[sudo] npm install -g titanium@3.4.2-rc2 2. Install the latest SDK, ti sdk install -b 3_5_X -d h5.Actual Result 2. You will be unable to install the SDK, the command will fail with the above error, h5.Expected Result The SDK should be installed successfully with no error.",5 TIMOB-18633,"iOS: Allow launching WatchKit apps on the simulator","ios-sim needs to be updated to allow launching WatchKit apps in the simulator.",13 TIMOB-18635,"Android: Android SDK tools 24.1.2 is listed as not supported","h5.Description When running ti setup check under Android Environment->Tools if Android SDK Tools version 24.1.2 is installed on the system then it is listed as 'untested version 24.1.2; may or may not work'. This version has been tested by QE and no issues were found and the vendorDependencies should be updated to reflect this. h5.Steps To Reproduce 0. Ensure that Android SDK tools 24.1.2 is on your system by install via android sdk manager 1. Run ti setup check h5.Actual Result Under Android environment the SDK tools version will be listed as unsupported h5.Expected Result Under Android environment the SDK tools version should be listed as supported",3 TIMOB-18637,"Windows: Initial Map region isn't always obeyed","I'm seeing an initial location somewhere in the South Pacific Ocean, in the middle of water, for the following code example: {code:javascript} var Map = require('ti.map'); var win = Titanium.UI.createWindow({ backgroundColor: 'red' }); var mountainView = Map.createAnnotation({ latitude:37.390749, longitude:-122.081651, title:""Appcelerator Headquarters"", subtitle:'Mountain View, CA', pincolor:Map.ANNOTATION_RED, myid:1 // Custom property to uniquely identify this annotation. }); var mapview = Map.createView({ mapType: Map.NORMAL_TYPE, region: { latitude: 37.390749, longitude: -122.081651, latitudeDelta:0.00, longitudeDelta:0.00}, animate:true, regionFit:true, userLocation:true, annotations:[mountainView] }); win.add(mapview); win.open(); {code} I'm not sure if it's trying to set the region too early, using the wrong coordinates, or what.",5 TIMOB-18638,"Windows: Map Annotations don't always show up on the map","According to the Windows docs, MapIcons aren't guaranteed to be shown, nor are their titles. We also currently ignore the annotation color property. We may want to consider using an ImageView as the actual control instead of a MapIcon to try and ensure it's always shown. See https://msdn.microsoft.com/en-us/library/windows/apps/xaml/dn792121.aspx",8 TIMOB-18639,"Windows: Launching app in emulator is flaky","When building a windows app via the CLI, it sometimes launches fine on the first try. More often it will crash while showing the splash screen and you need to click through the emulator and try to re-launch. It can take several attempts to actually get it launched.",5 TIMOB-18899,"iOS: Support destructive alert style","The new iOS8 UIAlertViewController supports an destructive Ti.UI.AlertDialog style, which is specified just like the cancel property. {code} var win = Ti.UI.createWindow({ backgroundColor: ""#fff"" }); var button = Ti.UI.createButton({ title: ""Show destructive dialog"" }); var dialog = Ti.UI.createAlertDialog({ title: ""Proceed"", message: ""Do you really want to proceed?"", destructive: 0, cancel: 1, buttonNames: [""Destructive"", ""Cancel"", ""Proceed""] }); button.addEventListener(""click"", function() { dialog.show(); }); dialog.addEventListener(""click"", function(e) { Ti.API.info(e); }); win.add(button); win.open(); {code} Pull-Request: https://github.com/appcelerator/titanium_mobile/pull/6697",5 TIMOB-18668,"Windows:: JSExport API CreateObject() should be removed","Currently HAL has multiple ways to create JSExport object but basically following two API's are meant to do same thing. {code} auto object1 = js_context.CreateObject(); auto object2 = js_context.CreateObject(JSExport::Class()); {code} I found there's no reason to keep the first one. It actually has a issue around TIMOB-18461. ",8 TIMOB-18669,"Windows: Images in ListView laying out improperly","In the corporate directory app's directory view, the listing of sales engineers has a profile pic for each entry. Those images are mis-aligned.",5 TIMOB-18670,"Windows: Module generator doesn't generate setters for properties","The module generator is not generating the setter methods for properties, i.e. {code:cpp} virtual void set_color(const std::string& color) TITANIUM_NOEXCEPT; {code}",2 TIMOB-18671,"Windows: Module generator is using wrong name format for getters","The module generator is not generating the correct name pattern for property getters: i.e. ""color"" (incorrect) vs ""get_color"" (correct). Same for the equivalent js_* bridge methods.",1 TIMOB-18672,"Windows: Module generator is using JSValue return type for methods whose return type is void","If a method returns ""void"" according to the docs, we should declare the method as void as well, not returning JSValue.",1 TIMOB-18673,"Windows: CLI should assume default emulator when targeting emulator","The CLI prompts the user to select an emulator by default. We should assume the same default as the AppDeploy cmd uses (which is equivalent to 8-1-1 for us) - without prompting.",1 TIMOB-18674,"Windows: Analytics is crashing during second invocation of sendAnalytics method","Running the corporate directory app from the CLI, the app reliably crashes when it tries to send the app.feature event (after having sent an enroll event). Here's the output from the logs during launch: {code} [INFO] Connected to app -- Start application log ----------------------------------------------------- [INFO] creating instance of Analytics class [INFO] checking if database exists [INFO] databaseExists [INFO] creating database [INFO] createDatabase [INFO] sendAppEnrollEvent [INFO] createAppEnrollEvent [INFO] createAnalyticsEvent [INFO] postAnalyticsEvent [INFO] needsEnrollEvent [INFO] getProps [INFO] addEvent [INFO] getProps [INFO] Sequence: 0 [INFO] Inserting: {""type"":""ti.enroll"",""timestamp"":""2015-03-10T18:04:27.819Z"",""m id"":"""",""sid"":""{d13d8cb9-6d9e-4045-893c-fd6a87c0a0fd}"",""appGUID"":""__GUID__"",""payl oad"":""{\""app_name\"":\""__NAME__\"",\""oscpu\"":0,\""platform\"":\""windows\"",\""app_id\"" :\""__ID__\"",\""ostype\"":\""x86\"",\""osarch\"":\""x86\"",\""model\"":\""Microsoft Virtual\ "",\""deploytype\"":\""development\"",\""app_version\"":\""__VERSION__\"",\""tz\"":240,\""os \"":\""windowsphone\"",\""osver\"":\""0.0\"",\""sdkver\"":\""__TITANIUM_VERSION__\"",\""nett ype\"":\""LAN\""}"",""expandPayload"":true} [INFO] updateProps [INFO] sendAnalytics [INFO] updateProps [INFO] featureEvent [INFO] createEvent [INFO] createAnalyticsEvent [INFO] postAnalyticsEvent [INFO] addEvent [INFO] getProps [INFO] Sequence: 1 [INFO] Inserting: {""type"":""app.feature"",""timestamp"":""2015-03-10T18:04:27.820Z"", ""mid"":"""",""sid"":""{d13d8cb9-6d9e-4045-893c-fd6a87c0a0fd}"",""appGUID"":""__GUID__"",""pa yload"":""{\""eventName\"":\""windows.directory.viewed\""}"",""expandPayload"":true} [INFO] updateProps [INFO] sendAnalytics [INFO] Disconnected from app -- End application log ------------------------------------------------------- {code}",8 TIMOB-18675,"KitchenSink iOS: Camera with overlay throws warning","The KS tests with a camera overlay throw the below warning on open: {code} [WARN] : Unbalanced calls to begin/end appearance transitions for . {code} *Steps to reproduce issue*: 1. Launch KS 2. Open the Phone > Camera section. Then open any of the following sections: Camera Custom Overlay, Camera Overlay Webview, Camera Augmented Reality. 3. Notice the above warning in the console *Expected results*: No Warning is shown ",3 TIMOB-18676,"KitchenSink iOS: Ti.Geolocation throws deprecation warning in AR test","Opening the KS test of Augmented Reality throws the below warning: {code} [WARN] : The Ti.Geolocation.purpose property is deprecated. On iOS6 and above include the NSLocationUsageDescription key in your Info.plist {code} *Steps to reproduce issue*: 1. Launch KS 2. Navigate to Phone > Camera > Camera Augmented Reality 3. Notice the above warning in the console *Expected Results*: No warning is shown",3 TIMOB-18677,"Windows: Loading animations on corporate directory don't play nicely","The opening rocket animations for the corporate directory app don't play nicely.",13 TIMOB-18678,"Windows: HAL crashes on || syntax for method invocation","The Ti.Map.createView call is crashing in an odd way inside HAL in the profile.js controller once you've clicked on a person n the directory listing. Try out the Corporate example and click a person to see the crash. The root cause is the following syntax: {code:javascript} $.__views.mapview = (require(""ti.map"").createView || Ti.UI.createView)({ }); {code} Changing it to a straight up createView call doesn't trigger the issue: {code:javascript} $.__views.mapview = require(""ti.map"").createView({ }); {code}",8 TIMOB-18679,"iOS: HttpClient timeout on POST request to a HTTPS server","I'm working on a Titanium Classic Mobile project that needs to get data from SOAP services that are hosted in a https server. I'm using [this suds2 library |https://github.com/benbahrenburg/Suds2] as a helper to construct the xml request. The project was working fine with sdk 3.2.3 but I need to update it because of [this Apple restriction|https://developer.apple.com/news/?id=12172014b] so I basically need to compile with sdk 3.5.0. After sdk 3.3.0 the httpClient responds with a timeout error, so it looks like the request never leaves the client. This problem was pointed in [this issue|https://jira.appcelerator.org/browse/TIMOB-17865] before, I added a comment there too. I'm aware of Vishal Duggal comment in that post, mentioning all the stuff that changed in the httpClient, and I think that was the reason that ticket was closed, but I'm not sending a GET request so that comment does not apply in this case. In order to reproduce this problem I will recommend to use sdk 3.2.3 to show that the code was working fine and then switch to 3.5.0 to show the issue. Follow these steps to reproduce the problem: 1. Create a new Titanium Classic project targeting iOS with 3.2.3 sdk. 2. Create a new file in Resources directory and name it suds2.js and paste the following code taken from the source mentioned above: {code:title=/Resources/suds2.js|borderStyle=solid} /*jslint maxerr:1000 */ /** * * * Sud2 is forked from Kevin Whinnery's suds.js project * Updates to Suds2 can be found at https://github.com/benbahrenburg/Suds2 * * Suds: A Lightweight JavaScript SOAP Client * Copyright: 2009 Kevin Whinnery (http://www.kevinwhinnery.com) * License: http://www.apache.org/licenses/LICENSE-2.0.html * Source: http://github.com/kwhinnery/Suds */ var SudsClient = function(_options) { //A generic extend function - thanks MooTools function extend(original, extended) { for (var key in (extended || {})) { if (original.hasOwnProperty(key)) { original[key] = extended[key]; } } return original; } function endWith(str,suffix){ str = str +''; var lastIndex = str.lastIndexOf(suffix); return (lastIndex != -1) && (lastIndex + suffix.length == str.length); }; //Check if an object is an array function isArray(obj) { return Object.prototype.toString.call(obj) == '[object Array]'; } //Grab an XMLHTTPRequest Object function getXHR() { return Titanium.Network.createHTTPClient({ validatesSecureCertificate : false, timeout: 5000 }); } //Parse a string and create an XML DOM object function xmlDomFromString(_xml) { var xmlDoc = Titanium.XML.parseString(_xml); return xmlDoc; }; // Convert a JavaScript object to an XML string - takes either an function convertToXml(_obj, namespacePrefix) { var xml = ''; if (isArray(_obj)) { for (var i = 0; i < _obj.length; i++) { xml += convertToXml(_obj[i], namespacePrefix); } } else { //For now assuming we either have an array or an object graph for (var key in _obj) { if (namespacePrefix && namespacePrefix.length) { xml += '<' + namespacePrefix + ':' + key + '>'; } else { xml += '<'+key+'>'; } if (isArray(_obj[key]) || (typeof _obj[key] == 'object' && _obj[key] != null)) { xml += convertToXml(_obj[key]); } else { xml += _obj[key]; } if (namespacePrefix && namespacePrefix.length) { xml += ''; } else { xml += ''; } } } return xml; } // Client Configuration var config = extend({ endpoint:'http://localhost', targetNamespace: 'http://localhost', envelopeBegin: '', envelopeEnd: '', headerBegin: '', headerNode:'head', headerEnd: '', timeout : 5000, includeNS : true, addTargetSchema : false, ns:'ns0' },_options); function wrapNS(nsOnly){ if(config.includeNS){ return ((nsOnly) ? config.ns : (config.ns + ':')); }else{ return ''; } }; function addTargetSchema(){ if(config.addTargetSchema){ var temp = config.targetNamespace; if(endWith(config.targetNamespace,'/')){ temp = temp.substr(0,(temp.length -1)); } return ' xmlns=""' + temp + '""'; }else{ return ''; } }; // Invoke a web service this.invoke = function(_soapAction,_body,_callback,_header,_callbackError) { //Build request body var body = _body; var header = _header; //Allow straight string input for XML body - if not, build from object if (typeof body !== 'string') { body = '<' + wrapNS(false) +_soapAction + addTargetSchema() + '>'; body += convertToXml(_body, wrapNS(true)); body += ''; } var ebegin = config.envelopeBegin; config.envelopeBegin = ebegin.replace('PLACEHOLDER', config.targetNamespace); //Build Soapaction header - if no trailing slash in namespace, need to splice one in for soap action var soapAction = ''; if (config.targetNamespace.lastIndexOf('/') != config.targetNamespace.length - 1) { soapAction = config.targetNamespace+'/'+_soapAction; } else { soapAction = config.targetNamespace+_soapAction; } //POST XML document to service endpoint var xhr = getXHR(); xhr.onload = function() { _callback.call(this, this.responseText); }; xhr.onerror = function(e) { //_callbackError.call(this, e); Ti.API.info(""error"" + JSON.stringify(e)); }; //xhr.setTimeout(config.timeout); var sendXML = ''; if(!header) { sendXML = config.envelopeBegin+config.bodyBegin+body+config.envelopeEnd; } else { //Allow straight string input for XML body - if not, build from object if (typeof header !== 'string') { header = '<'+_soapAction+' xmlns=""'+config.targetNamespace+'"">'; header += convertToXml(_header); header += ''; } sendXML = config.envelopeBegin+config.headerBegin+header+config.headerEnd+config.bodyBegin+body+config.envelopeEnd; } xhr.open('POST', config.endpoint); xhr.setRequestHeader('Content-Type', 'text/xml'); xhr.setRequestHeader('SOAPAction', soapAction); if (config.authorization !== undefined) { xhr.setRequestHeader('Authorization', 'Basic ' + config.authorization); } Ti.API.info(""endpoit "" + config.endpoint); xhr.send(config.envelopeBegin+body+config.envelopeEnd); }; }; module.exports = SudsClient; {code} 3. Add this code to the app.js file: {code:title=/Resources/app.js|borderStyle=solid} var win = Ti.UI.createWindow({ backgroundColor: 'white' }); var label = Ti.UI.createLabel({ }); var config = { endpoint:""https://cajanet.com:9443/CajaAhorro/services/WebServiceImpl?wsdl"", targetNamespace: 'http://services.data.cajaAhorro.isi.com.mx', includeNS : false, addTargetSchema : true }; var sudsModule = require('suds2'); var sudsClient = new sudsModule(config); sudsClient.invoke('logOff', {strClaveUsu: 19844}, function(xmlDoc) { Ti.API.info(""Response "" + xmlDoc); label.text = xmlDoc; return; } ); win.add(label); win.open(); {code} 5. Run the project. You should be able to see the response XML in the label added to the window showing that the code is working. 6. To reproduce the timeout error just change the sdk to a newer one, let's say 3.5.0 and run the project again. You will see this error on the console: {code:javascript} {""type"":""error"",""source"":{""url"":""https://cajanet.com:9443/CajaAhorro/services/WebServiceImpl?wsdl"",""method"":""POST"",""timeout"":5000,""validatesSecureCertificate"":false},""code"":-1001,""error"":""The request timed out."",""success"":false} {code} I created a [question about this problem|https://developer.appcelerator.com/question/181272/httpclient-not-working-for-ios-after-sdk-330-for-consuming-a-soap-service-over-https] in the forum too because I finished all my resources looking for an answer. I attached a project with all the resources described above. Please consider to take a look at this, I know that SOAP and XML sucks but it's not my fault that my client's infrastructure is built on this. Thank you for your time.",8 TIMOB-18682,"Windows: ListView header and grouping isn't working","The ListView implementation we have isn't respecting the grouping of people by first character of last name, nor is it showing any header.See https://github.com/appcelerator-se/corporate-directory for screenshots of what the iOS version looks like.",13 TIMOB-18683,"Parity report: Ignore platform specific APIs from Total API count","Don't include platform specific APIs in the Total API count and platform percentage.",2 TIMOB-18698,"Windows: Fix Mocha test failures for XML module","http://studio-jenkins.appcelerator.org/job/titanium_mobile_windows/lastCompletedBuild/testReport/ Right now, I see failures for: {code} Titanium.XML.xmlNodeListChildren 0 ms 4 Titanium.XML.xmlNodeListElementsByTagName 0 ms 4 Titanium.XML.apiXmlNodeReplaceChild 0 ms 4 Titanium.XML.apiXmlNodeRemoveChild 0 ms 4 Titanium.XML.apiXmlNodeNormalize 0 ms 4 Titanium.XML.apiXmlNodeInsertBefore 0 ms 4 Titanium.XML.apiXmlNodeHasChildNodes 0 ms 4 Titanium.XML.apiXmlNodeHasAttributes 0 ms 4 Titanium.XML.apiXmlNodeCloneNode 0 ms 4 Titanium.XML.apiXmlNodeAppendChild 0 ms 4 Titanium.XML.apiXmlDocumentImportNode 0 ms 4 Titanium.XML.apiXmlDocumentGetElementsByTagNameNS 0 ms 4 Titanium.XML.apiXmlDocumentGetElementsByTagName 0 ms 4 Titanium.XML.apiXmlDocumentGetElementById 0 ms 4 Titanium.XML.xmlSerialize 0 ms 4 Titanium.XML.xmlCDataAndEntities 0 ms 4 Titanium.XML.xmlNodeCount 0 ms 4 Titanium.XML.xmlNodes 0 ms 4 Titanium.XML.soap 0 ms 4 Titanium.XML.documentParsing {code}",13 TIMOB-18699,"Windows: Fix Mocha test failures for Filesystem module","http://studio-jenkins.appcelerator.org/job/titanium_mobile_windows/lastCompletedBuild/testReport/ Right now, I see failures for: {code} Titanium.Filesystem.createTempFile 0 ms 4 Titanium.Filesystem.createTempDirectory 0 ms 4 Titanium.Filesystem.File.copy_move 0 ms 4 Titanium.Filesystem.File.copy 0 ms 4 Titanium.Filesystem.File.read 0 ms 4 Titanium.Filesystem.File.createFile_and_deleteFile 0 ms 4 Titanium.Filesystem.File.create_and_deleteDirectory 0 ms 4 Titanium.Filesystem.File.modificationTimestamp 0 ms 4 Titanium.Filesystem.File.createTimestamp {code}",8 TIMOB-18700,"Windows: Fix Mocha test failures for LayoutEngine","http://studio-jenkins.appcelerator.org/job/titanium_mobile_windows/lastCompletedBuild/testReport/ Right now, I see failures for: {code} Titanium.UI.Layout.scrollViewWithLargeVerticalLayoutChild 0 ms 4 Titanium.UI.Layout.scrollViewWithSIZE 0 ms 4 Titanium.UI.Layout.systemMeasurement 0 ms 4 Titanium.UI.Layout.sizeFillConflict 0 ms 4 Titanium.UI.Layout.fillInVerticalLayout 0 ms 4 Titanium.UI.Layout.zIndexMultiple 0 ms 4 Titanium.UI.Layout.topPrecedence 0 ms 4 Titanium.UI.Layout.heightPrecedence 0 ms 4 Titanium.UI.Layout.leftPrecedence 0 ms 4 Titanium.UI.Layout.widthPrecedence 0 ms 4 Titanium.UI.Layout.undefinedBottom 0 ms 4 Titanium.UI.Layout.undefinedHeight 0 ms 4 Titanium.UI.Layout.undefinedRight 0 ms 4 Titanium.UI.Layout.undefinedCenter 0 ms 4 Titanium.UI.Layout.undefinedLeft 0 ms 4 Titanium.UI.Layout.undefinedWidth 0 ms 4 Titanium.UI.Layout.viewError 0 ms 4 Titanium.UI.Layout.viewWidth 0 ms 4 Titanium.UI.Layout.viewCenter 0 ms 4 Titanium.UI.Layout.viewTop 0 ms 4 Titanium.UI.Layout.viewLeft 0 ms 4 Titanium.UI.Layout.viewSizeAndRectPx {code}",13 TIMOB-18704,"Windows: Support custom fonts","the corporate directory uses a custom font packaged with the app. We need to be able to support loading this custom font as per http://docs.appcelerator.com/titanium/3.0/#!/guide/Custom_Fonts and https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.media.fontfamily.aspx ",8 TIMOB-18707,"Windows: Support Ti.UI.View border* properties","http://docs.appcelerator.com/titanium/3.0/#!/api/Titanium.UI.View-property-borderColor http://docs.appcelerator.com/titanium/3.0/#!/api/Titanium.UI.View-property-borderRadius http://docs.appcelerator.com/titanium/3.0/#!/api/Titanium.UI.View-property-borderWidth Looks like the simplest way to achieve this stuff is to add the components underneath a Border: https://msdn.microsoft.com/en-us/windows/windows.ui.xaml.controls.border http://stackoverflow.com/questions/16341788/how-to-clip-content-with-rounded-corners-in-windows-store-app",8 TIMOB-18711,"CLI: Modify authentication and analytics in Titanium CLI","In order to aid in integration with the new methods for authentication in use by appcelerator CLI, some changes need to be made to the analytics and authentication in the Titanium CLI. 1) Pass token (process environment) to Titanium 2) Select a fixed User ID for PEM to handle analytics 3) Pass a new endpoint to return S3 bucket URL for future modification to registry URL 4) Stub login logout and make these no ops ",5 TIMOB-18712,"Facebook module: upgrade iOS Facebook SDK and improve requestDialog","There is a request on github that we should expose the 'resultURL' from presentRequestDialog method. Also, we should upgrade the Facebook sdk in the iOS module from 3.21.1 to 3.23.1. {code} var fb = require('facebook'); var win = Ti.UI.createWindow({ title: 'RequestDialog', backgroundColor:'#fff', fullscreen: false }); var requestDialog = Ti.UI.createButton({ title: 'Request Dialog', top: 180, left: 10, right: 10, height: 40 }); requestDialog.addEventListener('click', function() { fb.presentSendRequestDialog( {message: 'Go to https://appcelerator.com/'}, {data: ""{\""badge_of_awesomeness\"":\""1\"","" + ""\""social_karma\"":\""5\""}""}); }); fb.addEventListener('requestDialogCompleted', function(e) { if (e.success) { alert('Request dialog completed. Returned URL is ' + e.resultURL); } else if (e.cancelled) { alert('Request dialog cancelled'); } else { alert('error ' + e.error); } }); win.add(requestDialog); win.open(); {code}",5 TIMOB-18713,"KitchenSink: Upgrade the Facebook module and example","Facebook module has been upgraded. Need to add/replace the Facebook module in the Kitchen Sink as well as the examples.",3 TIMOB-18887,"Android: Wrong implementation of TiResponseCache may cause occasional crashes in Lollipop","I was getting occasional crashes in my titanium module when downloading files using HttpUrlConnection on a Lollipop device. Tracing this to okhttp (the http client used in android 5), I posted a bug report (see: https://code.google.com/p/android/issues/detail?id=160522) There is a bug in okhttp where they don't handle null pointer correctly, which is returned from TiCacheResponse.getHeaders() or its null key's value, but the fact is that it shouldn't return null in the first place. This all comes from the way the cached header's multimap assumes that the status is in the null key at position 0 (see: http://developer.android.com/reference/java/net/URLConnection.html#getHeaderFields%28%29) For a full explanation of the cause see: https://code.google.com/p/android/issues/detail?id=160522#c5 Partial stack dump of the problem: {quote} Attempt to invoke virtual method 'boolean java.lang.String.startsWith(java.lang.String)' on a null object reference java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.startsWith(java.lang.String)' on a null object reference at com.android.okhttp.internal.http.StatusLine.(StatusLine.java:24) at com.android.okhttp.Response$Builder.statusLine(Response.java:419) at com.android.okhttp.internal.http.JavaApiConverter.createOkResponse(JavaApiConverter.java:116) at com.android.okhttp.internal.http.ResponseCacheAdapter.get(ResponseCacheAdapter.java:53) at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:269) at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:373) at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:323) at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:491) at com.android.okhttp.internal.http.DelegatingHttpsURLConnection.getResponseCode(DelegatingHttpsURLConnection.java:105) at com.android.okhttp.internal.http.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:25) {quote}",5 TIMOB-18715,"CLI: Build errors out if the SDK version in the tiapp.xml & the SDK selected in CLI are different","h5.Steps to reproduce: 1. Make sure the SDK version in your tiapp.xml & the SDK selected in CLI are different. 2. Try to build the app. h5.Actual Result: 1. The build errors out after the ""Forking correct SDK command"". {code} Lokeshs-MacBook-Pro:mapv2ModuleTest lokeshchoudhary$ ti build -p android -T emulator Titanium Command-Line Interface, CLI version 4.0.0-alpha, Titanium SDK version 4.0.0.v20150317234215 Copyright (c) 2012-2015, Appcelerator, Inc. All Rights Reserved. Please report bugs to http://jira.appcelerator.org/ [WARN] [WARN] Android Build Tools 22 are too new and may or may not work with Titanium. [WARN] If you encounter problems, select a supported version with: [WARN] ti config android.buildTools.selectedVersion ##.##.## [WARN] where ##.##.## is a version in /Users/lokeshchoudhary/Desktop/android-sdk-macosx/build-tools that is <=21.x [INFO] tiapp.xml set to 3.5.1.GA, but current Titanium SDK set to 4.0.0.v20150317234215 [INFO] Forking correct SDK command: ""/usr/local/bin/node"" ""/usr/local/bin/ti"" ""build"" ""--sdk"" ""3.5.1.GA"" ""--config-file"" ""/Users/lokeshchoudhary/.titanium/config.json"" ""--platform"" ""android"" ""--project-dir"" ""/Users/lokeshchoudhary/Desktop/workspaces/new_workspace/mapv2ModuleTest"" ""--log-level"" ""trace"" ""--android-sdk"" ""/Users/lokeshchoudhary/Desktop/android-sdk-macosx"" ""--target"" ""emulator"" [ERROR] Error {code} h5.Expected Result: 1. The build should not fail & the app should build successfully. ",3 TIMOB-18719,"Windows: Implement Ti.Geolocation geocoding methods","Note that each method returns a specialized Object as argument to the callback function. We'll need to wrap it in a struct as we do for Font/Point/Dimension. Additionally, the reverseGeocoder response object has a specialized property value that should also be a struct. h2. Methods - forwardGeocoder http://docs.appcelerator.com/titanium/3.0/#!/api/ForwardGeocodeResponse - reverseGeocoder http://docs.appcelerator.com/titanium/3.0/#!/api/ReverseGeocodeResponse http://docs.appcelerator.com/titanium/3.0/#!/api/GeocodedAddress {code} forwardGeocoder( address, callback ) : void Resolves an address to a location. Parameters address : String (optional) address to resolve. callback : Callback (optional) Function to invoke on success or failure. Returns void ----------- reverseGeocoder( latitude, longitude, callback ) : void Tries to resolve a location to an address. The callback receives a ReverseGeocodeResponse object. If the request is successful, the object includes one or more addresses that are possible matches for the requested coordinates. Parameters latitude : Number (optional) Latitude to search, specified in decimal degrees. longitude : Number (optional) Longitude to search, specified in decimal degrees. callback : Callback (optional) Function to invoke on success or failure. Returns void {code}",5 TIMOB-18720,"Windows: Generate Ti.Geolocation module stub","This involves using our module generator and stubbing out the full API of the module. We should have all the methods and properties set up in TitaniumKit with appropriate getters/setters, and have stubs to fill in for the Windows subclass' actual implementation. h2. Constants - ACCURACY_BEST R O - ACCURACY_BEST_FOR_NAVIGATION R O - ACCURACY_HIGH R O - ACCURACY_HUNDRED_METERS R O - ACCURACY_KILOMETER R O - ACCURACY_LOW R O - ACCURACY_NEAREST_TEN_METERS R O - ACCURACY_THREE_KILOMETERS R O - ACTIVITYTYPE_AUTOMOTIVE_NAVIGATION R O - ACTIVITYTYPE_FITNESS R O - ACTIVITYTYPE_OTHER R O - ACTIVITYTYPE_OTHER_NAVIGATION R O - AUTHORIZATION_ALWAYS R O - AUTHORIZATION_AUTHORIZED R O - AUTHORIZATION_DENIED R O - AUTHORIZATION_RESTRICTED R O - AUTHORIZATION_UNKNOWN R O - AUTHORIZATION_WHEN_IN_USE R O - ERROR_DENIED R O - ERROR_HEADING_FAILURE R O - ERROR_LOCATION_UNKNOWN R O - ERROR_NETWORK R O - ERROR_REGION_MONITORING_DELAYED R O - ERROR_REGION_MONITORING_DENIED R O - ERROR_REGION_MONITORING_FAILURE R O - ERROR_TIMEOUT R O - PROVIDER_GPS R O - PROVIDER_NETWORK R O - PROVIDER_PASSIVE R O h2. Properties - accuracy - activityType - distanceFilter - hasCompass R O - headingFilter - lastGeolocation R O - locationServicesAuthorization - locationServicesEnabled R O - pauseLocationUpdateAutomatically - purpose - showCalibration - trackSignificantLocationChange h2. Methods - forwardGeocoder - getAccuracy - getActivityType - getCurrentHeading - getCurrentPosition - getDistanceFilter - getHasCompass - getHeadingFilter - getLastGeolocation - getLocationServicesAuthorization - getLocationServicesEnabled - getPauseLocationUpdateAutomatically - getPurpose - getShowCalibration - getTrackSignificantLocationChange - reverseGeocoder - setAccuracy - setActivityType - setDistanceFilter - setHeadingFilter - setLocationServicesAuthorization - setPauseLocationUpdateAutomatically - setPurpose - setShowCalibration - setTrackSignificantLocationChange h2. Events - authorization - calibration - heading - location - locationupdatepaused - locationupdateresumed",5 TIMOB-18721,"Windows: Hook up Ti.Geolocation events","This ticket is to fire the relevant events when applicable for the module. h2. Events - authorization - calibration - heading - location - locationupdatepaused - locationupdateresumed",5 TIMOB-18722,"Windows: Implement Ti.Geolocation constants, properties and accessor methods","This is to ensure we have proper setters/getters set up in TitaniumKit (likely already done for us by stub generation), and then to hook up the relevant properties in the Windows subclass - typically overriding some setters to take action. h2. Constants - ACCURACY_BEST R O - ACCURACY_BEST_FOR_NAVIGATION R O - ACCURACY_HIGH R O - ACCURACY_HUNDRED_METERS R O - ACCURACY_KILOMETER R O - ACCURACY_LOW R O - ACCURACY_NEAREST_TEN_METERS R O - ACCURACY_THREE_KILOMETERS R O - ACTIVITYTYPE_AUTOMOTIVE_NAVIGATION R O - ACTIVITYTYPE_FITNESS R O - ACTIVITYTYPE_OTHER R O - ACTIVITYTYPE_OTHER_NAVIGATION R O - AUTHORIZATION_ALWAYS R O - AUTHORIZATION_AUTHORIZED R O - AUTHORIZATION_DENIED R O - AUTHORIZATION_RESTRICTED R O - AUTHORIZATION_UNKNOWN R O - AUTHORIZATION_WHEN_IN_USE R O - ERROR_DENIED R O - ERROR_HEADING_FAILURE R O - ERROR_LOCATION_UNKNOWN R O - ERROR_NETWORK R O - ERROR_REGION_MONITORING_DELAYED R O - ERROR_REGION_MONITORING_DENIED R O - ERROR_REGION_MONITORING_FAILURE R O - ERROR_TIMEOUT R O - PROVIDER_GPS R O - PROVIDER_NETWORK R O - PROVIDER_PASSIVE R O h2. Properties - accuracy - activityType - distanceFilter - hasCompass R O - headingFilter - lastGeolocation R O - locationServicesAuthorization - locationServicesEnabled R O - pauseLocationUpdateAutomatically - purpose - showCalibration - trackSignificantLocationChange h2. Methods - getAccuracy - getActivityType - getDistanceFilter - getHasCompass - getHeadingFilter - getLastGeolocation - getLocationServicesAuthorization - getLocationServicesEnabled - getPauseLocationUpdateAutomatically - getPurpose - getShowCalibration - getTrackSignificantLocationChange - setAccuracy - setActivityType - setDistanceFilter - setHeadingFilter - setLocationServicesAuthorization - setPauseLocationUpdateAutomatically - setPurpose - setShowCalibration - setTrackSignificantLocationChange",5 TIMOB-18723,"Windows: Implement Ti.Geolocation getCurrentHeading and getCurrentPosition methods","http://docs.appcelerator.com/titanium/3.0/#!/api/Titanium.Geolocation h2. Methods - getCurrentHeading http://docs.appcelerator.com/titanium/3.0/#!/api/HeadingResponse http://docs.appcelerator.com/titanium/3.0/#!/api/HeadingData - getCurrentPosition http://docs.appcelerator.com/titanium/3.0/#!/api/LocationResults http://docs.appcelerator.com/titanium/3.0/#!/api/LocationCoordinates http://docs.appcelerator.com/titanium/3.0/#!/api/LocationProviderDict Note that the responses use special objects, we should use structs to hold them like we do for Point/Dimension/Font/etc. Additionally, those objects hold other specialized properties that should _also_ be represented by structs. {code} getCurrentHeading( callback ) : void Retrieves the current compass heading. Parameters callback : Callback (optional) Function to invoke on success or failure of obtaining the current heading. Returns void -------------- getCurrentPosition( callback ) : void Retrieves the last known location from the device. On Android, the radios are not turned on to update the location, and a cached location is used. On iOS the radios may be used if the location is too ""old"". Parameters callback : Callback (optional) Function to invoke on success or failure of obtaining the current location. Returns void {code}",5 TIMOB-18724,"Windows::HTTPClient crashes on firing onreadystatechange after being GCed","When running the mocha tests, I'm seeing some bad behavior from HTTPclient. We fire off requests in tests and continue on and eventually in a a later test (typically the layout suite) we'll get an error stemming from the HTTPClient firing an onreadystatechange callback: {code} Unhandled exception at 0x6B83D4C6 (HAL.dll) in NMocha.exe: 0xC0000005: Access violation reading location 0xDDDDDDDD. {code} It's in HTTPClient::onreadystatechange in Titaniumkit, where it's testing if the callback is a function. The issue is likely because we've long moved on from the test where the httpclient was generated - I'm thinking maybe it was GCed and we didn't properly cancel and clean up in our destructor. The request was continuing in an async chain. My best guess is that we need to cancel all outstanding requests when the Windows impl desturctor hits, and null out the callback objects up in the TitaniumKit destructor?",5 TIMOB-18728,"Android: Date picker Can't Select Date after year 2100AD","Android: Date picker Can't Select Date after year 2100AD h5.Steps to reproduce: 1.Run the following code in classic mobile project. {code:title=app.js} Ti.UI.backgroundColor = 'white'; var win = Ti.UI.createWindow({ exitOnClose: true, layout: 'vertical' }); var picker = Ti.UI.createPicker({ type:Ti.UI.PICKER_TYPE_DATE, minDate:new Date(2009,0,1), maxDate:new Date(2200,4,1), value:new Date(2015,2,23), top:50, accessablityLabel: ""data picker"" }); win.add(picker); win.open(); picker.addEventListener('change',function(e){ Ti.API.info(""User selected date: "" + e.value.toLocaleString()); }); {code} h5.Expect Result: Date should be available to select until the max value h5.Actual Result: Date only available to 2100AD, no matter what max value set. h5.Use case: For Thailand Buddhist, the year is 543 behind Gregorian year. That is why we need select date after 2100AD. h5.N.B Only happened in android device, iOS works well. ",5 TIMOB-18729,"Windows: Destructor of Label and Module classes cause crashes related to std::unordered_map fields","When running the ti.lui.layout.test section of our mocha tests, after the tests we close a window we opened. This is causing Gc to run and destruct a number of objects. The Label and Module classes are crashing during their destruction, specifically when clear() is called on their std::unordered_map fields. There is an access violation thrown and the address used is 0xDDDDDDDD, which signifies freed memory. So somehow the map has some internal nodes whose values are already freed?",5 TIMOB-18730,"iOS8: DocumentViewer: Unbalanced calls to begin/end appearance transitions for QLRemotePreviewContentController","h6.Issue Description We get the following message when loading a pdf in the DocumentViewer component: ""Unbalanced calls to begin/end appearance transitions for "". Getting this message is sometimes associated with the app freezing but generally app goes okay anyway. h6.Sample Code {code} var doc = ""http://www.legis.state.ak.us/basis/iphonepages/IPV3get_documents.asp?session=29&docid=3324&minname=Agenda%5FLBA%5F17Mar15%5FLocation+Change%2Epdf""; var win = Ti.UI.createWindow(); win.open(); var file = Ti.Filesystem.getFile(Ti.Filesystem.applicationDataDirectory, 'document.pdf'), client = Ti.Network.createHTTPClient({ onload : function() { // Open a doc viewer. var docViewer = Ti.UI.iOS.createDocumentViewer({ url : file.nativePath }); docViewer.show({ animated : true }); }, onerror : function(e) { alert('Error: ' + e); } }); client.open('GET', doc); client.file = file; client.send(); {code} h6.Console Output {code} -- Start simulator log ------------------------------------------------------- [INFO] Application started [DEBUG] Reading stylesheet from: /Users/egomez/Library/Developer/CoreSimulator/Devices/D2DD3F81-EDBF-4C3B-A975-A41501FF3702/data/Containers/Bundle/Application/AE4C1686-4155-44A9-A3F5-AF463281A0F4/TableViewRepro.app/stylesheet.plist [DEBUG] 2015-03-23 16:01:38.614 TableViewRepro[10909:330239] You've implemented -[ application:performFetchWithCompletionHandler:], but you still need to add ""fetch"" to the list of your supported UIBackgroundModes in your Info.plist. [DEBUG] 2015-03-23 16:01:38.615 TableViewRepro[10909:330239] You've implemented -[ application:didReceiveRemoteNotification:fetchCompletionHandler:], but you still need to add ""remote-notification"" to the list of your supported UIBackgroundModes in your Info.plist. [INFO] TableViewRepro/1.0 (4.0.0.944c821) [DEBUG] Loading: /Users/egomez/Library/Developer/CoreSimulator/Devices/D2DD3F81-EDBF-4C3B-A975-A41501FF3702/data/Containers/Bundle/Application/AE4C1686-4155-44A9-A3F5-AF463281A0F4/TableViewRepro.app/app.js, Resource: app_js [DEBUG] Application booted in 415.318012 ms [DEBUG] 2015-03-23 16:01:40.414 TableViewRepro[10909:330239] Unbalanced calls to begin/end appearance transitions for . {code}",5 TIMOB-18732,"Add mocha tests for TableView, ListView and Switch","- Add mocha test for Titanium.UI.TableView - Add mocha test for Titanium.UI.ListView - Add mocha test for Titanium.UI.Switch",8 TIMOB-18733,"Mocha test result sometimes doesn't display at the end of tests","The mocha test result screen, either red or green sometimes doesn't display at the end of testing. This usually happens when testing _ti.ui.layout.test_.",1 TIMOB-18734,"Windows: No way to navigate back to directory from profile in corporate directory app","Once you navigate from the directory into the individual profile for a user, there's no way to navigate back. We _could_ hook up the back hardware button to go back a window, or we could implement something similar to a NavigationGroup/Window (TIMOB-17971).",8 TIMOB-18739,"Windows: ListView section headers' labels aren't visible","You can see space for the headers/groupings, but there's nothing visible there.",5 TIMOB-18740,"Windows: Search header isn't visible in directory listing","The search bar/textfield isn't visible in the directory header. We need it ot be able to filter the list.",5 TIMOB-18743,"Windows: Implement Ti.UI.ListView.searchText property for filtering","Setting a ListView's searchText property does nothing right now. It should filter the items based on the search text. Unfortunately Windows doesn't make this easy for us. Looks like we need to filter the collections ourselves under the hood: - http://docs.appcelerator.com/titanium/3.0/#!/api/Titanium.UI.ListView-property-searchText - http://stackoverflow.com/questions/11642528/windows-metro-app-filtering-listview-and-showing-specific-data-from-list - http://stackoverflow.com/questions/14956999/filtering-and-sorting-of-an-observablecollection-in-listview-binding - http://www.codeproject.com/Articles/527686/A-WinRT-CollectionView-class-with-Filtering-and-So",5 TIMOB-18745,"Windows: Use Pivot and PivotItem for Tab and TabGroup UI proxies","We currently implement the Tab and TabGroup UI elements in JS up in TitaniumKit. While it works, it's not very typical of the look and feel for a Windows app. The equivalent UI seems to be Pivot and PivotItem: !https://i-msdn.sec.s-msft.com/dynimg/IC713237.png! https://msdn.microsoft.com/en-us/library/windows/apps/dn596104.aspx https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.pivot.aspx https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.pivotitem.aspx",13 TIMOB-18746,"Windows: Implement Ti.Locale module",http://docs.appcelerator.com/titanium/3.0/#!/api/Titanium.Locale,13 TIMOB-18747,"MobileWeb: Preview in browser opens unavailable page","Running a project for Mobile Web open http://127.0.0.1:8020/index.html, which is an unavailable page. *Steps to reproduce issue*: 1. Create a new project in Studio or via the CLI 2. Run the project for mobile web (Preview in browser) *Actual Results*: http://127.0.0.1:8020/index.html is opened in your browser and it is an unavailable page *Expected Results*: The app is successfully run in browser *Notes*: The project looks to be created correctly and manually opening index.html works fine",3 TIMOB-18749,"Windows: Implement Ti.UI.2DMatrix proxy","http://docs.appcelerator.com/titanium/3.0/#!/api/Titanium.UI.2DMatrix Note that Ti.UI.create2DMatrix() takes a special object defined as: http://docs.appcelerator.com/titanium/3.0/#!/api/MatrixCreationDict We should represent that with a struct, much as we do other defined-object abstract types such as Point or Dimension. This class is used in conjunction with Ti.UI.Animation, which eventually is consumed in the Ti.UI.View.animate() method. It seems to map 1:1 to https://msdn.microsoft.com/en-us/library/ie/windows.ui.xaml.media.matrixtransform h2. Properties - a : Number - b : Number - c : Number - d : Number - tx : Number - Amount to move horizontally? - ty : Number - Amount to move vertically? h2. Methods - invert( ) : Titanium.UI.2DMatrix - multiply( Titanium.UI.2DMatrix m2 ) : Titanium.UI.2DMatrix - rotate( Number angle, \[toAngle] ) : Titanium.UI.2DMatrix - scale( Number sx, Number sy, \[toSx], \[toSy] ) : Titanium.UI.2DMatrix - translate( Number tx, Number ty ) : Titanium.UI.2DMatrix",13 TIMOB-18750,"Windows: Support animations of right, center and bottom properties","When implementing Ti.Ui.Aniamtion/Ti.UI.View.animate() I didn't implement bottom/right/center animations - just top/left. We need to implement bottom/right/center as well, which typically should just involve the same basic code, just referencing different properties of the component for determining the amount to move.",8 TIMOB-18751,"Windows: Fire Ti.UI.Animation events","We need to fire the complete and start events for animations.",5 TIMOB-18752,"Windows: Support animations of height, width and zIndex properties","We need to support animations of the height, width and zIndex properties.",5 TIMOB-18753,"Windows: Support curve/easing functions on Animations","We need to respect the curve property set and use that to apply a relevant easing function to the generated animations. See https://msdn.microsoft.com/en-us/library/ie/windows.ui.xaml.media.animation I'm not sure which of the *Ease types best applies.",5 TIMOB-18754,"Windows: Implement Ti.UI.OptionDialog","http://docs.appcelerator.com/titanium/3.0/#!/api/Titanium.UI.OptionDialog https://msdn.microsoft.com/en-us/windows/apps/windows.ui.popups.messagedialog It appears a first good implementation would be nearly identical to AlertDialog. ",5 TIMOB-18756,"Windows: Implement Titanium.Buffer proxy","http://docs.appcelerator.com/titanium/3.0/#!/api/Titanium.Buffer h2. Properties - byteOrder : Number CREATION-ONLY - length : Number - type : String CREATION-ONLY - value : Number/String CREATION-ONLY h2. Methods - append( sourceBuffer, [sourceOffset], [sourceLength] ) : Number - clear( ) : void - clone( [offset], [length] ) : Titanium.Buffer - copy( sourceBuffer, offset, [sourceOffset], [sourceLength] ) : Number - fill( fillByte, [offset], [length] ) : void - insert( sourceBuffer, offset, [sourceOffset], [sourceLength] ) : Number - release( ) : void - toBlob( ) : Titanium.Blob - toString( ) : String",13 TIMOB-18757,"Windows: Implement Titanium.UI.Clipboard proxy","http://docs.appcelerator.com/titanium/3.0/#!/api/Titanium.UI.Clipboard h2. Methods - clearData( [type] ) : void - clearText( ) : void - getData( type ) : String/Titanium.Blob - getText( ) : String - hasData( type ) : Boolean - hasText( ) : Boolean/Number - setData( type, data ) : void - setText( text ) : void",8 TIMOB-18758,"Windows: Fire Ti.App events","We need to hook up event firing for the Ti.App events. h2. Events - accessibilitychanged Fired by the system when the device's accessibility service is turned on or off. ... - keyboardframechanged Fired when the soft keyboard is presented, on and off the screen. ... - memorywarning Fired when the app receives a warning from the operating system about low memory availability. ... - pause Fired when the application transitions from active to inactive state on a multitasked system. ... - paused Fired when the application transitions to the background on a multitasked system. ... - proximity Fired when the proximity sensor changes state. ... - resume Fired when the application returns to the foreground on a multitasked system. ... - resumed Fired when the application returns to the foreground. ... - significanttimechange Fired when there is a significant change in the time. ...",8 TIMOB-18759,"Windows: Stub out all properties/methods of Titanium.Network in TitaniumKit","Our NetworkModule in TitanumKit is missing a number of the methods/properties in the public API. We should stub these out so references to them don't cause crashes in app.",5 TIMOB-18760,"Windows: Implement Ti.Network encode and decodeURIComponent methods","http://docs.appcelerator.com/titanium/3.0/#!/api/Titanium.Network-method-decodeURIComponent http://docs.appcelerator.com/titanium/3.0/#!/api/Titanium.Network-method-encodeURIComponent",5 TIMOB-18761,"Windows: Fire Ti.Network change events",http://docs.appcelerator.com/titanium/3.0/#!/api/Titanium.Network-event-change,5 TIMOB-18763,"Kitchensink: Master has fixed versions for Facebook modules","h5. Description: Kitchensink tiapp.xml has fixed versions for facebook modules. This will prevent later modules from being automatically used and currently is set to a version that is not the latest (for Android it's set to 4.0.1, but 4.0.2 is latest). {code} facebook facebook {code} h5. Steps to reproduce: 1) Either check master branch at https://github.com/appcelerator/KitchenSink/blob/master/tiapp.xml OR 1) Pull master from git 2) Check the Facebook module entries in tiapp.xml h5. Result: tiapp.xml has specific versions as shown above h5. Expected Result: tiapp.xml set like so: {code} facebook facebook {code} ",3 TIMOB-18765,"iOS: WebView do not recognize local HTML File using Ti.sourceDirectory if Project Name has a space","h6.Description: Since Ti SDK 3.5.0, WebView does no recognise the html file when using Ti.sourceDirectory File system, if there is space in app name. h6.Reproduce: 1. Create a classic project named ""Simple Test"" (with space) 2. Create a folder named ""html"" under Resource folder. 3. Create a simple html file name ""comingSoon.html"", like following {code:title=comingSoon.html} Hello World!

Content to follow soon

{code} 4.Add following code into app.js file {code:title=app.js} ar win = Ti.UI.createWindow({ backgroundColor: 'white' }); var f = Ti.Filesystem.getFile(Ti.Filesystem.resourcesDirectory,'/html/comingSoon.html'); if (f.exists()) { var contents = f.read(); alert('Output the file:'+contents.text); } else { Ti.API.info(""No such file!""); } var URL = Ti.Filesystem.resourcesDirectory + '/html/comingSoon.html'; var wv = Ti.UI.createWebView({ top: 30, url: URL }); win.add(wv); win.open(); {code} h6.Expect Result: The webview should display normally. h6.Actual Result: The error pop out in console log: *""couldn't load URL: app://com.cocoafish.sliangPush/Users/shuoliang/Library/Developer/CoreSimulator/Devices/EA379BD7-8255-4555-9A89-79678C7C68EB/data/Containers/Bundle/Application/BCD65E99-C189-4889-9177-CD870924377D/Simple%20Push.app/html/comingSoon.html""* h6.Note: 1. No such problem in SDK 3.4.1 2. Change the app name without space, problem gone.",5 TIMOB-18768,"Blackberry target is there as a deployment target in tiapp.xml","The xml has an entry for blackberry target even though it is removed from the overview page of Tiapp.xml Steps To Reproduce: 1. Create a new project. In the wizard there is no option for Blackberry 2. Open Tiapp.xml. The overview page does not have the Blackberry section 3. Open the xml and check the section Actual Result: The blackberry target is shown Expected Result: The blackberry as a target should not be available",3 TIMOB-18770,"HAL: Variables using unicode characters cause Application Error","When you use a special unicode character in a variable name (which is perfectly fine on iOS and Android and valid JS) the application will crash. h1. Test case {code:javascript} var φ = 'hello world'; Ti.UI.createWindow({ backgroundColor: ""white"" }).open(); {code} h1. Crash {code} [ERROR] Application Error: { [ERROR] ""message"": ""Error while require(./app) Invalid character '\\u0966'"", [ERROR] ""native_stack"": [ [ERROR] ""JSExportClass::CallNamedFunction"" [ERROR] ], [ERROR] ""stack"": ""require@[native code]\nglobal code"", [ERROR] ""line"": 2 [ERROR] } {code}",21 TIMOB-18773,"Windows: ListView searchText and section headers aren't working from CLI builds","When I run the corporate directory app from the CLI using the latest SDK builds off of master, the directory listing's section headers are invisible (just space there) and using the search field doesn't seem to filter the entries at all. This works fine in Debug mode under the VS 2013 debugger using the example. May be a difference in Release vs Debug builds?",8 TIMOB-18775,"Download pre-release SDKs from authenticated stream","h5. Description: We need to be able to download the beta2 SDK from the Appc CLI. ",3 TIMOB-18776,"iOS: Map Annotation buttons are not aligned properly when Annotation title text is large","h6.Description Using may Annotation, when Annotation title text is large, Annotation leftButton and rightButton are not aligned properly. Button appears in the top portion h6.Reproduce: 1.Just simply run the test case below. {code:title=app.js} var Map = require('ti.map'); var win = Titanium.UI.createWindow(); var mountainView = Map.createAnnotation({ latitude : -33.852222, longitude : 151.210556, title : ""Aadsafsfsdfsdfdsfdsfdsfdsfsfsdf"", subtitle : 'skjhfjskh', pincolor : Map.ANNOTATION_AZURE, myid : 1 // Custom property to uniquely identify this annotation. }); mountainView.leftButton = ""images.png""; mountainView.rightButton = Titanium.UI.iPhone.SystemButton.INFO_LIGHT;; var mapview = Map.createView({ mapType : Map.NORMAL_TYPE, region : { latitude : -33.87365, longitude : 151.20689, latitudeDelta : 0.1, longitudeDelta : 0.1 }, animate : true, regionFit : true, userLocation : true, annotations : [mountainView] }); win.add(mapview); // Handle click events on any annotations on this map. mapview.addEventListener('click', function(evt) { Ti.API.info(""Annotation "" + evt.title + "" clicked, id: "" + evt.annotation.myid); }); win.open(); {code} h6.Except Result: The button should get aligned well. h6.Actual Result: Annotation leftButton and rightButton are not aligned properly. Button appears in the top portion. Screenshot attached. ",5 TIMOB-18789,"iOS: Can not Get Correct Orientation Information when orientation is not portrait","h5.Description: Using window.getOrientation() can't get correct info if orientationModes is not portrait. h5.Reproduce Step: Simply run the test case in classic project. (force Orientation to Landscape_Right) {code:title=app.js} var self = Ti.UI.createWindow({ backgroundColor:'#ffffff', orientationModes : [Ti.UI.LANDSCAPE_RIGHT] }); Ti.API.debug('Reference'); Ti.API.debug('Ti.UI.LANDSCAPE_RIGHT:' + Ti.UI.LANDSCAPE_RIGHT); Ti.API.debug('Ti.UI.LANDSCAPE_LEFT:' + Ti.UI.LANDSCAPE_LEFT); Ti.API.debug('Ti.UI.PORTRAIT:' + Ti.UI.PORTRAIT); Ti.API.debug('Ti.UI.UPSIDE_PORTRAIT:' + Ti.UI.UPSIDE_PORTRAIT); var label = Ti.UI.createLabel({ text: ""Test Window for Orientation!"", Top: '30%', }); self.add(label); //construct UI self.addEventListener('open', function(e) { Ti.API.debug('When Opened, Window Orientation:' + self.getOrientation() + "", Gesture Orientaiton:"" + Ti.Gesture.getOrientation()); }); self.addEventListener('focus', function(e) { Ti.API.debug('When Focussed, Window Orientation:' + self.getOrientation() + "", Gesture Orientaiton:"" + Ti.Gesture.getOrientation()); }); Ti.Gesture.addEventListener('orientationchange', function(e) { Ti.API.debug('Window Orientation:' + self.getOrientation() + "", Gesture Orientaiton:"" + Ti.Gesture.getOrientation()); }); self.open(); {code} h5.Expect Result: Should get the correct information about orientation. h5.Actual Result: Window opens in landscape mode as expected, but none of the event listeners configured as in the above code log the correct orientation {code:title=iOS log} [DEBUG] : Reference [DEBUG] : Ti.UI.LANDSCAPE_RIGHT:3 [DEBUG] : Ti.UI.LANDSCAPE_LEFT:4 [DEBUG] : Ti.UI.PORTRAIT:1 [DEBUG] : Ti.UI.UPSIDE_PORTRAIT:2 [DEBUG] : Loading: /Users/achyutjoshi/Library/Developer/CoreSimulator/Devices/DEE57654-B959-4BB6-942A-370CD35E6CDC/data/Containers/Bundle/Application/EEFFC1D4-C8D4-48F0-9783-C26BAC2992EE/orientation.app/_app_props_.json, Resource: _app_props__json [DEBUG] : Forcing rotation to 3. Current Orientation 1. This is not good UI design. Please reconsider. [DEBUG] : Application booted in 130.232036 ms [DEBUG] : When Opened, Window Orientation:1, Gesture Orientaiton:1 [DEBUG] : When Focussed, Window Orientation:1, Gesture Orientaiton:1 {code} h5.Note: If run the test code on Android device, the result will show the orientation change. like this: {code:title=Android Log} [DEBUG] : Reference [DEBUG] : Ti.UI.LANDSCAPE_RIGHT:4 [DEBUG] : Ti.UI.LANDSCAPE_LEFT:2 [DEBUG] : Ti.UI.PORTRAIT:1 [DEBUG] : Ti.UI.UPSIDE_PORTRAIT:3 [INFO] : TiRootActivity: (main) [0,0] checkpoint, on root activity resume. activity = com.orientation.OrientationActivity@421c5c30 [INFO] : I/Adreno-EGL: : EGL 1.4 QUALCOMM build: AU_LINUX_ANDROID_LNX.LA.3.5.1_RB1.04.04.02.048.018_msm8226_LNX.LA.3.5.1_RB1__release_AU () [INFO] : I/Adreno-EGL: OpenGL ES Shader Compiler Version: E031.24.00.08 [INFO] : I/Adreno-EGL: Build Date: 03/07/14 Fri [INFO] : I/Adreno-EGL: Local Branch: [INFO] : I/Adreno-EGL: Remote Branch: quic/LNX.LA.3.5.1_RB1.1 [INFO] : I/Adreno-EGL: Local Patches: NONE [INFO] : I/Adreno-EGL: Reconstruct Branch: AU_LINUX_ANDROID_LNX.LA.3.5.1_RB1.04.04.02.048.018 + f2fd134 + NOTHING [DEBUG] : OpenGLRenderer: Enabling debug mode 0 [DEBUG] : Window: Checkpoint: postWindowCreated() [DEBUG] : When Opened, Window Orientation:1, Gesture Orientaiton:1 [DEBUG] : When Focussed, Window Orientation:1, Gesture Orientaiton:1 [DEBUG] : Window Orientation:2, Gesture Orientaiton:2 {code}",5 TIMOB-18816,"Android: Region support for i18n directory","Following are the issues found around the modification of language at runtime in Android app: * Titanium module LocaleModule does not offer support for changing the language (it is supported on iOS) * Compilation script does not support regions (i.e. es-CO, es-CL) In the current task it’s required to allow the modification of language + region for Android platform. Github PR: https://github.com/appcelerator/titanium_mobile/pull/6772",3 TIMOB-18791,"Update YAML generator","- Update YAML generator to support the recent changes - Implement a whitelist",8 TIMOB-18793," Signoff on all regressions and deferred P1/P2 bugs by Engineering VP",NULL,3 TIMOB-18794," Dev: Update Appcelerator Studio version number to 4.0.0",NULL,3 TIMOB-18804,"Dev: Publish Titanium SDK to Production",NULL,4 TIMOB-18805,"Dev: Publish Appcelerator Studio GA Update to Production",NULL,2 TIMOB-18806,"Dev: Publish Appcelerator Studio GA Installers to Production",NULL,2 TIMOB-18813,"Dev: Bump KitchenSink to next version","This includes: - Updating the Tiapp.xml version inside KS",3 TIMOB-18814," Dev: Bump Mobile SDK titanium_version.py and package.json to next version","To run, do on the command line: {code} grunt bump:patch {code}",3 TIMOB-18815,"iOS: Not able to store video in Gallery when captured directly from the app","h5.Reproduce Step: Simply run the test case in a classic project. {code:title=app.js} Ti.UI.backgroundColor = 'white'; var win = Ti.UI.createWindow({}); var button = Ti.UI.createButton({ top: 100, left: 30, title: ""Show Camera"", }); button.addEventListener(""click"", function(){ Titanium.Media.showCamera({ success:function(event) { // called when media returned from the camera Ti.API.info('showCamera: ' + JSON.stringify(event)); if (event.mediaType == Ti.Media.MEDIA_TYPE_VIDEO) { alert(""Video saved""); } }, cancel:function() { alert(""cancelled Camera!""); }, error:function(error) { var a = Titanium.UI.createAlertDialog({title:'Camera'}); if (error.code == Titanium.Media.NO_CAMERA) { a.setMessage('Please run this test on device'); } else { a.setMessage('Unexpected error: ' + error.code); } a.show(); }, saveToPhotoGallery:true, allowEditing : true, mediaTypes : [Ti.Media.MEDIA_TYPE_VIDEO] }); }); win.add(button); win.open(); {code} h5.Expect Result: Video should save into gallery, like a picture. h5.Actual Result: Console log shows the camera saved. But can't find it in gallery. ",5 TIMOB-18817,"Windows: Investigate how to expose Native APIs through Javascript",NULL,21 TIMOB-18820,"Windows: Whitelisted API YAML docs aren't generated in correct folder structure","From https://github.com/appcelerator/titanium_mobile_windows/pull/210#issuecomment-91082729 I found that YAML files for `Ti.XML.*` generated directly under `Titanium`. Shouldn't that be placed under `Titanium/XML`? {code} $ ls apidoc/Titanium/ API.yml Database.yml ListItem_white.yml String_white.yml Accelerometer_white.yml DocumentFragment_white.yml Map TabGroup_white.yml Analytics.yml DocumentType_white.yml Map.yml Tab_white.yml App Document_white.yml NamedNodeMap_white.yml Text_white.yml App.yml Element_white.yml Network Titanium.yml Attr_white.yml EntityReference_white.yml Network.yml UI Blob.yml Entity_white.yml NodeList_white.yml UI.yml CDATASection_white.yml Filesystem Node_white.yml Utils.yml CharacterData_white.yml Filesystem.yml Notation_white.yml XML.yml Comment_white.yml Gesture.yml Platform console_white.yml DOMImplementation_white.yml GlobalObject.yml Platform.yml Database JSON_white.yml ProcessingInstruction_white.yml {code}",3 TIMOB-18853,"Android: Custom Fonts not working in Attributed Strings","h2. Problem The Ti.UI.ATTRIBUTE_FONT part of TIMOB-15998 doesn't appear to be working with custom fonts. TIMOB-15998 didn't demonstrate custom fonts working. The built-in font Roboto and its variants are working, as well as the built-in families monospace and serif. However, custom fonts placed in app/assets/android/fonts as well as app/assets/fonts are not working. Below, I'm expecting to see the first line of text, ""Chantelli Antiqua,"" to be displayed in the custom font, which is more of a serif font than the sans-serif shown. Instead, however, we see the text displayed in the default font. h2. Test case {code:lang=javascript|title=app.js} var win = Titanium.UI.createWindow({ backgroundColor : ""#ffffff"" }); var scrollView = Ti.UI.createScrollView({ height : Ti.UI.FILL, width : Ti.UI.FILL, layout : ""vertical"" }); win.add(scrollView); win.open(); var fonts = [""Chantelli_Antiqua"", ""serif"", ""monospace"", ""sans-serif"", ""sans-serif-light"", ""sans-serif-condensed""]; _.each(fonts, function(font) { var text = font; var attr = Titanium.UI.createAttributedString({ text : text, tributes : [ { type : Ti.UI.ATTRIBUTE_FONT, value : { font : { fontSize : 20, fontFamily : font } }, range : [0, text.length] }, { type : Ti.UI.ATTRIBUTE_FOREGROUND_COLOR, value : ""#000000"", range : [0, text.length] }] }); var label = Titanium.UI.createLabel({ top : 10, left : 10, right : 10, height : Titanium.UI.SIZE, tributedString : attr }); scrollView.add(label); }); {code}",5 TIMOB-18861,"SSL certificate validation fails on university.appcelerator.com on Android","The Android mobile app for Appcelerator University cannot connect to the API due to an SSL certificate validation failure. The error message suggests the server certificate is for *.cloudapp-enterprise.appcelerator.com: {code} HTTP Error (javax.net.ssl.SSLException): hostname in certificate didn't match: != <*.cloudapp-enterprise.appcelerator.com> OR <*.cloudapp-enterprise.appcelerator.com> OR {code} If I do a cURL, the SSL certificate is for *.appcelerator.com: {code} curl -v -s -H ""Authorization: Basic VGswNHhoMjdNeGlCTEdWMHU3MlVkUlBDZzNYNHd0WmI6"" https://university.appcelerator.com/api/app/config 1> /dev/null * Hostname was NOT found in DNS cache * Trying 54.244.121.15... * Connected to university.appcelerator.com (54.244.121.15) port 443 (#0) * TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 * Server certificate: *.appcelerator.com * Server certificate: Go Daddy Secure Certificate Authority - G2 * Server certificate: Go Daddy Root Certificate Authority - G2 > GET /api/app/config HTTP/1.1 > User-Agent: curl/7.37.1 > Host: university.appcelerator.com > Accept: */* > Authorization: Basic VGswNHhoMjdNeGlCTEdWMHU3MlVkUlBDZzNYNHd0WmI6 > < HTTP/1.1 200 OK < X-Powered-By: Appcelerator Node.ACS < X-Response-time: 8ms * Server Appcelerator Arrow/0.3.167 is not blacklisted < server: Appcelerator Arrow/0.3.167 < request-id: fdea4777-3ec4-4552-a782-a66992bb724c < content-type: application/json < content-length: 129 < date: Fri, 10 Apr 2015 16:42:11 GMT < connection: close < { [data not shown] * Closing connection 0 {code} Here's the ACS details for the published Appcelerator University Arrow app: {code} App name: AppU -- Created by: rblalock@appcelerator.com -- URL: https://0df0b36af43e31f224953e4d270bcb256b86677c.cloudapp-enterprise.appcelerator.com -- DOMAIN: university.appcelerator.com -- Created at: Sat Mar 21 2015 03:55:30 GMT+0000 (GMT) -- Node Version: 0.10.22 -- Server Size: Large -- Maximum allowed number of servers: 5 -- Desired minimum number of servers: 3 -- Current number of deployed servers: 3 -- Auto scale-up enabled: true -- Maximum queued requests per server: 50 -- Auto scale-down enabled: true -- Active version: 1.0.11 -- Published at: Thu Apr 09 2015 02:41:16 GMT+0100 (BST) -- Status: Active -- Servers: No. 1 ID: 551c756413a34aafa5f90281 Status: Deployed No. 2 ID: 551c757813a34aafa5f90285 Status: Deployed No. 3 ID: 551c75c713a34aafa5f90295 Status: Deployed {code}",2 TIMOB-18824,"Android: ListView crashes app when scrolled to end of list","ListView is crashing when reaching the end of the list. This same test case works without crashing with Ti SDK 4.0.0.Beta2. Steps to reproduce: # Load code below with Ti SDK 4.1.0.v20150410061234 # Tap the ""Append 10 items"" button # Scroll all the way to the bottom # Observer app crash Test case: {code} var win = Ti.UI.createWindow({ backgroundColor : ""#ffffff"", layout : ""absolute"" }); win.open(); var appendButton = Ti.UI.createButton({ title : ""Append 10 items"", height : ""10%"", top : ""5%"" }); appendButton.addEventListener(""click"", function() { appendData(); }); win.add(appendButton); var screenWidth = Ti.Platform.displayCaps.platformWidth; var listSection = Ti.UI.createListSection(); var listView = Ti.UI.createListView({ backgroundColor : ""#cccccc"", top : ""20%"", height : ""80%"", templates : { ""photoWithCaption"" : { properties : { layout : ""vertical"", height : Ti.UI.SIZE }, childTemplates : [{ type : ""Ti.UI.ImageView"", bindId : ""photo"", properties : { height : screenWidth, width : screenWidth, preventDefaultImage : true } }, { type : ""Ti.UI.TextArea"", bindId : ""caption"", properties : { backgroundColor : ""#ffffff"", height : Ti.UI.SIZE, left : 10, right : 10, editable : false, scrollable : false } }] } }, defaultItemTemplate : ""photoWithCaption"" }); listView.setSections([listSection]); win.add(listView); function appendData() { var data = []; for (var i = 0; i < 10; i++) { var text = ""This a caption #"" + (i + 1) + "", and it may disappear when an append of new data happens on the parent ListView.""; data.push({ template : ""photoWithCaption"", photo : { image : ""http://thecatapi.com/api/images/get?format=src&type=jpg&size=small"" }, caption : { tributedString : Titanium.UI.createAttributedString({ text : text, tributes : [{ type : Ti.UI.ATTRIBUTE_FONT, value : { font : { fontSize : 14 } }, range : [0, text.length] }, { type : Ti.UI.ATTRIBUTE_FOREGROUND_COLOR, value : ""#000000"", range : [0, text.length] }] }) } }); } listSection.appendItems(data); } {code} Stack trace: {code} 04-10 13:52:35.211: E/TiApplication(19289): (main) [30186,32990] Sending event: exception on thread: main msg:java.lang.NullPointerException: Attempt to read from field 'java.lang.Object android.util.Pair.second' on a null object reference; Titanium 4.1.0,2015/04/10 06:13,29ba994 04-10 13:52:35.211: E/TiApplication(19289): java.lang.NullPointerException: Attempt to read from field 'java.lang.Object android.util.Pair.second' on a null object reference 04-10 13:52:35.211: E/TiApplication(19289): ti.modules.titanium.ui.widget.listview.TiListView$1.onScrollStateChanged(TiListView.java:337) 04-10 13:52:35.211: E/TiApplication(19289): android.widget.AbsListView.reportScrollStateChange(AbsListView.java:4335) 04-10 13:52:35.211: E/TiApplication(19289): android.widget.AbsListView$FlingRunnable.endFling(AbsListView.java:4466) 04-10 13:52:35.211: E/TiApplication(19289): android.widget.AbsListView$FlingRunnable.run(AbsListView.java:4601) 04-10 13:52:35.211: E/TiApplication(19289): android.view.Choreographer$CallbackRecord.run(Choreographer.java:767) 04-10 13:52:35.211: E/TiApplication(19289): android.view.Choreographer.doCallbacks(Choreographer.java:580) 04-10 13:52:35.211: E/TiApplication(19289): android.view.Choreographer.doFrame(Choreographer.java:549) 04-10 13:52:35.211: E/TiApplication(19289): android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753) 04-10 13:52:35.211: E/TiApplication(19289): android.os.Handler.handleCallback(Handler.java:739) 04-10 13:52:35.211: E/TiApplication(19289): android.os.Handler.dispatchMessage(Handler.java:95) 04-10 13:52:35.211: E/TiApplication(19289): android.os.Looper.loop(Looper.java:135) 04-10 13:52:35.211: E/TiApplication(19289): android.app.ActivityThread.main(ActivityThread.java:5254) 04-10 13:52:35.211: E/TiApplication(19289): java.lang.reflect.Method.invoke(Native Method) 04-10 13:52:35.211: E/TiApplication(19289): java.lang.reflect.Method.invoke(Method.java:372) 04-10 13:52:35.211: E/TiApplication(19289): com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 04-10 13:52:35.211: E/TiApplication(19289): com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 04-10 13:52:35.234: E/AndroidRuntime(19289): FATAL EXCEPTION: main 04-10 13:52:35.234: E/AndroidRuntime(19289): Process: blah, PID: 19289 04-10 13:52:35.234: E/AndroidRuntime(19289): java.lang.NullPointerException: Attempt to read from field 'java.lang.Object android.util.Pair.second' on a null object reference 04-10 13:52:35.234: E/AndroidRuntime(19289): ti.modules.titanium.ui.widget.listview.TiListView$1.onScrollStateChanged(TiListView.java:337) 04-10 13:52:35.234: E/AndroidRuntime(19289): android.widget.AbsListView.reportScrollStateChange(AbsListView.java:4335) 04-10 13:52:35.234: E/AndroidRuntime(19289): android.widget.AbsListView$FlingRunnable.endFling(AbsListView.java:4466) 04-10 13:52:35.234: E/AndroidRuntime(19289): android.widget.AbsListView$FlingRunnable.run(AbsListView.java:4601) 04-10 13:52:35.234: E/AndroidRuntime(19289): android.view.Choreographer$CallbackRecord.run(Choreographer.java:767) 04-10 13:52:35.234: E/AndroidRuntime(19289): android.view.Choreographer.doCallbacks(Choreographer.java:580) 04-10 13:52:35.234: E/AndroidRuntime(19289): android.view.Choreographer.doFrame(Choreographer.java:549) 04-10 13:52:35.234: E/AndroidRuntime(19289): android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753) 04-10 13:52:35.234: E/AndroidRuntime(19289): android.os.Handler.handleCallback(Handler.java:739) 04-10 13:52:35.234: E/AndroidRuntime(19289): android.os.Handler.dispatchMessage(Handler.java:95) 04-10 13:52:35.234: E/AndroidRuntime(19289): android.os.Looper.loop(Looper.java:135) 04-10 13:52:35.234: E/AndroidRuntime(19289): android.app.ActivityThread.main(ActivityThread.java:5254) 04-10 13:52:35.234: E/AndroidRuntime(19289): java.lang.reflect.Method.invoke(Native Method) 04-10 13:52:35.234: E/AndroidRuntime(19289): java.lang.reflect.Method.invoke(Method.java:372) 04-10 13:52:35.234: E/AndroidRuntime(19289): com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 04-10 13:52:35.234: E/AndroidRuntime(19289): com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) {code}",3 TIMOB-18830,"iOS: ImageView start with blank when setting an array of images and long duration. ","h5.Description When set image array to a imageView, it will start with a blank page. The longer setting for duration, the more obvious blank is. h5.Reproduce Step: Simple run the test case. {code:title=app.js} var win = Ti.UI.createWindow({ backgroundColor:""white"" }); var array =[""/1.png"", ""/2.png""]; var topPic = Ti.UI.createImageView({ width: Ti.UI.SIZE, height: Ti.UI.SIZE, top: '10dp', images: array, duration: 10000, repeatCount: 4 }); win.add(topPic); //Start top pic animation topPic.addEventListener('load', function(e){ Ti.API.info(""Loaded""); topPic.start(); }); topPic.addEventListener('start', function(e){ Ti.API.info(""Started""); }); topPic.addEventListener('change', function(e){ Ti.API.info(e.index); }); win.open(); {code} h5.Expect Result The images should display right after load finished, then animate to another. h5.Actual Result The imageView will keep blank at beginning, Like setting duration: 10000, the symptom will be more obvious. h5.Note: This happens on both SDK 3.4.* and 3.5.* ",3 TIMOB-18838,"ACS Photo uploads fail with 500 error","Photos returned a 500 {code} [INFO] [iphone, 8.1, undefined] { ""success"": false, ""error"": true, ""code"": 500, ""message"": ""Internal server error. The Appcelerator Cloud Services Team has just been notified of this problem."" } {code} Please have a look at it.",13 TIMOB-18834,"iOS: Provide mechanism to use the JavaScriptCore framework","Add a tiapp.xml property to allow developers to choose if they would like to use JavaScriptCore Framework of TiCore to build their applications. Modify Titanium SDK to be able to compile and link successfully when using the JavaScriptCore Framework",34 TIMOB-18839,"Windows: Implement Ti.UI.setBackgroundColor","http://docs.appcelerator.com/titanium/3.0/#!/api/Titanium.UI-property-backgroundColor Sets the background color of the master view (when there are no windows or other top-level controls displayed). The default background color may also show through if you use semi-transparent windows.",5 TIMOB-18840,"iOS: Fix packaging WatchKit apps for production","Currently after packaging an iOS app (that includes a WatchKit app) for the app store, once you submit the app to iTunes Connect, you will get an email from Apple with the following message: {code} Invalid WatchKit Support - The bundle contains an invalid implementation of WatchKit. The app may have been built or signed with non-compliant or pre-release tools. Visit developer.apple.com for more information. {code} At this point it seems that this issue is resolved by adding a folder and file to the archive before submitting it. The details regarding this workaround can be found here: https://jira.appcelerator.org/browse/TIMOB-18337?focusedCommentId=349764&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-349764 Once we get a positive response from Jamie and Mads (from TIMOB-18337) this will need to be done by the CLI",5 TIMOB-19621,"tiImage() complete callback is not fired on Android","{code:JavaScript} var self = Ti.UI.createWindow({layout:'vertical', backgroundColor:'#0093b4'}); var aButton = Ti.UI.createButton({title : 'Screen Shot\nAsync', height : Ti.UI.SIZE, width : Ti.UI.SIZE,}); aButton.addEventListener('click', function() { self.toImage(function(_blob) { alert('toImage completed');}); }); self.add(aButton); self.open(); {code} Pressing the above button never fires the complete callback on Android. [iOS works perfect] See: [http://developer.appcelerator.com/question/150289/i-cant-get-toimage-callback-to-fire] as well for Alloy.",5 TIMOB-18843,"CLI: Watchkit build flags in not picking up","I cannot get the watchkit PR to work: https://github.com/jonalter/ioslib/commit/5538c3f63eaca61c54566dd1b0efbf36a8ba012a It seems that no matter if I add a --launch-watch-app flag this block of code is never used: https://github.com/appcelerator/ioslib/blob/master/lib/simulator.js#L420-L434 Im using this command: {code} ti build --platform=ios --target=simulator --device-family=iphone --launch-watch-app -C ? {code} Ive manually added a debug statement to get all options in the console in ioslib simulator.js line 419. {code:js} emitter.emit('log-debug', JSON.stringify(options)); {code} which shows the watchkit flags are not there: {code:json} { ""appName"": ""MYAPP"", ""appPath"": ""/Titanium/MYAPP/build/iphone/build/Debug-iphonesimulator/MYAPP.app"", ""focus"": true, ""logFilename"": ""838180a4-7cff-48f8-8bdb-294b35e941be.log"", ""killIfRunning"": true } {code} Im not sure if im missing a step, but I cannot get this to work. Side note: It works if I hardcode a flag in the ioslib simulator.js file - thats all good. ",21 TIMOB-19919,"Android: add ability to listen to androidback without overriding","Currently it is possible to override the default behavior for the back button. But you can't really use this for enhancing this functionality or just listen to the back button event without overriding it. There is no way to call super.onBackPressed() from on the windows activity from JavaScript side. I think it would make sense to add another property to the Ti.UI.Window that lets you explicitly override this behavior. I'd prefer this: {code:javascript} var win = Ti.UI.createWindow(); win.onBack = function(){ // explicitly override back button behavior }; win.addEventListener('androidback', function(){ // just listen for the event without influencing the default behavior }); {code} Does that make sense? The reason why I need this is that I'm trying to create a proper navigation history. As there are no more lightweight windows, I want to implement a kind of backstack for Views or Fragments. ",3 TIMOB-18847,"Move Ti.Android.ActionBar to Ti.UI.Android.ActionBar","The ActionBar class/proxy is a UI one and should live with the other Android specific types in Ti.UI.Android namespace.",5 TIMOB-18849,"Windows: Working prototype of Native API wrappers","We're taking an approach of generating C++ HAL wrappers for the Windows APIs from the metabase data. We should get a working prototype that could handle something like this: {code:javascript} var Canvas = require('Windows.UI.Xaml.Controls.Canvas'), TextBlock = require('Windows.UI.Xaml.Controls.TextBlock'), Page = require('Windows.UI.Xaml.Controls.Page'), Window = require('Windows.UI.Xaml.Window'); var win = new Canvas(); // Add stuff to the window/canvas! var label = new TextBlock(); label.FontSize = 20; label.Text = ""Hello World!""; win.Children.Append(label); var rootFrame = Window.Current.Content; rootFrame.Navigate(Page.typeid); var page = rootFrame.Content; page.Content = win; {code}",21 TIMOB-18915,"Apps packaged for AppStore appear in Xcode's 'Other items' section","After packaging an app for the AppStore and viewing it in the Xcode Organizer, I see it listed in the 'Other Items' section and not in the 'iOS Apps' section. *Steps to reproduce issue*: 1. Package an app for the AppStore 2. Open Xcode 3. Go to the Organizer -> Archives window *Actual Results*: The app is listed under the 'Other Items' section *Expected Results* The app is listed under the 'iOS Apps' section *Notes* We are not sure what causes the app to appear in this section and information online about the issue is scarce.",8 TIMOB-18851,"TiAPI: Allow developers to opt-out of sending certain analytics events","There are occasions where app developers may not want to send certain events to the analytics server. One example use case is that the app needs to enable location services, but not send geo events to PEM. Our proposal is that in tiapp.xml (and also at runtime), the developer is able to set a list of events to filter out: .filter(""ti.geo"", ""app.nav"") We may wish to _not_ allow them to filter some events like ti.enroll if that then breaks down the rest of the analytics system. ",13 TIMOB-18854,"iOS: Apple Watch support to the open the iOS app in the background via openParentApplication","In order for the watch to get certain things from the iOS app, the handleWatchKitExtensionRequest method in the app delegate needs to be implemented. I imagine this could be a system wide event in Ti similar to the resume event. https://developer.apple.com/library/ios/documentation/WatchKit/Reference/WKInterfaceController_class/#//apple_ref/occ/clm/WKInterfaceController/openParentApplication:reply: Some other links: https://www.bignerdranch.com/blog/watchKit-extensions-communicating-with-your-parent-application/ http://www.kristinathai.com/send-data-to-parent-ios-app/",13 TIMOB-18855,"Windows: Time between creating Date() objects runs a factor 1000 slower then reality","The following code demonstrates that when you create a {{new Date()}} object in a {{setTimeout}} or {{setInterval}} method the time is off by a factor 1000. If you run https://github.com/appcelerator-developer-relations/Mobile-App-Performance/ you will see that this also occurs when you have a expensive computation that takes several seconds and you log the time before and after. {code} var run = require('run'); var win = Ti.UI.createWindow({ backgroundColor: 'white', layout: 'vertical' }); var btnTimeout = Ti.UI.createButton({ top: 20, height: 40, color: '#FFF', backgroundColor: '#000', title: 'setTimeout' }); btnTimeout.addEventListener('click', function () { addLabel(); setTimeout(function () { addLabel(); setTimeout(function () { addLabel(); win.add(btnInterval); }, 5000); }, 0); }); win.add(btnTimeout); var btnInterval = Ti.UI.createButton({ top: 20, height: 40, color: '#FFF', backgroundColor: '#000', title: 'setInterval' }); btnInterval.addEventListener('click', function () { var interval; var intervals = 0; addLabel(); interval = setInterval(function () { intervals++; addLabel(); if (intervals === 2) { clearInterval(interval); } }, 5000); }); function addLabel() { var d = new Date(); win.add(Ti.UI.createLabel({ top: 20, width: Ti.UI.FILL, height: 40, text: pad(d.getHours()) + ':' + pad(d.getMinutes()) + ':' + pad(d.getSeconds()) + ':' + pad(d.getMilliseconds()), color: '#000' })); } function pad(int) { var str = int.toString(); if (str.length === 1) { str = '0' + str; } return str; } win.open(); {code} I did the tests on the Emulator, but looking at the results [~kota] achieved with https://github.com/appcelerator-developer-relations/Mobile-App-Performance/ the same is true for device.",8 TIMOB-18856,"Windows: hardware back button should close Ti.Window","All Titanium app for Windows Store should follow Windows Store policies described at https://msdn.microsoft.com/en-us/library/windows/apps/dn764944 . This includes app navigation policy on how to handle back button with your page/dialog. Currently Ti app closes immediately when you press the back button even when you open multiple {{Ti.Window}}. {quote} Where applicable, pressing the back button should take the user to a previous page/dialog. If the user presses the back button on the first page of the app, then the app terminates (unless it is allowed to run in the background). {quote}",8 TIMOB-19192,"Android: Date & Time Picker change event not fired nor is picker.value updated","On Android 5, the Titanium date picker is broken. 1. It no longer fires the changed event so you can't obtain the selected value as it updates. This happens whether on Ti SDK 4.X or 3.5.1.GA. 2. It no longer updates the picker.value so you can't obtain the selected value on demand. This works on Ti SDK 3.5.1.GA, so seems to be an issue only on Ti SDK 4.X. {code:javascript} Ti.UI.backgroundColor = 'white'; var win = Ti.UI.createWindow({ exitOnClose: true, layout: 'vertical' }); var picker = Ti.UI.createPicker({ type:Ti.UI.PICKER_TYPE_DATE, minDate:new Date(2009,0,1), maxDate:new Date(2014,11,31), value:new Date(2014,3,12), top:50 }); win.add(picker); win.open(); picker.addEventListener('change',function(e){ alert(""User selected date: "" + e.value.toLocaleString()); }); setTimeout(function() { alert('picker.value: ' + picker.value); }, 10000); {code} Note that this alternative approach works: {code:javascript} Ti.UI.backgroundColor = 'white'; var picker = Ti.UI.createPicker({ type:Ti.UI.PICKER_TYPE_DATE, minDate:new Date(2009,0,1), maxDate:new Date(2014,11,31), value:new Date(2014,3,12) }); picker.showDatePickerDialog({ value: new Date(2010,8,1), callback: function(e) { if (e.cancel) { alert('User canceled dialog'); } else { alert('User selected date: ' + e.value); } } }); {code}",5 TIMOB-18859,"Windows: CI build server for JavaScriptCore","Currently Ti for Windows is based on custom JavaScriptCore static library which is built from personal WebKit branch at https://github.com/infosia/webkit-wp8/tree/javascriptcore-wp8.1. We have https://github.com/appcelerator/webkit but it doesn't track changes for Windows Phone. It should be the master of Windows Phone branch and should have CI server built on it. ",5 TIMOB-18860,"Windows: Introduce Nullable templated type in TitaniumKit APIs","We have no notion of ""null"" primitive values. This is problematic when we have special arguments/parameter structs like MatrixCreationDict. It's also problematic if we want to check if a property has never been assigned a value (say color, on an animation). We can use ""default"" values and check for those (such as empty string), but for double/int32_t, uint32_t that's often more problematic. We want to explicitly know if the user gave a 0/-1/whatever versus never having set a value. There's the boost:optional type we could use, or we could simply make our own type.",8 TIMOB-18864,"Windows: Stub Ti.Media module with constants, stubs for methods, no event firing",http://docs.appcelerator.com/titanium/3.0/#!/api/Titanium.Media,8 TIMOB-18865,"iOS8: Keyboard toolbar not removed when undocking keyboard","h6.Steps to reproduce 1) Run sample on iPad Sim/device and hit ""Focus to see keyboard w/ toolbar"" 2) Undock Keyboard by clicking the icon at bottom right. 3) Events work as expected 4) Hide keyboard, noticed toolbar remains in the middle of screen. h6.Test Case {code} var win = Ti.UI.createWindow({ //title : _args.title }); win.orientationModes = [Titanium.UI.PORTRAIT, Titanium.UI.UPSIDE_PORTRAIT, Titanium.UI.LANDSCAPE_LEFT, Titanium.UI.LANDSCAPE_RIGHT]; var flexSpace = Titanium.UI.createButton({ systemButton : Titanium.UI.iPhone.SystemButton.FLEXIBLE_SPACE }); var tf = Titanium.UI.createTextField({ height : 32, backgroundImage : 'KS_nav_ui.png', width : 200, font : { fontSize : 13 }, color : '#777', paddingLeft : 10, borderStyle : Titanium.UI.INPUT_BORDERSTYLE_NONE }); var camera = Titanium.UI.createButton({ backgroundImage : 'KS_nav_views.png', height : 33, width : 33 }); camera.addEventListener('click', function() { Titanium.UI.createAlertDialog({ title : 'Toolbar', message : 'You clicked camera!' }).show(); }); var send = Titanium.UI.createButton({ backgroundImage : 'KS_nav_ui.png', backgroundSelectedImage : 'KS_nav_views.png', width : 67, height : 32 }); send.addEventListener('click', function() { Titanium.UI.createAlertDialog({ title : 'Toolbar', message : 'You clicked send!' }).show(); }); var textfield = Titanium.UI.createTextField({ color : '#336699', value : 'Focus to see keyboard w/ toolbar', height : 35, width : 300, top : 10, borderStyle : Titanium.UI.INPUT_BORDERSTYLE_ROUNDED, keyboardToolbar : [flexSpace, camera, flexSpace, tf, flexSpace, send, flexSpace], keyboardToolbarColor : '#999', keyboardToolbarHeight : 40 }); var textfield2 = Titanium.UI.createTextField({ color : '#336699', value : 'Focus to see keyboard w/o toolbar', height : 35, width : 300, top : 70, borderStyle : Titanium.UI.INPUT_BORDERSTYLE_ROUNDED }); win.add(textfield); win.add(textfield2); win.open(); {code}",13 TIMOB-18866,"iOS: Fix segmentation faults in ios-sim","ios-sim recently started supporting watch apps, but this new functionality introduced some segmentation faults. ios-sim needs to be cleaned up and should probably use ARC for managing memory.",5 TIMOB-18867,"iOS: ioslib needs to be updated with latest ios-sim and Xcode 6.3 support","ioslib needs to be updated with the latest changes to ios-sim from TIMOB-18866 as well as properly handle simulator crash files for Xcode 6.3 iOS Simulators.",21 TIMOB-18877,"Geocoder sample from Studio dashboard fails with uncaught NSException on 7.1 simulators","h5. Description: I was able to import the geocoder sample, then build for simulator. The console reports the following and the app did not run: {code} -- Start simulator log ------------------------------------------------------- [INFO] : Application started [INFO] : Geocoder/1.0 (4.0.0.9b6eaf9) [ERROR] : The application has crashed with an uncaught exception 'NSInvalidArgumentException'. [ERROR] : Reason: [ERROR] : -[UIButton setPreservesSuperviewLayoutMargins:]: unrecognized selector sent to instance 0x7ef7ef20 [ERROR] : Stack trace: [ERROR] : [ERROR] : 0 CoreFoundation 0x0460b1c8 __exceptionPreprocess + 152 [ERROR] : 1 libobjc.A.dylib 0x042d48e5 objc_exception_throw + 44 [ERROR] : 2 CoreFoundation 0x046a8243 -[NSObject(NSObject) doesNotRecognizeSelector:] + 275 [ERROR] : 3 CoreFoundation 0x045fb50b ___forwarding___ + 1019 [ERROR] : 4 CoreFoundation 0x045fb0ee _CF_forwarding_prep_0 + 14 [ERROR] : 5 Geocoder 0x005ddb5e -[TiMapAnnotationProxy makeButton:tag:] + 495 [ERROR] : 6 Geocoder 0x005de4c9 -[TiMapAnnotationProxy leftViewAccessory] + 223 [ERROR] : 7 Geocoder 0x005e8f00 -[TiMapView mapView:viewForAnnotation:] + 792 [ERROR] : 8 MapKit 0x00a13676 -[MKMapView annotationManager:representationForAnnotation:] + 366 [ERROR] : 9 MapKit 0x00a4afd1 -[MKAnnotationManager _addRepresentationForAnnotation:] + 475 [ERROR] : 10 MapKit 0x00a49c31 -[MKAnnotationManager showAnnotationsInMapRect:] + 815 [ERROR] : 11 MapKit 0x00a04a88 -[MKMapView _goToMapRegion:duration:animationType:resetHeading:completionHandler:] + 444 [ERROR] : 12 MapKit 0x00a048c7 -[MKMapView _goToMapRegion:duration:animationType:resetHeading:] + 74 [ERROR] : 13 MapKit 0x00a057ba -[MKMapView _setZoomScale:centerMapPoint:duration:animationType:resetHeading:] + 582 [ERROR] : 14 MapKit 0x00a04877 -[MKMapView _setZoomScale:centerCoordinate:duration:animationType:resetHeading:] + 129 [ERROR] : 15 MapKit 0x00a0759b -[MKMapView _goToCenterCoordinate:zoomLevel:animationType:cancelDefaultLocationTimer:] + 1536 [ERROR] : 16 MapKit 0x00a06882 -[MKMapView goToCenterCoordinate:zoomLevel:animationType:] + 81 [ERROR] : 17 MapKit 0x00a0db46 -[MKMapView goToRegion:animationType:] + 138 [ERROR] : 18 MapKit 0x00a0d788 -[MKMapView setRegion:animated:] + 359 [ERROR] : 19 Geocoder 0x005e4151 -[TiMapView render] + 589 [ERROR] : 20 Geocoder 0x005e46ba -[TiMapView frameSizeChanged:bounds:] + 193 [ERROR] : 21 Geocoder 0x000aae27 -[TiUIView checkBounds] + 855 [ERROR] : 22 Geocoder 0x000aaf27 -[TiUIView setBounds:] + 119 [ERROR] : 23 Geocoder 0x005e45ed -[TiMapView setBounds:] + 192 [ERROR] : 24 Geocoder 0x00089c4a -[TiViewProxy relayout] + 1642 [ERROR] : 25 Geocoder 0x0008340c -[TiViewProxy view] + 1852 [ERROR] : 26 Geocoder 0x0008d2ca -[TiViewProxy layoutChild:optimize:withMeasuredBounds:] + 202 [ERROR] : 27 Geocoder 0x0007b472 -[TiViewProxy add:] + 1922 [ERROR] : 28 Geocoder 0x0007b6d3 __19-[TiViewProxy add:]_block_invoke + 51 [ERROR] : 29 Geocoder 0x0014f80c __TiThreadPerformOnMainThread_block_invoke + 60 [ERROR] : 30 Geocoder 0x0014fc80 TiThreadProcessPendingMainThreadBlocks + 528 [ERROR] : 31 Geocoder 0x0014fa59 __TiThreadPerformOnMainThread_block_invoke208 + 57 [ERROR] : 32 libdispatch.dylib 0x056337b8 _dispatch_call_block_and_release + 15 [ERROR] : 33 libdispatch.dylib 0x056484d0 _dispatch_client_callout + 14 [ERROR] : 34 libdispatch.dylib 0x05636726 _dispatch_main_queue_callback_4CF + 340 [ERROR] : 35 CoreFoundation 0x0467043e __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 14 [ERROR] : 36 CoreFoundation 0x045b15cb __CFRunLoopRun + 1963 [ERROR] : 37 CoreFoundation 0x045b09d3 CFRunLoopRunSpecific + 467 [ERROR] : 38 CoreFoundation 0x045b07eb CFRunLoopRunInMode + 123 [ERROR] : 39 GraphicsServices 0x054445ee GSEventRunModal + 192 [ERROR] : 40 GraphicsServices 0x0544442b GSEventRun + 104 [ERROR] : 41 UIKit 0x0172af9b UIApplicationMain + 1225 [ERROR] : 42 Geocoder 0x0003cdd8 main + 408 [ERROR] : 43 libdyld.dylib 0x0587c6d9 start + 1 [ERROR] : 44 ??? 0x00000001 0x0 + 1 [ERROR] : [ERROR] : 2015-05-01 15:51:14.469 Geocoder[99413:70b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIButton setPreservesSuperviewLayoutMargins:]: unrecognized selector sent to instance 0x7ef7ef20' [ERROR] : *** First throw call stack: [ERROR] : ( [ERROR] : 0 CoreFoundation 0x0460b1e4 __exceptionPreprocess + 180 [ERROR] : 1 libobjc.A.dylib 0x042d48e5 objc_exception_throw + 44 [ERROR] : 2 CoreFoundation 0x046a8243 -[NSObject(NSObject) doesNotRecognizeSelector:] + 275 [ERROR] : 3 CoreFoundation 0x045fb50b ___forwarding___ + 1019 [ERROR] : 4 CoreFoundation 0x045fb0ee _CF_forwarding_prep_0 + 14 [ERROR] : 5 Geocoder 0x005ddb5e -[TiMapAnnotationProxy makeButton:tag:] + 495 [ERROR] : 6 Geocoder 0x005de4c9 -[TiMapAnnotationProxy leftViewAccessory] + 223 [ERROR] : 7 Geocoder 0x005e8f00 -[TiMapView mapView:viewForAnnotation:] + 792 [ERROR] : 8 MapKit 0x00a13676 -[MKMapView annotationManager:representationForAnnotation:] + 366 [ERROR] : 9 MapKit 0x00a4afd1 -[MKAnnotationManager _addRepresentationForAnnotation:] + 475 [ERROR] : 10 MapKit 0x00a49c31 -[MKAnnotationManager showAnnotationsInMapRect:] + 815 [ERROR] : 11 MapKit 0x00a04a88 -[MKMapView _goToMapRegion:duration:animationType:resetHeading:completionHandler:] + 444 [ERROR] : 12 MapKit 0x00a048c7 -[MKMapView _goToMapRegion:duration:animationType:resetHeading:] + 74 [ERROR] : 13 MapKit 0x00a057ba -[MKMapView _setZoomScale:centerMapPoint:duration:animationType:resetHeading:] + 582 [ERROR] : 14 MapKit 0x00a04877 -[MKMapView _setZoomScale:centerCoordinate:duration:animationType:resetHeading:] + 129 [ERROR] : 15 MapKit 0x00a0759b -[MKMapView _goToCenterCoordinate:zoomLevel:animationType:cancelDefaultLocationTimer:] + 1536 [ERROR] : 16 MapKit 0x00a06882 -[MKMapView goToCenterCoordinate:zoomLevel:animationType:] + 81 [ERROR] : 17 MapKit 0x00a0db46 -[MKMapView goToRegion:animationType:] + 138 [ERROR] : 18 MapKit 0x00a0d788 -[MKMapView setRegion:animated:] + 359 [ERROR] : 19 Geocoder 0x005e4151 -[TiMapView render] + 589 [ERROR] : 20 Geocoder 0x005e46ba -[TiMapView frameSizeChanged:bounds:] + 193 [ERROR] : 21 Geocoder 0x000aae27 -[TiUIView checkBounds] + 855 [ERROR] : 22 Geocoder 0x000aaf27 -[TiUIView setBounds:] + 119 [ERROR] : 23 Geocoder 0x005e45ed -[TiMapView setBounds:] + 192 [ERROR] : 24 Geocoder 0x00089c4a -[TiViewProxy relayout] + 1642 [ERROR] : 25 Geocoder 0x0008340c -[TiViewProxy view] + 1852 [ERROR] : 26 Geocoder 0x0008d2ca -[TiViewProxy layoutChild:optimize:withMeasuredBounds:] + 202 [ERROR] : 27 Geocoder 0x0007b472 -[TiViewProxy add:] + 1922 [ERROR] : 28 Geocoder 0x0007b6d3 __19-[TiViewProxy add:]_block_invoke + 51 [ERROR] : 29 Geocoder 0x0014f80c __TiThreadPerformOnMainThread_block_invoke + 60 [ERROR] : 30 Geocoder 0x0014fc80 TiThreadProcessPendingMainThreadBlocks + 528 [ERROR] : 31 Geocoder 0x0014fa59 __TiThreadPerformOnMainThread_block_invoke208 + 57 [ERROR] : 32 libdispatch.dylib 0x056337b8 _dispatch_call_block_and_release + 15 [ERROR] : 33 libdispatch.dylib 0x056484d0 _dispatch_client_callout + 14 [ERROR] : 34 libdispatch.dylib 0x05636726 _dispatch_main_queue_callback_4CF + 340 [ERROR] : 35 CoreFoundation 0x0467043e __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 14 [ERROR] : 36 CoreFoundation 0x045b15cb __CFRunLoopRun + 1963 [ERROR] : 37 CoreFoundation 0x045b09d3 CFRunLoopRunSpecific + 467 [ERROR] : 38 CoreFoundation 0x045b07eb CFRunLoopRunInMode + 123 [ERROR] : 39 GraphicsServices 0x054445ee GSEventRunModal + 192 [ERROR] : 40 GraphicsServices 0x0544442b GSEventRun + 104 [ERROR] : 41 UIKit 0x0172af9b UIApplicationMain + 1225 [ERROR] : 42 Geocoder 0x0003cdd8 main + 408 [ERROR] : 43 libdyld.dylib 0x0587c6d9 start + 1 [ERROR] : 44 ??? 0x00000001 0x0 + 1 [ERROR] : ) [ERROR] : libc++abi.dylib: terminating with uncaught exception of type NSException {code} h5. Steps to reproduce: 1) Launch Studio, check dashboard, import geocoder sample 2) Set to 4.0.0.RC2 SDK and save 3) Run for iOS 7.1 iPad 2 simulator 4) Observe console h5. Result: Error as shown above h5. Expected Result: No uncaught exception",3 TIMOB-19234,"iOS debugger connection refused with SDKs 3.5.0 and 3.5.1","h2. iOS debugger connection refused with SDKs 3.5.0 and 3.5.1 After upgrading from SDK 3.4.1 to 3.5.0 (and 3.5.1), I can no longer debug under iOS. The iOS emulator starts and my application is loaded and runs ok. However, although Studio switches to the debug perspective, any breakpoints I set are ignored and I have no debugging capabilities. The only symptom indicating any issue are the series of messages like the one shown below in the Studio log file. Reverting to SDK 3.4.1 in my tiapp.xml restores the debugging capabilities. h2. Logs {code:lang=none|title=~/Documents/Titanium_Studio_Workspace/.metadata/.log} !ENTRY com.aptana.js.debug.core 4 4 2015-05-04 05:30:38.465 !MESSAGE !STACK 0 java.lang.NullPointerException org.eclipse.core.runtime.Path.fromPortableString(Path.java:103) com.appcelerator.titanium.core.launching.TitaniumAppURIMapper.resolve(TitaniumAppURIMapper.java:71) com.aptana.js.debug.core.internal.model.JSDebugTarget.resolveSourceFile(JSDebugTarget.java:2199) com.aptana.js.debug.core.internal.model.JSDebugTarget.handleScripts(JSDebugTarget.java:730) com.aptana.js.debug.core.internal.model.JSDebugTarget.access$6(JSDebugTarget.java:703) com.aptana.js.debug.core.internal.model.JSDebugTarget$DebugConnectionHandler.handleMessage(JSDebugTarget.java:2355) com.aptana.js.debug.core.internal.model.DebugConnection.handleMessage(DebugConnection.java:228) com.aptana.js.debug.core.internal.model.DebugConnection.access$3(DebugConnection.java:223) com.aptana.js.debug.core.internal.model.DebugConnection$1.run(DebugConnection.java:155) {code} h2. Discussions Here is a Q&A discussion where several other developers are reporting a similar issue... [http://developer.appcelerator.com/question/181417/debug-connection-refused-with-sdk-35-and-ios]",8 TIMOB-18870,"Android: HTTPClient Onload Callback handles GET request incorrectly","h6.Issue Description When an user submits, in the 'load' event of the webview, document download functionality is initiated an completed. Contents are written to a file and fetched back and displayed in the webview. We are facing the below issues in android (works fine in iOS): 1. When calling HTTPClient document is not properly downloaded. The actual size of the document is around 10MB while the downloaded size is around 6KB 2. If the document download is initiated once, the login screen doesn’t render on the mobile app until we re-install the app. We have also tried to disable cache. Also a forbidden error occurs only when trying from within the app. If you hit the same url from Chrome browser, it works with the credentials used. h6.Use Case To download a remote document. The remote url will first render a Login screen; after successful login, the same url will render the actual document. h6.Android 4.0.4 device output: {code} 05-04 15:27:03.398: I/TiAPI(9530): 0.35535908174344655 05-04 15:27:03.398: I/TiAPI(9530): 0.8045602605863192 05-04 15:27:03.437: I/TiAPI(9530): 1 05-04 15:27:03.447: I/TiAPI(9530): onload called, readyState = 4 05-04 15:27:03.447: I/TiAPI(9530): download file onload {code} h6.Android 4.4.4 device output: {code} 05-04 15:48:41.077: I/TiAPI(7104): 1 05-04 15:48:41.079: I/TiAPI(7104): onload called, readyState = 4 05-04 15:48:41.079: I/TiAPI(7104): download file onload {code} h6.iOS 8.2 device output: {code} [DEBUG] New scheme: { URL: https://keysight-preprod.assetserv.com/das/UI/Login } [DEBUG] New scheme: { URL: https://keysight-preprod.assetserv.com/r2/servlet/dload/Leveraging-Big-Data.pdf?force_dload=true&confirm_license=true&id=4977 } [INFO] webViewonload - else [INFO] download file {code} h6.Test Case When we open the link it will ask for login, the login username and password it's been set automatically. Just hit the login button. Then the content will be downloaded fully and open. {code} var win = Ti.UI.createWindow(); win.addEventListener('open', function() { downloadKF(); }); var testWebView = Ti.UI.createWebView({ height : Ti.UI.FILL, width : Ti.UI.FILL }); testWebView.addEventListener('load', webViewonload); testWebView.addEventListener('error', webViewOnError); win.add(testWebView); win.open(); var loggedin = false; function downloadKF(e) { testWebView.url = url; } function autoLoginUser() { if (_emailID && _password) { testWebView.evalJS(""document.getElementById('IDToken1').value = '"" + _emailID + ""'""); testWebView.evalJS(""document.getElementById('IDToken2').value = '"" + _password + ""'""); testWebView.evalJS(""LoginSubmit('Log In')""); loggedin = true; } } function webViewonload(e) { if (loggedin == false) { Ti.API.info('onload ' + e.source.html); setTimeout(function(e) { Ti.API.info('called autologin'); autoLoginUser(); }, 5); } else { Ti.API.info('webViewonload - else'); setTimeout(function(e) { downloadFile(); }, 1000); } } function webViewOnError(e) { Ti.API.info(' e.error code ' + e.errorCode); if (e.errorCode == -1015) { var _errorText = 'Incomplete download. \n(Error details: ' + e.message + ', Error code: ' + e.errorCode + '). \nPage will refresh.'; reloadInASecondWithMessage(_errorText); } } function reloadInASecondWithMessage(errorText) { testWebView.html = errorText; setTimeout(function incompleteMessageHandler() { testWebView.url = url; }, 1000); } function downloadFile() { Ti.API.info('download file'); var xhr = Titanium.Network.createHTTPClient({ onload : function(e) { Ti.API.info('onload called, readyState = ' + this.readyState); Ti.API.info('download file onload'); if (Ti.Filesystem.isExternalStoragePresent()) { sdPath = 'file:///sdcard/'; var folder = Ti.Filesystem.getFile(sdPath, 'Testing'); if (!folder.exists()) { folder.createDirectory(); } newPath = 'file:///sdcard/Testing/' + fileName; tmpFile = Ti.Filesystem.getFile(newPath); tmpFile.write(this.responseData); openFile(); } else { alert('No external storage present'); } }, timeout : 50000, onerror : function(e) { Ti.API.info('Error: ' + JSON.stringify(e)); }, ondatastream : function(e) { Ti.API.info(e.progress); } }); xhr.open('GET', url); xhr.send(); } function openFile() { var tmpFile = Ti.Filesystem.getFile('file:///sdcard/Testing/' + fileName); if (tmpFile.exists()) { Ti.API.info('tempfile: ' + tmpFile + ' ___ ' + JSON.stringify(tmpFile)); testWebView.backgroundColor = 'red'; testWebView.setData(tmpFile.nativePath); } else { Ti.API.info('File not found'); } } {code}",8 TIMOB-18871,"iOS: How to make Views inside tabbedBar work","How can we use additional views inside tabbedBar like [doc|http://docs.appcelerator.com/platform/latest/#!/api/Titanium.UI.iOS.TabbedBar] say. I tried the following code, but do not work at all. So i am not sure how to do it now. Please Help. {code} 1 2 3> {code}",5 TIMOB-18913,"Android: VideoPlayer is not playing mp4 videos anymore on Android L/Lollipop/5","*Description:* Video playback on Android L seems broken with SDK 3.5.1 (and 4.0.0RC2). MP4 files do not show video and audio output. *How to reproduce:* Run the attached app.js on a Android L device. Code is taken from http://docs.appcelerator.com/titanium/3.0/#!/api/Titanium.Media.VideoPlayer. *What should happen:* Video should be played after the app is deployed. *What does happen:* Blank/Black VideoPlayer, no video is played, no sound. After several seconds the console shows (both of them!): [ERROR] : MediaPlayer: error (1, -2147483648) [ERROR] : MediaPlayer: Error (1,-2147483648) Nothing more changes. Setting autoplay to false and adding a call to .play on the VideoPlayer object creates this log message: [WARN] : VideoPlayerProxy: (main) [101,101] Player action ignored; player has not been created. *Where does it work:* The same app does work on a Nexus 10 device running Android 4.4.4 (KitKat). It does not work either on other devices running Android 5.0.2 and 5.1. It does work in iOS simulator. It does not work with Ti SDK 4.0.0RC2 on Android 5.1. Several different mp4 files do not work either in the environment described.",5 TIMOB-18873,"Building an iOS app with 4.0.0 and then rebuilding with 3.5.1.GA fails","Description When building a project with a 4.0.0 SDK and then rebuilding the project with 3.5.1.GA the build fails with the below. {code} [TRACE] Undefined symbols for architecture i386: [TRACE] ""_Ti_WTFCrash"", referenced from: [TRACE] TiDebuggerInterface::resetObjectProperty(int, std::__1::vector, std::__1::allocator >, std::__1::allocator, std::__1::allocator > > > const&) in libti_ios_debugger.a(TiDebuggerInterface.o) [TRACE] ld: symbol(s) not found for architecture i386 [TRACE] clang: error: linker command failed with exit code 1 (use -v to see invocation) [ERROR] 2015-05-06 17:57:01.479 xcodebuild[16656:2799819] DeveloperPortal: Using pre-existing current store at URL (file:///Users/eharris/Library/Developer/Xcode/DeveloperPortal%206.3.db). [ERROR] ** BUILD FAILED ** [ERROR] The following build commands failed: [ERROR] Ld build/testApp123.build/Debug-iphonesimulator/testApp123-universal.build/Objects-normal/x86_64/testApp123 normal x86_64 [ERROR] Ld build/testApp123.build/Debug-iphonesimulator/testApp123-universal.build/Objects-normal/i386/testApp123 normal i386 [ERROR] (2 failures) {code} *Notes* As per the linked ticket when cleaning I do not see the issue, on Android I am not sure whether the issue will occur due to CLI-616. Full output is attached as fullOutput.txt This issue can be reproduced using Titanium CLI@4.0.0-beta8 so is not an appc cli issues h5.Steps to reproduce 1. Create a project using a 4.0.0 SDK 2. Build the project using {{appc run -p ios}} 3. Change the SDK in the tiapp.xml and run ti sdk select and choose the latest 3.5.1.GA 4. Run {{appc run -p ios}} again h5.Actual result 2. The build will pass 4. The build will fail with errors such as the one listed above h5.Expected result The build should pass both times ",5 TIMOB-18874,"Android: Add missing option cacheSize for scrollableViews","On iOS, the cacheSize argument is present, but on Android this is missing. This leads to empty views in some cases that don't get rebuilt correctly after scrolling. Code is tested on SDK 3.5.1.GA Multiple Android versions and works. PR here for review: https://github.com/appcelerator/titanium_mobile/pull/6767 Thanks to skoften.",3 TIMOB-18875,"Windows: TitaniumKit Color implementation","Currently ""Color"" implementation only exists in Windows-specific code. We could create more cross-platform Color type in TitaniumKit.",8 TIMOB-18876,"TiUIMapView: Not loading at all (Nested fragments)","TIMOB-18244 - Map view as center view for drawer layout works just fine. *But placing map view into a wrapper view and setting the same as center view for drawer layout, never lets the map load.* May be using http://developer.android.com/reference/android/app/Fragment.html#getChildFragmentManager() can fix this. Not sure how :( {code:title=Test Case} var TiDrawerLayout = require('com.tripvi.drawerlayout'); var Map = require(""ti.map""); var win = Ti.UI.createWindow({ backgroundColor : 'white' }); var drawer = TiDrawerLayout.createDrawer(); var menu = Ti.UI.createTableView({ data : [{ title : ""Home"" }, { title : ""About"" }] }); var wrapperView = Ti.UI.createView({ backgroundColor : 'orange', }); wrapperView.add(Ti.UI.createLabel({ top : 10, text : ""I would like to place a list view or some other compoent here, now map never loads"", color : ""#fff"" })); var mapview = Map.createView({ bottom : 0, height : ""50%"", fragmentOnly : true //setting this to false crashes the app }); wrapperView.add(mapview); drawer.setLeftView(menu); drawer.setCenterView(wrapperView); win.add(drawer); win.open(); {code}",13 TIMOB-18878,"Windows: Hook loading of native types through require","When typical require returns no results, and the type if a native types (i.e. 'Windows.UI.Xaml.Controls.Page') we need a mechanism to register a callback/hook into the Windows global object to then create our type wrapper class for it, and return it as the module.exports value. We should allow searching for files matching that name in JS in case someone wants to have a JS overridden version that ""wins"" for require. Ideally we'd have the global allow registering the hook at runtime and have the actual hook int he user's app so it limits the scope of types it'd pull in.",13 TIMOB-18879,"Windows: Allow casting to a different native type","We should allow the ability to ""upcast"". We could simply hang a ""JSObject Platform::Object::cast(std::string& type)"" method that is on all native wrapped objects and would take the new type name. Then we'd have a giant generated if/else block where we test against the known set of type names and do the unwrapping/wrapping to ""cast"" it: {code} auto wrapped_object = unwrap(); auto new_type = js_context.CreateObject(JSExport::Class()); auto new_wrapper = new_type.GetPrivate(); new_wrapper->wrap(dynamic_cast(wrapped_object)); return new_type; {code}",8 TIMOB-18880,"Windows: Implement Ti.Media methods","http://docs.appcelerator.com/titanium/3.0/#!/api/Titanium.Media Implement the non create* methods: -beep -hideCamera -hideMusicLibrary -isMediaTypeSupported -openMusicLibrary -openPhotoGallery -previewImage -queryMusicLibrary -requestAuthorization -saveToPhotoGallery -setOverrideAudioRoute -showCamera -startMicrophoneMonitor -stopMicrophoneMonitor -switchCamera -takePicture -takeScreenshot -vibrate",13 TIMOB-18881,"Windows: Fire Ti.Media events",http://docs.appcelerator.com/titanium/3.0/#!/api/Titanium.Media,5 TIMOB-18882,"Windows: Crawl user's app for native requires","We need a mechanism as part of the build to crawl the user's app to generate the list of native types required. We may need to also handle ""dynamic"" requires and treat them as needing _all_ native types. We can then use this list of types and their dependencies to trim down the list of included types we'd incorporate into the require and cast hooks from TIMOB-18878 and TIMOB-18879.",13 TIMOB-18883,"Windows: Allow registering event handlers with callback functions","We should allow hooking and removing event handlers in a JS-like fashion and handling the conversion to the right native calls in native wrappers. https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener We'll need to do some translation of event names and also mapping to various handlers/event registration types that Windows uses, as well as wrap the added handler with a call to the callback function.",13 TIMOB-23533,"If you have LiveView enabled, then you cannot registerForPushNotifications on iOS","*Details:* If you have LiveView enabled, then you cannot registerForPushNotifications on iOS. *Note:* To workaround this issue, turn off LiveView. *Steps to reproduce:* # Make sure you have a valid provisioning profile for iOS push # Create a Titanium app with services enabled # On platform.appcelerator.com, make sure to setup iOS push # Next, download, unzip, and copy contents of Archive.zip into Titanium Resources directory # Enable LiveView # Install app to device # Once the app is launched, go to *Push Notifications > Settings for This Device* # Click the *Disabled* button to *Enable* push notification *Actual:* Device token is not retrieved i.e. {{Ti.Network.registerForPushNotifications}} is not registering the {{success}} callback; go to {{Resources/windows/pushNotifications/pushManager.js}} and see line 76. *Expected:* Device token should be retrieved from ACS; see attachment.",8 TIMOB-18889,"iOS: ImageView with Remote URLs broken","ImageViews are no longer loading images with remote URLs on 4.0.0.RC3 (images appear as broken) Same code works fine on 4.0.0.RC2 and RC1 Example URL: https://graph.facebook.com/100002169640003/picture?width=100&height=100&return_ssl_resources=1 (also tried with non-HTTPS and it is also broken on iOS) Android is working fine.",5 TIMOB-18890,"iOS: ImageView is not rendering remote urls","Ti SDK 4.0.0.RC3 - ImageView is not rendering images from remote URLs When assigning the image property to a remote url (that points to a valid image) the ImageView is not rendering the image. Expectation is that the imageView should render the image. ",3 TIMOB-18906,"Facebook: Problems in 'presentWebShareDialog'","The first problem is that documentation say that is not necessary to do login flow before the use of presentWebShareDialog, but if i don't do that the app crash with the stack error: 'session cannot be null' in android log cat. The second problem occurs when i try to use presentWebShareDialog after login: the facebook share popup seems to not get the passed params: link, name, caption, picture and description !Screenshot_fb.png|thumbnail! ",3 TIMOB-18901,"iOS: Getting error when using example code about Calendar","h5.Reproduce: 1. Run the example code ""**Events in a year*"" in our [doc|http://docs.appcelerator.com/platform/latest/#!/api/Titanium.Calendar]. 2. Then click the views events button h5.Expect Result: Should display the result. h5.Actual Result: There will be a error in log console: ""Error getting shared calendar invitations for entity types 3 from daemon: Error Domain=EKCADErrorDomain Code=1013 ""The operation couldn’t be completed. (EKCADErrorDomain error 1013.)""""",5 TIMOB-18902,"HTTPClient: unable set content-type as json for multipart post request using Httpclient","h5.Description: HTTP request sends post to a Salesforce.com REST api that is expecting a multipart request with content-type set clearly for each of the parts, like the following: {quote} POST /services/data/v33.0/chatter/feed-elements HTTP/1.1 Authorization: OAuth 00DRR0000000N0g!... User-Agent: Jakarta Commons-HttpClient/3.0.1 Host: instance_name Content-Length: 845 Content-Type: multipart/form-data; boundary=boundary Accept: application/json --boundary Content-Disposition: form-data; name=""json"" Content-Type: application/json; charset=UTF-8 { ""somejson"":""data"" } --boundary Content-Disposition: form-data; name=""feedElementFileUpload""; filename=""receipt.pdf"" Content-Type: application/octet-stream; charset=ISO-8859-1 filecontent {quote} If we set xhr.setRequestHeader(""enctype"", ""multipart/form-data""), This is fine for the file part, as Titanium is doing the magic. However, for the json part, Titanium will not set it and hence caused parsing errors for the post request. How can we support that?",13 TIMOB-18904,"Windows: Combine JavaScriptCore projects for Windows 8.1","We have 4 separate projects for building JavaScriptCore for Windows 8, Windows Phone 8, Windows 8.1 (Store and x86 Phone), and Windows Phone 8.1 ARM. We should attempt to combine at least the 8.1 projects into one, and possibly the 8 into one (or into the 8.1).",5 TIMOB-18905,"Android: Update Appcompat Lib to 22.1 & Alert Dialogs with material ","Android Support Library needs updating. Based on this official Android blog entry: http://android-developers.blogspot.sg/2015/04/android-support-library-221.html AppCompat Support Library has been updated and brings more support for material design and tinting. After this is done, the SDK can be updated to fully use the AppCompat support in widgets and more.",5 TIMOB-18916,"iOS: Posting a photo to Facebook gives ""Unsupported FBRequest parameter type:TiBlob""","Post a Photo Using the Graph API from the Gallery or image in resources directory does not work on iOS always show this log info. [Community Question|https://community.appcelerator.com/topic/445/posting-a-photo-to-facebook-doesn-t-support-blobs-ios] But It works on Android. {code:title=Consol Log} [INFO] : FBSDKLog: Unsupported FBRequest parameter type:TiBlob [INFO] : -[TiBlob _fastCharacterContents]: unrecognized selector sent to instance 0x176261d0 {code} *Testing Environments* Operating System Name = Mac OS X Version = 10.9.5 Architecture = 64bit Node.js Node.js Version = 0.10.37 npm Version = 1.4.28 Titanium CLI CLI Version = 4.0.0-beta8 Titanium SDK SDK Version = 4.0.0.RC4 Target Platform = iphone *Test Code* {code:title=app.js} var fb = require(""facebook""); var win = Ti.UI.createWindow({ backgroundColor : '#FFFFFF', }); fb.addEventListener('login', function(e) { if (e.success) { alert('Logged in'); } }); fb.addEventListener('logout', function(e) { alert('Logged out'); }); if (Ti.Platform.name === 'android') { win.fbProxy = fb.createActivityWorker({ lifecycleContainer : win }); } // Add the button. Note that it doesn't need a click event listener. win.add(fb.createLoginButton({ readPermissions : ['read_stream', 'email'], top : 50 })); var B2_TITLE = 'Upload Photo from file with Graph API'; var b2 = Ti.UI.createButton({ title : B2_TITLE, left : 10, right : 10, top : 200, height : 80 }); win.add(b2); b2.addEventListener('click', function() { b2.title = 'Uploading Photo...'; var f = Ti.Filesystem.getFile(Ti.Filesystem.resourcesDirectory, 'KS_nav_ui.png'); var blob = f.read(); var data = { caption : 'behold, a flower', picture : blob }; fb.requestNewPublishPermissions(['publish_actions', 'read_stream', 'user_hometown'], fb.AUDIENCE_FRIENDS, function(e) { if (e.success) { Ti.API.info('Permissions:' + fb.permissions); fb.requestWithGraphPath('me/photos', data, ""POST"", function(outcome) { alert(""Posted! Photo Posted To Your Page""); }); } if (e.error) { Ti.API.info('Publish permission error'); } if (e.cancelled) { Ti.API.info('Publish permission cancelled'); } }); }); win.open(); {code} Thanks.",5 TIMOB-18917,"Windows: Implement Ti.Calendar top-level module","http://docs.appcelerator.com/platform/latest/#!/api/Titanium.Calendar https://msdn.microsoft.com/en-us/library/windows/apps/xaml/dn631243.aspx https://msdn.microsoft.com/en-us/library/windows/apps/windows.applicationmodel.appointments.aspx h2. Constants - AUTHORIZATION_AUTHORIZED : Number READONLY - AUTHORIZATION_DENIED : Number READONLY - AUTHORIZATION_RESTRICTED : Number READONLY - AUTHORIZATION_UNKNOWN : Number READONLY - AVAILABILITY_BUSY : Number READONLY - AVAILABILITY_FREE : Number READONLY - AVAILABILITY_NOTSUPPORTED : Number READONLY - AVAILABILITY_TENTATIVE : Number READONLY - AVAILABILITY_UNAVAILABLE : Number READONLY - METHOD_ALERT : Number READONLY - METHOD_DEFAULT : Number READONLY - METHOD_EMAIL : Number READONLY - METHOD_SMS : Number READONLY - RECURRENCEFREQUENCY_DAILY : Number READONLY - RECURRENCEFREQUENCY_MONTHLY : Number READONLY - RECURRENCEFREQUENCY_WEEKLY : Number READONLY - RECURRENCEFREQUENCY_YEARLY : Number READONLY - SPAN_FUTUREEVENTS : Number READONLY - SPAN_THISEVENT : Number READONLY - STATE_DISMISSED : Number READONLY - STATE_FIRED : Number READONLY - STATE_SCHEDULED : Number READONLY - STATUS_CANCELED : Number READONLY - STATUS_CONFIRMED : Number READONLY - STATUS_NONE : Number READONLY - STATUS_TENTATIVE : Number READONLY - VISIBILITY_CONFIDENTIAL : Number READONLY - VISIBILITY_DEFAULT : Number READONLY - VISIBILITY_PRIVATE : Number READONLY - VISIBILITY_PUBLIC : Number READONLY h2. Properties - allAlerts : Titanium.Calendar.Alert[] READONLY All alerts in selected calendars. - allCalendars : Titanium.Calendar.Calendar[] READONLY All calendars known to the native calendar app. - allEditableCalendars : Titanium.Calendar.Calendar[] READONLY All calendars known to the native calendar app that can add, edit, and delete items in the calendar. - defaultCalendar : Titanium.Calendar.Calendar READONLY Calendar that events are added to by default, as specified by user settings. - eventsAuthorization : Number READONLY Returns an authorization constant indicating if the application has access to the events in the EventKit. - selectableCalendars : Titanium.Calendar.Calendar[] READONLY All calendars selected within the native calendar app, which may be a subset of allCalendars. h2. Methods - getCalendarById( id ) : Titanium.Calendar.Calendar Gets the calendar with the specified identifier. ... - requestEventsAuthorization( callback ) If authorization is unknown, will bring up a dialog requesting permission. ... h2. Events - change Fired when the database backing the EventKit module is modified. ...",13 TIMOB-18926,"iOS: Calendar events status shows wrong status number or null","h5.Reproduce: 1. Simple run the following codes. {code:title=app.js} Ti.API.info(Ti.Calendar.STATUS_TENTATIVE); Ti.API.info(Ti.Calendar.STATUS_CONFIRMED); Ti.API.info(Ti.Calendar.STATUS_CANCELLED); Ti.API.info(Ti.Calendar.STATUS_NONE); {code} h5.Expect Result: It should show different status numbers h5.Actual Result: The status numbers are wrong. Like this: {code} [INFO] : 0 [INFO] : 1 [INFO] : [INFO] : 0 {code} h5.Note: Can be reproduce on SDK 3.5.1, 3.5.2 and 4.0.0RC2",3 TIMOB-18927,"iOS: Calendar Event: Allow to fetch event Organiser and Invitees/Attendees details","Customer (Agilent, VMWare) is looking for a way to fetch event Organiser and Invitees/Attendees details form Ti.Calendar.Event",5 TIMOB-18928,"Windows: Reduce number of VS module projects","Because of the reference/link library issue on VS (TIMOB-18774), we need to reduce number of VS modules projects. It could be done by aggregating small modules such as {{Ti}}, {{Ti.App}}, {{Ti.API}} etc, and categorize relevant modules like {{Sensors}}.",8 TIMOB-18929,"node-ios-device: update to work with Node.js 0.12 and io.js","node-ios-device needs to be compiled with the latest Node.js 0.10, 0.12 and io.js 1.x and 2.x. Restructure the project so that we no longer ship binaries by default. Instead, when you npm install node-ios-device, it will run node-gyp for the installed Node/io.js version. If you run {{make}}, it will compile node-ios-device for all known/supported module API versions.",21 TIMOB-18931,"Android: Label shadow color & shadow offset property not working on android lollipop","h5.Steps To Reproduce: 1. Create an android app with the following code in the app.js: {code} var win = Ti.UI.createWindow({ backgroundColor:'grey' }); var label = Ti.UI.createLabel({ color: '#900', font: { fontSize: 48 }, text: 'A simple label', textAlign: Ti.UI.TEXT_ALIGNMENT_CENTER, top: 30, width: 500, height: 200 }); var change = Ti.UI.createButton({ bottom: 10, title: ""change the shadow of the label"" }); change.addEventListener(""click"", function() { label.shadowColor = ""blue""; label.shadowOffset = { x: 10, y: 10 }; }); win.add(label); win.add(change); win.open(); {code} 2. Build the app for android lollypop device. 3. Click on the button ""Change the shadow of the label"". h5. Actual Results: 1. The label shadow does not change. This happens only on android lollypop. h5. Expected Results: 1. The label shadow should change to what's specified. ",5 TIMOB-18935,"Windows: Move native type hooks/wrappers to user's app","We need to generate our wrappers as part of the build process and do so in the user's app, not in the TitaniumWindows module.",13 TIMOB-18937,"Windows: Create a default native project structure","Create a default project structure for a Windows native module. This will be used as the base for any new native Windows modules.",5 TIMOB-18938,"Windows: Create templates for native module project generation","Create EJS templates to generate the native module project files.",8 TIMOB-18939,"Windows: Add windows module create command to the CLI","Add the ability to generate a native windows module project from the CLI",8 TIMOB-18940,"Windows: Implement the ability to use native modules with a titanium project","Allow native windows modules to be used and exposed to titanium projects.",21 TIMOB-18941,"Blackberry is present in SDKs downloaded from master branch","h5.Description When downloading an SDK using {{ti sdk install -b master -d}} Blackberry is present. h5.Steps To Reproduce 1. Run either {{appc ti sdk install -b master -d}} or {{ti sdk install -b master -d}} 2. Open the SDK folder h5.Actual Result The SDK folder will contain Blackberry h5.Expected Result We have deprecated Blackberry so the folder should not be present",3 TIMOB-18942,"Windows: Create windows module build script","Create a build script in node to compile and package windows native modules.",8 TIMOB-18944,"Windows: Fire Ti.Media routechange event",http://docs.appcelerator.com/platform/latest/#!/api/Titanium.Media-event-routechange,5 TIMOB-18949,"Windows: Fix Jenkins CI build error","Jenkins CI build for [titanium_mobile_windows|http://studio-jenkins.appcelerator.org/job/titanium_mobile_windows/342/] has been failing around building mocha test. {code} C:\Jenkins\workspace\titanium_mobile_windows\Tools\Scripts\build>call node test.js ... [ERROR] : The remote procedure call failed. {code}",5 TIMOB-18950,"Windows: Write How-To documentations","We might want to write some comprehensive documentation for contributors. I think contributors may be categorized in three parts: App developers, module developers and Ti.API developers, so we may need some docs written from different perspective: . Write How-to documenttion for app developers . Write How-to documenttion for module developers . Write How-to documenttion for Ti API developers",5 TIMOB-18951,"Android: Setting Picker.touchEnabled (to false) crashes","Setting {{touchEnabled}} to {{false}} causes the app to crash on Android: h3. Reproducing code {code:xml} {code} h3. Log {code} [ERROR] : TiApplication: (main) [558,558] Sending event: exception on thread: main msg:java.lang.RuntimeException: Unable to start activity ComponentInfo{com.reynald.test4project/org.appcelerator.titanium.TiActivity}: java.lang.RuntimeException: Don't call setOnClickListener for an AdapterView. You probably want setOnItemClickListener instead; Titanium 4.0.0,2015/05/18 15:42,9239ff9 [ERROR] : TiApplication: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.reynald.test4project/org.appcelerator.titanium.TiActivity}: java.lang.RuntimeException: Don't call setOnClickListener for an AdapterView. You probably want setOnItemClickListener instead [ERROR] : TiApplication: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059) [ERROR] : TiApplication: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) [ERROR] : TiApplication: at android.app.ActivityThread.access$600(ActivityThread.java:130) [ERROR] : TiApplication: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) [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:4745) [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:786) [ERROR] : TiApplication: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) [ERROR] : TiApplication: at dalvik.system.NativeStart.main(Native Method) [ERROR] : TiApplication: Caused by: java.lang.RuntimeException: Don't call setOnClickListener for an AdapterView. You probably want setOnItemClickListener instead {code} Reported via Q&A: https://community.appcelerator.com/topic/520/app-crashed-when-using-widget-with-picker-in-it/3",5 TIMOB-18956,"Android orientation change detection is missing reverse orientation distinction","The documentation confirms that this is missing from the various places where in Android you could detect orientation change. * Ti.Gesture.orientationchange event http://docs.appcelerator.com/platform/latest/#!/api/Titanium.Gesture-event-orientationchange * Ti.Gesture.orientation property http://docs.appcelerator.com/platform/latest/#!/api/Titanium.Gesture-property-orientation * Ti.Android.Activity. requestedOrientation property http://docs.appcelerator.com/platform/latest/#!/api/Titanium.Android.Activity-property-requestedOrientation From docs: On Android and Mobile Web, returns the orientation of the current window, and *never reports the ""reverse"" orientations* (LANDSCAPE_RIGHT and UPSIDE_PORTRAIT). Android itself does report the reverse orientation changes, Titanium is just not surfacing this level of reporting. This deficiency prevents being able to detect precisely to which orientation has the device been rotated to with respect to a view, such as a camera view needed for barcode scanning. When the device has rotated but the view (and the object which is the subject of the scanning) has not rotated, you must be able to determine what the relative rotation is without the possibility of being 180 degrees off. Let me try to illustrate how this becomes a problem with some ASCII art and the scenario being a barcode scanning camera view in a module where the app must report to the module the orientation change. This is just an example of 1 use case where this deficiency can be seen as a problem. Let's say this is your device in portrait orientation: {noformat} A---B |a-b| || || |c-d| C---D {noformat} ABCD are the corners of the hardware, abcd are the corners of the camera view. Let's say the camera sensor is mounted such that the top-left corner of the picture is nearest to the A corner, the top-right corner of the picture is nearest to the B corner, etc. In this case, the rotation difference between the camera sensor and the camera view is 0 degrees, so the pixel at the top-left corner of the picture can go near the 'a' corner of the view, the pixel at the top-right corner of the picture can go near the 'b' corner of the view, etc. If the activity supports landscape-right orientation, then this is how your screen will look like if you rotate your device 90 degrees counter-clockwise: {noformat} B------C |a----b| || || |c----d| A------D {noformat} The important thing to realize is that the camera sensor rotated with the hardware but the view didn't, and neither did the object you are pointing the camera at. So the top-left pixel is still near the A corner as far as the camera sensor is concerned, but now that pixel needs to go to the 'c' corner of the view, otherwise from your (the user's) perspective the camera feed will look like it's rotated 90 degrees clockwise (because the object in front of the camera didn't rotate with the camera sensor). This can be achieved by the app telling the module that the activity's UI is now in landscape-right orientation, which the module will interpret not as landscape-right per se, rather as ""rotate the camera feed 90 degrees counter-clockwise"". I think by now it should be clear why we need to distinguish between landscape-right and landscape-left, but just for completeness -- if the activity supports landscape-left orientation as well, then this is how your screen will look like if you rotate your device 90 degrees clockwise (relative to portrait): {noformat} C------A |a----b| || || |c----d| D------B {noformat} The top-left pixel is still near the A corner as far as the camera sensor is concerned, but now that pixel needs to go to the 'b' corner of the view. In this case the module would have to rotate the camera feed clockwise by 90 degrees. If we can't distinguish between these two cases (i.e. landscape-left and landscape-right), then the best we can do is to rotate the camera feed by 90 degrees in the same direction in both cases, which will mean that the camera feed will appear off by 180-degrees (i.e. upside-down) to the user in one of those cases. Similar logic applies to portrait vs. reversePortrait. A work around would be to recreate orientation change handling in the module, however the better solution should be to improve this handling in the Titanium SDK so that the app can notify the module using Titanium SDK available functions/events about this change instead of the module needing to unnecessarily replicate Titanium SDK capabilities just to improve them. This works as expected in the iOS Titanium SDK.",8 TIMOB-18958,"Windows: CLI builds hang on first try due to Powershell permission check in windowslib","This is a bug in windowslib itself, specifically around https://github.com/appcelerator/windowslib/blob/dc9db61dbfa640460a933a738612d9a190e268b0/lib/env.js#L90 For me, when I just try to run a ti build, this eventually will cause windowslib to try and gathe renv info. The CMD prompt name will become ""Windows PowerShell"" and show no new output, effectively hung. I need to stop it with Ctrl+C and then open Powershell prompt as an administrator and give more expansive scripting rights to the system. This value _does not seem to persist across reboots for me_.",5 TIMOB-18960,"Android: Enable building with android M preview ","h5.Description: 1. The android M preview SDK is now out. 2. This new SDK is also marked as API 22. 3. While building its unclear if we are building with android M or android 5.1.1 as both are API22. 4. Removing android 5.1.1 & building fails with error: {code} To target Android SDK 22, you first must install it using the Android SDK manager. Alternatively, you can set the in the section of the tiapp.xml to one of the following installed Android target SDKs: 15, 16, 17, 18, 19, 20, 21 [ERROR] : Target Android SDK 22 is not installed titanium exited with exit code 1 [ERROR] Application Installer abnormal process termination. Process exit value was 1 {code} 5. From the above error we see that our tools don't consider android M as API 22 (although it will probably be API 23 once it goes GA). Please fix so that we can test android M till the time it is GA. *On further looking into it found that the folder for android M in the platforms folder inside android sdk is named ""android-MNC"" which might be the reason for our tools not picking it up.*",8 TIMOB-18961,"iOS: Throw an event after each AJAX call inside a webview","Customer would like same feature to support by iOS device. Like we did on case TIMOB-17754. Since last case is Android support only. ",13 TIMOB-18963,"Update Android Support Library to 22.1",NULL,3 TIMOB-18964,"Android: Update Android Alert Dialogs with Material",NULL,3 TIMOB-18965,"minSdkVersion defaults to 10 where it should be 14 since 4.0.0.GA","* PR on master: https://github.com/appcelerator/titanium_mobile/pull/6884 * PR on 4_0_X: https://github.com/appcelerator/titanium_mobile/pull/6885",1 TIMOB-18967,"Nine-patch splash screen showing black blocks with 4.0.0.GA on Android 5.x","An app build with 4.0.0.GA (regardless of Android Build Tools version) that uses (as recommended) nine-patch splash images displays black blocks overlaid on the image when runs on an Android 5.x device. It is OK on Android 4.4.4 and when build with 3.5.1.GA it is OK on both Android devices. h3. Reproduce Run the attached project on different environments. The project is created with {{ti create}}, has no modifications to the {{}} section in {{tiapp.xml}} and nine-patch splash images according to the [guide|http://docs.appcelerator.com/platform/latest/#!/guide/Icons_and_Splash_Screens-section-29004897_IconsandSplashScreens-Androidsplashscreenconsiderations]. Attached are screenshots for different SDK, Android and Tools versions.",5 TIMOB-19199,"Android: Picker in ActionBar shown expanded on app launch with SDK 4.0.1, 4.1.0.GA","In our app, we have a picker added to the ActionBar with code like the following. Building with the 3.5.x branch SDKs, the picker is collapsed as expected. Building the same project with SDK 4.1.0.GA (or 4.0.1), the picker is expanded as shown in the attached graphic when the app is launched. Users have to tap outside the picker to collapse it. {code} $.tabGroup.addEventListener(""open"", function () { var activity = $.tabGroup.getActivity(); activity.onCreateOptionsMenu = function (e) { var settings, item, picker, menu, data = []; menu = e.menu; menu.clear(); picker = Ti.UI.createPicker(); data.push( Ti.UI.createPickerRow({ title: 'Live', value: 'live' })); data.push( Ti.UI.createPickerRow({ title: 'Ended', value: 'buyingended' })); picker.add(data); picker.addEventListener('change', pickLiveEnded); item = menu.add({ title: ""Live"", showAsAction: Ti.Android.SHOW_AS_ACTION_ALWAYS }); item.actionView = picker; picker.setSelectedRow(0, Alloy.Globals.selectedAuctionsPickerRow, false); // column, row, [animated] settings = menu.add({ icon: '/images/gear.png', showAsAction: Ti.Android.SHOW_AS_ACTION_ALWAYS }); settings.addEventListener('click', function () { Alloy.createController('account').getView().open({ modal: true }); }); }; activity.invalidateOptionsMenu(); }); {code} Edit: I added a graphic showing how it's supposed to look on launch, with picker collapsed. (I deleted the app name & icon from this new graphic.)",3 TIMOB-18974,"Windows: CLI: Building a project with the --build-only flag errors out","h5.Description When building an Windows Platform project, when attempting to build using the {{--build-only}} flag, the build fails with the below {code} [ERROR] Failed to run command ""build"" [ERROR] TypeError: Cannot read property 'cyan' of undefined at WindowsBuilder.loginfo (C:\ProgramData\Titanium\mobilesdk\win32\4.1.0.v20150604094312\windows\cli\commands\_build.js:775:64) at C:\ProgramData\Titanium\mobilesdk\win32\4.1.0.v20150604094312\node_modules\node-appc\node_modules\async\lib\async.js:610:21 at C:\ProgramData\Titanium\mobilesdk\win32\4.1.0.v20150604094312\node_modules\node-appc\node_modules\async\lib\async.js:249:17 at iterate (C:\ProgramData\Titanium\mobilesdk\win32\4.1.0.v20150604094312\node_modules\node-appc\node_modules\async\lib\async.js:149:13) at C:\ProgramData\Titanium\mobilesdk\win32\4.1.0.v20150604094312\node_modules\node-appc\node_modules\async\lib\async.js:160:25 at C:\ProgramData\Titanium\mobilesdk\win32\4.1.0.v20150604094312\node_modules\node-appc\node_modules\async\lib\async.js:251:21 at C:\ProgramData\Titanium\mobilesdk\win32\4.1.0.v20150604094312\node_modules\node-appc\node_modules\async\lib\async.js:615:34 at WindowsBuilder.initialize (C:\ProgramData\Titanium\mobilesdk\win32\4.1.0.v20150604094312\windows\cli\commands\_build.js:756:2) at C:\ProgramData\Titanium\mobilesdk\win32\4.1.0.v20150604094312\node_modules\node-appc\node_modules\async\lib\async.js:610:21 at C:\ProgramData\Titanium\mobilesdk\win32\4.1.0.v20150604094312\node_modules\node-appc\node_modules\async\lib\async.js:249:17 --------------------------------------------- at exports.execFile (child_process.js:712:9) at exports.exec (child_process.js:591:18) at C:\Users\Windo_000\AppData\Roaming\npm\node_modules\titanium\node_modules\node-appc\lib\environ.js:267:3 at C:\Users\Windo_000\AppData\Roaming\npm\node_modules\titanium\node_modules\node-appc\node_modules\async\lib\async.js:251:17 at C:\Users\Windo_000\AppData\Roaming\npm\node_modules\titanium\node_modules\node-appc\node_modules\async\lib\async.js:154:25 at C:\Users\Windo_000\AppData\Roaming\npm\node_modules\titanium\node_modules\node-appc\node_modules\async\lib\async.js:248:21 at C:\Users\Windo_000\AppData\Roaming\npm\node_modules\titanium\node_modules\node-appc\node_modules\async\lib\async.js:612:34 at C:\Users\Windo_000\AppData\Roaming\npm\node_modules\titanium\node_modules\node-appc\lib\environ.js:261:7 {code} Full logs are attached as fullOutput.txt h5.Steps To Reproduce 1. Create a new application using {{ti create}} 2. Run the application using {{ti build -p windows -T device --build-only}} h5.Actual Result The build will fail with the above error h5.Expected Result The build should not fail",5 TIMOB-18975,"Windows: CommonJS module loading support","{{require}} should support CommonJS module loading described in [CommonJS Modules in Titanium |https://wiki.appcelerator.org/display/guides2/CommonJS+Modules+in+Titanium].",8 TIMOB-18978,"Use latest 'archiver' package","Use latest _archiver_ package. we are currently using {{0.4.10}} the latest is {{0.14.4}} This removes the need for these monkey patches: https://github.com/appcelerator/titanium_mobile/blob/master/android/cli/commands/_buildModule.js#L53 https://github.com/appcelerator/titanium_mobile/blob/master/android/cli/commands/_build.js#L53 This also exposes new APIs such as {{directory(src, dst)}} which are used in the windows __buildModule.js_ script",3 TIMOB-18980,"Windows: Closing an alert quits the app","h5.Description When dismissing an alert dialog, both the close button and the hardware back button quit the application. {code} var win = Ti.UI.createWindow({backgroundColor:'white'}); var button = Titanium.UI.createButton({ top: 60, title: 'Hello', width: '180', height: '80', image: '/KS_nav_ui.png' }); button.addEventListener('click', function(){ alert('HELLO!'); }); win.add(button); win.open(); {code} *I am unsure if the app quits or crashes as logging does not seem to work with my machine, I am investigating if this is on every machine or just mine* h5.Steps To Reproduce 1. Add the above code the the app.js of a Titanium Classic application 2. Build the app to device using {{appc run -p windows -T device}} or {{ti build -p windows -T device}} 3. Tap the 'Hello' button, due to TIMOB-18979 you can't see it, it's around the top middle in the top third of the screen 4. Tap 'Close' or the hardware back button h5.Actual Result The app quits h5.Expected Result The app should not quit",5 TIMOB-18981,"Windows: Resources are not copied from the temp folder to the build folder","h5.Description When building an app, the app is built in a temporary folder. These files are not copied across to the actual build folder within the project directory. For example if I was building an app called testApp I would expect to go to the build/windows folder to see my files. The root of the cause is [this line|https://github.com/appcelerator/titanium_mobile_windows/blob/master/cli/commands/_build.js#L1822]. Changing to the below seems to fix the issue {code} wrench.copyDirSyncRecursive(this.buildDir, this.originalBuildDir, { forceDelete: true }); {code} h5.Steps To Reproduce 1. Create a new application using {{appc new}} 2. Build the application using {{appc run -p windows -T wp-device}} 3. Check the build/windows folder h5.Actual Result The build folder contains none of the build files h5.Expected Result The build folder should contain the build files",3 TIMOB-18987,"Windows: CLI: Build fails if GTEST is not present on system","h5.Description When building a project, if GTEST is not on the system then the build fails with the below {code} [WARN] CMake Error at C:/ProgramData/Titanium/mobilesdk/win32/4.1.0.v20150604094312/windows/cli/vendor/cmake/share/cmake-3.1/Modules/FindPackageHandl eStandardArgs.cmake:138 (message): Could NOT find GTest (missing: GTEST_LIBRARY GTEST_INCLUDE_DIR GTEST_MAIN_LIBRARY) Call Stack (most recent call first): C:/ProgramData/Titanium/mobilesdk/win32/4.1.0.v20150604094312/windows/cli/vendor/cmake/share/cmake-3.1/Modules/FindPackageHandleStandardArgs.cmake:3 74 (_FPHSA_FAILURE_MESSAGE) C:/ProgramData/Titanium/mobilesdk/win32/4.1.0.v20150604094312/windows/cli/vendor/cmake/share/cmake-3.1/Modules/FindGTest.cmake:204 (FIND_PACKAGE_HAN DLE_STANDARD_ARGS) cmake/internal_utils.cmake:106 (find_package) Native/CMakeLists.txt:33 (include) [INFO] -- Configuring incomplete, errors occurred! See also ""C:/Users/Windo_000/AppData/Local/Temp/testCreate/wp.x86/CMakeFiles/CMakeOutput.log"". ERROR | ti run exited with error code 1 {code} Removing [this line|https://github.com/appcelerator/titanium_mobile_windows/blob/master/templates/build/cmake/internal_utils.cmake#L106] makes the build pass. h5.Steps To Reproduce 1. Remove GTEST from your system 2. Create a titanium project using {{appc new}} or {{ti create}} 3. Build the project using {{appc run}} or {{ti build}} h5.Actual Result The build will fail with the above error h5.Expected Result The build should not fail",3 TIMOB-18989,"Windows: Unable to build a project if the project name contains a space","h5.Description When building a project if the project name contains a space then the build fails with the below {code} [WARN] CMake Error at CMakeLists.txt:99 (add_executable): The target name ""space app"" is reserved or not valid for certain CMake features, such as generator expressions, and may result in undefined behavior. CMake Error at CMakeLists.txt:105 (set_target_properties): set_target_properties Can not find target to add properties to: space app [WARN] CMake Error at CMakeLists.txt:107 (target_link_libraries): Cannot specify link libraries for target ""space app"" which is not built by this project. [INFO] -- Configuring incomplete, errors occurred! See also ""C:/Users/Windo_000/AppData/Local/Temp/space app/wp.ARM/CMakeFiles/CMakeOutput.log"". See also ""C:/Users/Windo_000/AppData/Local/Temp/space app/wp.ARM/CMakeFiles/CMakeError.log"". ERROR | ti run exited with error code 1 {code} When building a project with a similar name to iOS and Android the build works with no problems h5.Steps To Reproduce 1. Create a project using {{ti create}} with a space in the name 2. Build the project for Windows using {{ti build -p windows -T wp-device--build-only}} h5.Actual Result The build fails with the above h5.Expected Result The build should pass",3 TIMOB-18990,"Windows: Setting auto for width on labels doesn't work for strings of a certain length","h5.Description When setting the width of a label to *auto*, it appears that the width is not being set properly when the string for the label text contains both letters and numbers, see the attached screenshots for references. *Ti.UI.FILL and Ti.UI.SIZE work with no problems* Although auto has been replaced by Ti.UI.FILL and Ti.UI.SIZE the default app still uses it. h5.Steps To Reproduce 1. Add the attached app.js to an existing project and build using {{appc run -p windows -T wp-emulator}} 2. Switch between tab 1 and tab two 3. Tap the label on tab 1 h5.Actual Result 2. The text for the label on tab 1 is not shown correctly, I am Window is displayed rather than I am Window 1 3. The alert displays the actual text for the label h5.Expected Result The label on tab 1 should display the whole string *I am Window 1*",8 TIMOB-18991,"Windows: Dismissing alert dialog crashes app","I'm not sure why as I haven't run under a debugger with it yet, but in testing I noticed that opening and then dismissing an alert dialog manually will cause the app to crash. Must be something wrong with the callback when it completes. I think this is new since the change to AlertDialog made when doing OptionDialog PR.",5 TIMOB-18992,"Windows: Add Map module to ti.map","Move the Titanium Windows map module to _ti.map_ https://github.com/appcelerator-modules/ti.map",13 TIMOB-18995,"Windows: Provide ability to set capabilities on appx.manifest in tiapp.xml","The appx.manifest is where you set the capabilties and many other aspects of windows apps. Right now we use a templated version and write out one for the app during build. Some of that is populated with values from tiapp.xml. We need the ability for users to set the capabilities their app uses in their tiapp.xml and that gets copied into the appx.manifest. See the capabilities here: https://msdn.microsoft.com/en-us/library/windows/apps/hh464936.aspx Right now we're just hardcoding to a single ""internetClient"" capability.",8 TIMOB-18996,"Windows: Doc coverage missing the Windows-specific APIs","The docs we use to populate the parity report (or maybe just the parity report itself?) aren't including the Windows specific types we've introduced. Specifically, we have a set of Titanium.UI.Windows.* types implemented, but not listed in the parity report. I also don't see them listed in the bleeding edge docs at http://appcelerator.github.io/appc-docs/latest/ The types are here: https://github.com/appcelerator/titanium_mobile_windows/tree/master/Source/UI/include/TitaniumWindows/UI/Windows",8 TIMOB-19011,"Android: MapView is blank if the container view has rounded borders","I recently tried to put a mapview inside another view with rounded borders (ie. with `borderRadius` set), and the result was that the mapview ended up being _blank_ (ie. no map tiles, just the Google logo and the zoom controls). Everything works fine when I remove the `borderRadius` property from the container view. Attached a minimal application that shows the problem. Let me know if you need anything else. Ciao, Matteo {code:title=index.js} var map_view = Ti.UI.createView({ height: Ti.UI.FILL, width: Ti.UI.FILL, }); var map = require('ti.map').createView({ height: Ti.UI.FILL, width: Ti.UI.FILL, }); var button = Ti.UI.createButton({ height: Ti.UI.SIZE, title: 'Set borderRadius' }); button.addEventListener('click', function() { map_view.borderRadius = '30dp'; }); var container = Ti.UI.createView(); var win = Ti.UI.createWindow(); map_view.add(map); container.add(map_view); container.add(button); win.add(container); win.open(); {code}",8 TIMOB-18997,"Windows: auto layout support","There's no implementation to support {{auto}} layout in {{LayoutEngine}}. {{auto}} layout behavior should be either {{FILL}} or {{SIZE}} depending on components described in [Transitioning to the New UI Layout System|http://docs.appcelerator.com/platform/latest/#!/guide/Transitioning_to_the_New_UI_Layout_System] (For example, {{Label}} should treat {{auto}} as same as specifying {{SIZE}}). {{ViewLayoutDelegate}} should inform how components should layout against {{auto}}.",13 TIMOB-18998,"iOS9: App thinning: Create XCAssets (imagesets) w/ the cli and access resources within those catalogs at runtime","The first stage of app thinning support is to correctly sort out graphic assets by their associated targets and scale factor (1x,2x,3x | iphone, ipad). This is already supported at the file level to some extent with the proxies loading files with the appropriate file names flags on a particular device. This is a two part improvement and as more information is gained from apple, split into appropriate tickets. Apple will be documenting the XCAsset Source Artifact Format (basically a folder with JSON markup - Content.json) that will allow the cli to gather in project resources and create the needed imageset. The proxies will need to be able to access the assets located within the asset catalogs at runtime. *Reference*: https://developer.apple.com/library/prerelease/ios/documentation/IDEs/Conceptual/AppDistributionGuide/AppThinning/AppThinning.html *Note*: Filenames with suffix 2x, 3x etc will still work in runtime. However, Apple will not slice the app into variants according to this naming convention. These files *must be inside asset catalogs* in order for app thinning to work. h4. Attached screenshot of how to get to use App Thinning. These are the steps to reproduce on Xcode 7 Beta2: 1. Archive your app in Xcode 7 Beta2. This archive will still be full sized. 2. Select archive and choose to export. 3. Choose last option to export ipa file for development use. 4. This screen will appear and you can choose specific device. 5. After export, show package contents of ipa and you can see a Assets.car file that contains the images. As compared to not using App thinning, you won't see the car file but instead your image files. h4. Some More Reference: _AssetCatalog Folder looks like this_ {quote} Media.xcassets -- fullscreen.imageset ---- fullscreen.png ---- fullscreen@2x.png ---- fullscreen@2x~ipad.png ---- etc. ---- Contents.json -- titleImage.imageset ---- titleImage.png ---- titleImage@2x.png ---- titleImage@3x.png ---- etc ---- Contents.json -- Contents.json {quote} _Contents.json file looks like this_ {code} { ""images"" : [ { ""idiom"" : ""universal"", ""filename"" : ""fullscreen.png"", ""scale"" : ""1x"" }, { ""idiom"" : ""universal"", ""filename"" : ""fullscreen@2x.png"", ""scale"" : ""2x"" }, { ""idiom"" : ""universal"", ""filename"" : ""fullscreen@3x.png"", ""scale"" : ""3x"" }, { ""idiom"" : ""iphone"", ""filename"" : ""fullscreen~iphone.png"", ""scale"" : ""1x"" }, { ""idiom"" : ""iphone"", ""filename"" : ""fullscreen@2x~iphone.png"", ""scale"" : ""2x"" }, { ""idiom"" : ""iphone"", ""scale"" : ""3x"" }, { ""idiom"" : ""ipad"", ""filename"" : ""fullscreen~ipad.png"", ""scale"" : ""1x"" }, { ""idiom"" : ""ipad"", ""filename"" : ""fullscreen@2x~ipad.png"", ""scale"" : ""2x"" } ], ""info"" : { ""version"" : 1, ""author"" : ""xcode"" } } {code}",34 TIMOB-18999,"Windows: 'cm', 'in' and 'dp' values are not calculated correctly for layouts","*Description* 'cm', 'in' and 'dp' values are not calculated correctly. This is because the PPI is not set. *Example* {code} var win = Titanium.UI.createWindow({ backgroundColor: '#fff' }); var view = Titanium.UI.createView({ backgroundColor: 'red', width: '1in', height: '10dp' }); win.add(view); win.open(); {code}",5 TIMOB-19000,"Remove Titanium build call from Xcode pre-compile phase","A long time ago, Titanium's iOS build was written in Python. The iOS build performed 3 major steps: # Create all Xcode related files in build dir # Run xcodebuild to compile project, which in turn fires the Xcode project's pre-compile phase script that calls the iOS build again to copy the Titanium-specific resources # Xcode builds the final app and signs it It was done this way so that you could open the generated Xcode project, modify JS files, and build from Xcode. When we replaced they Python-based iOS build scripts with the Node.js version, there was a performance issue with Xcode calling the Titanium CLI to copy the Titanium resources. I changed things so that if you are building from the Titanium CLI, it would copy the Xcode project related files, then the Titanium related files, then finally call xcodebuild. This significantly sped things up. The problem today is that when you run {{appc run}}, it generates a Xcode project who's pre-compile script references the Titanium CLI. Users do not have the Titanium CLI installed by default and thus it will fail. Even if they did, the encryption method would vary. Also the Xcode project's pre-compile should be calling the {{appc run}}, not {{ti build}}. I'm proposing we remove the Xcode project's pre-compile script. Pros: * Remove cruft from the iOS build ** There's a lot of code that accommodates the ability for Titanium resources to be processed when building from Xcode that we could rip out ** As maintainers of the iOS build changes, not all of the knowledge is transferred and thus new contributors neglect the Xcode-specific build path * Speeds up builds when building from Xcode * Building from Xcode only really works when you have Titanium CLI installed * Building via {{appc run}} encrypts differently than {{ti build}} and thus building from Xcode would render the new encrypted files unused and bloat the app * Modifying Titanium JS files and building directly from Xcode is not officially supported Cons: * Deprecates a feature that has existed for years",8 TIMOB-19002,"iOS9: Update Contacts to reflect new API","Starting in iOS 9 Apple has deprecated the Address Book framework, and replaced this functionality with: [Contacts Framework](https://developer.apple.com/library/prerelease/ios/documentation/Contacts/Reference/Contacts_Framework/index.html#//apple_ref/doc/uid/TP40015328) [ContactUI Framework](https://developer.apple.com/library/prerelease/ios/documentation/ContactsUI/Reference/ContactsUI_Framework/index.html#//apple_ref/doc/uid/TP40016207) The Titanium Proxies will need to be updated to reflect this Apple SDK change.",21 TIMOB-19003,"iOS9: Deprecate openParentApplication:reply: ","Remove openParentApplication:reply: support as iOS 9 replaces this functionality with WatchConnectivity. Additionally this pattern has been removed with the introduction of watchOS2.",5 TIMOB-19004,"iOS9: Support Watch Connectivity","Support Watch Connectivity, so that a watchOS2 app can communication with a Titanium application. Below is the pre-release documentation on this framework: https://developer.apple.com/library/prerelease/ios/releasenotes/General/WhatsNewIniOS/Articles/iOS9.html#//apple_ref/doc/uid/TP40016198-DontLinkElementID_1 https://developer.apple.com/library/prerelease/ios/documentation/WatchConnectivity/Reference/WCSession_class/index.html#//apple_ref/doc/uid/TP40015237 Sample code: https://developer.apple.com/library/prerelease/ios/samplecode/Lister/Introduction/Intro.html#//apple_ref/doc/uid/TP40014701",21 TIMOB-19005,"iOS9: Implement application:continueUserActivity:restorationHandler:","Implement the application delegate application:continueUserActivity:restorationHandler: This allows for hand-off and new iOS 9 search functionality ",5 TIMOB-19006,"iOS9: Implement NSUserActivity Core Spotlight","Implement NSUserActivity to enable Core Spotlight access. The following snippet from Apple shows this could be a straightforward Ti API. {code} // Create an attribute set that specifies a related unique ID for a Core Spotlight item. CSSearchableItemAttributeSet *attributes = [[CSSearchableItemAttributeSet alloc] initWithItemContentType:@""public.image""]; attributes.relatedUniqueIdentifier = coreSpotlightUniqueIdentifier; // Use the attribute set to create an NSUserActivity that's related to a Core Spotlight item. NSUserActivity *userActivity = [[NSUserActivity alloc] initWithActivityType:@“com.mycompany.viewing-message”]; userActivity.contentAttributeSet = attributes; {code} ",21 TIMOB-19008,"iOS9: Background GeoLocation Support allowsBackgroundLocationUpdates","Starting with iOS 9, the allowsBackgroundLocationUpdates property must be set to YES on each CLLocationManager which is used for running in the background. Apple has defaulted this to NO, meaning the existing behavior will break when linked against iOS9. Reference: http://stackoverflow.com/questions/30808192/allowsbackgroundlocationupdates-in-cllocationmanager-in-ios9",5 TIMOB-19009,"Windows: Populate default ti.windows.publishername property value","It looks like we now require a new property to populate the user's appx.manifest and to use for certs on store apps. Since it is required now, we should try and at least generate a sensible default value for the user in their tiapp.xml during project creation - or warn the user and use a generated one when we build? It's a bad experience to just fail first build, spit out some error about needing to set the value and then hope the user follows it. We could do a ""create.post.app"" hook in the CLI to edit the tiapp.xml and push a value in there. We could fall back to generating one if there is no value and give a warning to the user but continue? {code:xml} CN=Dawson Toth {code}",8 TIMOB-19010,"Windows: Support Async methods on Native API wrappers","We currently ""skip"" any method that is Async on the native APIs right now. To properly support them will require generating a ""Promise""-like wrapper. See https://msdn.microsoft.com/en-us/library/windows/apps/br211867.aspx Effectively we need to return an object that encapsulates the async operation and allows users to chain a series of async operations to run in series using callback methods. The important methods here are: then, done and cancel. Under the hood, we'll likely have to use ppltasks library to wrap up the async operations. See https://msdn.microsoft.com/en-us/library/windows/apps/hh780559.aspx",21 TIMOB-19012,"Windows: In Landscape, Two Tabs Windows can Show at Once","h2. The Problem If you have a two tab app, move in to landscape, and click the second tab, both windows are visible at once. h2. Reproduction {code}ti create cd createdApp/ ti build -p windows -C 8-1-1 -G 00000000-0000-1000-8000-000000000000 // rotate to landscape // click tab 2{code} See screenshot for visualization.",5 TIMOB-19013,"Windows: App crashes when triggering eventListener on a table view","h5.Description When adding an event listener to a table view, when the event is triggered the app crashes {code} var win = Ti.UI.createWindow({backgroundColor:'black'}); var tableData = [ {title: 'Apples'}, {title: 'Bananas'}, {title: 'Carrots'}, {title: 'Potatoes'} ]; var table = Ti.UI.createTableView({ data: tableData }); table.addEventListener('click', function(e){ alert(e.rowData); }); win.add(table); win.open(); {code} h5.Steps To Reproduce 1. Add the above code to an existing app.js 2. Build to a windows phone device or emulator h5.Actual Result The app crashes h5.Expected Result The app should not crash and an alert should be shown with the text in the row tapped displayed",8 TIMOB-19015,"iOS9: Create framework isIOS9OrGreater check","Create isIOS9OrGreater check TiUtils.m function using UIStackView to determine if you are running iOS9",3 TIMOB-19016,"iOS: Implement Hand Off for iOS8","Implement hand off for iOS8. The search and watchOS features are built on top of the iOS8 implementation of hand off",8 TIMOB-19017,"iOS: ViewProxy modules error on building with ""error: expected ')'""","Trying to build a module based on a simple ViewProxy as in the guide is now failing to build since the CI build SDK 4.1.x version. 4.0.x is fine. To reproduce. 1. Make sure you have SDK 4.1.x selected 2. Follow the instructions to build the example 'Square' module in the documentation here : http://docs.appcelerator.com/platform/latest/#!/guide/iOS_Module_Quick_Start 3. Open in XCode. Clean and Build. (or run build.py) This is the error I'm getting: {code} In file included from /Library/Application Support/Titanium/mobilesdk/osx/4.1.0.v20150601234429/iphone/include/TiModule.h:7: /Library/Application Support/Titanium/mobilesdk/osx/4.1.0.v20150601234429/iphone/include/TiProxy.h:92:44: error: unknown type name 'UIView' void DoProxyDelegateChangedValuesWithProxy(UIView * target, NSString * key, id oldValue, id newValue, TiProxy * proxy); ^ /Library/Application Support/Titanium/mobilesdk/osx/4.1.0.v20150601234429/iphone/include/TiProxy.h:92:50: error: expected ')' void DoProxyDelegateChangedValuesWithProxy(UIView * target, NSString * key, id oldValue, id newValue, TiProxy * proxy); ^ /Library/Application Support/Titanium/mobilesdk/osx/4.1.0.v20150601234429/iphone/include/TiProxy.h:92:43: note: to match this '(' void DoProxyDelegateChangedValuesWithProxy(UIView * target, NSString * key, id oldValue, id newValue, TiProxy * proxy); ^ /Library/Application Support/Titanium/mobilesdk/osx/4.1.0.v20150601234429/iphone/include/TiProxy.h:93:49: error: unknown type name 'UIView' void DoProxyDelegateReadValuesWithKeysFromProxy(UIView * target, id keys, TiProxy * proxy); ^ /Library/Application Support/Titanium/mobilesdk/osx/4.1.0.v20150601234429/iphone/include/TiProxy.h:93:55: error: expected ')' void DoProxyDelegateReadValuesWithKeysFromProxy(UIView * target, id keys, TiProxy * proxy); ^ /Library/Application Support/Titanium/mobilesdk/osx/4.1.0.v20150601234429/iphone/include/TiProxy.h:93:48: note: to match this '(' void DoProxyDelegateReadValuesWithKeysFromProxy(UIView * target, id keys, TiProxy * proxy); ^ 4 errors generated. ** BUILD FAILED ** {code} ",3 TIMOB-19018,"iOS9: Provide access to all NSUserActivityTypes defined in the bundle","As part of hand off, Search, and deep linking the developer will need access to all of the NSUserActivityTypes defined in their bundle ( via tiapp.xml ). To define one or more NSUserActivityTypes all you need to do is to an NSUserActivityTypes node under such as: {code} NSUserActivityTypes com.setdirection.home com.setdirection.shelf com.setdirection.item {code} ",3 TIMOB-19019,"Windows: assertion should not crash the app but show errrors","{{TITANIUM_ASSERT}} should not crash the app because it causes bad user experience. It should show runtime error message (i.e. Red Screen of Death) only on debug mode other then immediate crash. ",8 TIMOB-19020,"iOS 9: Support SFSafariViewController","iOS9 comes with a new SFSafariViewController to display a modal version of Safari with a return button to close it. We should probably use this in {{openURL}}, maybe as an option so developers can still choose to open in Safari like it does now. {quote}You can use SFSafariViewController to display web content within your app. The Safari View Controller shares cookies and other website data with Safari, and has many of Safari's features, like Safari AutoFill and Safari Reader. Unlike Safari itself, the Safari View Controller UI is tailored for displaying a single page, featuring a Done button that'll take users right back where they were in your app. Consider replacing your WKWebView or UIWebView-based browsers with SFSafariViewController if your app displays web content but does not customize that content.{quote} https://developer.apple.com/library/safari/releasenotes/General/WhatsNewInSafari/Articles/Safari_9.html",13 TIMOB-19021,"Windows: Geolocation module always reporting location services disabled","This looks to be a mismatch in our implementation with the way the property is defined. We ask the current position status, but that value isn't ""good"" unless there's an active tracking session. The property is meant to convey if the app itself is set up to do location services, so it's more a check if they've set the DeviceCapability in their package/appx.manifest. I'm not sure if we can query capabilities at runtime or not. We might be able to do a simple call to the geolocator and catch exceptions to know if this property should be true or false. {code:javascript} Ti.API.info('GPS Enabled : ' + Ti.Geolocation.locationServicesEnabled); //if (Ti.Geolocation.locationServicesEnabled) { Ti.API.info('Setting accuracy...'); Ti.Geolocation.accuracy = Ti.Geolocation.ACCURACY_HIGH; Ti.API.info('Asking for current position...'); Ti.Geolocation.getCurrentPosition(function(e) { Ti.API.info('Got current position!'); Ti.API.info('GPS Data : ' + JSON.stringify(e)); }); //} {code}",5 TIMOB-19022,"Windows: Geolocation never returning data for getCurentPosition","This looks to be a mismatch in our implementation with the way the property is defined. We ask the current position status, but that value isn't ""good"" unless there's an active tracking session. The property is meant to convey if the app itself is set up to do location services, so it's more a check if they've set the DeviceCapability in their package/appx.manifest. I'm not sure if we can query capabilities at runtime or not. We might be able to do a simple call to the geolocator and catch exceptions to know if this property should be true or false. {code:javascript} Ti.API.info('GPS Enabled : ' + Ti.Geolocation.locationServicesEnabled); //if (Ti.Geolocation.locationServicesEnabled) { Ti.API.info('Setting accuracy...'); Ti.Geolocation.accuracy = Ti.Geolocation.ACCURACY_HIGH; Ti.API.info('Asking for current position...'); Ti.Geolocation.getCurrentPosition(function(e) { Ti.API.info('Got current position!'); Ti.API.info('GPS Data : ' + JSON.stringify(e)); }); //} {code}",5 TIMOB-19025,"Windows: Build fails if the ti.windows.publishername is not present","h5.Description When building a Windows platform project if the property {{CN=Ewan Harris}} is not defined then the build will error out with the below {code} C:\ProgramData\Titanium\mobilesdk\win32\4.1.0.v20150614181235\windows\cli\commands\_build.js:1703 publisherName: this.cli.tiapp.properties['ti.windows.publishername'].value, ^ TypeError: Cannot read property 'value' of undefined at WindowsBuilder.generateCmakeList (C:\ProgramData\Titanium\mobilesdk\win32\4.1.0.v20150614181235\windows\cli\commands\_build.js:1703:72) at C:\ProgramData\Titanium\mobilesdk\win32\4.1.0.v20150614181235\node_modules\node-appc\node_modules\async\lib\async.js:610:21 at C:\ProgramData\Titanium\mobilesdk\win32\4.1.0.v20150614181235\node_modules\node-appc\node_modules\async\lib\async.js:249:17 at iterate (C:\ProgramData\Titanium\mobilesdk\win32\4.1.0.v20150614181235\node_modules\node-appc\node_modules\async\lib\async.js:149:13) at C:\ProgramData\Titanium\mobilesdk\win32\4.1.0.v20150614181235\node_modules\node-appc\node_modules\async\lib\async.js:160:25 at C:\ProgramData\Titanium\mobilesdk\win32\4.1.0.v20150614181235\node_modules\node-appc\node_modules\async\lib\async.js:251:21 at C:\ProgramData\Titanium\mobilesdk\win32\4.1.0.v20150614181235\node_modules\node-appc\node_modules\async\lib\async.js:615:34 at WindowsBuilder.generateModuleFinder (C:\ProgramData\Titanium\mobilesdk\win32\4.1.0.v20150614181235\windows\cli\commands\_build.js:1614:2) at C:\ProgramData\Titanium\mobilesdk\win32\4.1.0.v20150614181235\node_modules\node-appc\node_modules\async\lib\async.js:610:21 at C:\ProgramData\Titanium\mobilesdk\win32\4.1.0.v20150614181235\node_modules\node-appc\node_modules\async\lib\async.js:249:17 {code} h5.Steps To Reproduce 1. Create a new project 2. Build the project h5.Actual Result The build will error out with the above error h5.Expected Result The build should not error out",5 TIMOB-19026,"Provide the ability to color the ActivityIndicator spinner","Provide the ability to color the activity indicator. This feature has been available since iOS 5. An example of this would be: {code:java} var spinner = Ti.UI.createActivityIndicator({ color: 'green', font: {fontFamily:'Helvetica Neue', fontSize:26, fontWeight:'bold'}, message: 'Loading...', style:Ti.UI.iPhone.ActivityIndicatorStyle.DARK, top:10, left:10, height:Ti.UI.SIZE, width:Ti.UI.SIZE, spinnerColor:'purple' }); {code} ",3 TIMOB-19028,"Windows: Geolocation module should instantiate Geolocator on-demand when in UI thread","Our current Windows Geolocation module generates a wrapped Geolocator in it's constructor. We should be generating it lazily on-demand, and hopefully in the UI thread according to the guidelines: https://msdn.microsoft.com/en-us/library/windows/apps/hh465148.aspx bq. On Windows only, the first use of the Geolocator object must be made on the main UI thread, to show a consent prompt to the user. The first use of the Geolocator can be either the first call to getGeopositionAsync or the first registration of a handler for the positionChanged event. The consent prompt is described further in Guidelines for using sensitive devices. This means that in an app using JavaScript, the first use of the Geolocator object should not occur in an activation handler. ",5 TIMOB-19029,"Windows: If parsing JS files fails the error message does not contain a reason","h5.Description When the CLI is parsing the JS files of an app, if there is a parsing error then it is surfaced as the following {code} C:\ProgramData\Titanium\mobilesdk\win32\4.1.0.v20150614181235\node_modules\uglify-js\lib\parse.js:197 throw new JS_Parse_Error(message, line, col, pos); ^ Error at new JS_Parse_Error (C:\ProgramData\Titanium\mobilesdk\win32\4.1.0.v20150614181235\node_modules\uglify-js\lib\parse.js:189:18) at js_error (C:\ProgramData\Titanium\mobilesdk\win32\4.1.0.v20150614181235\node_modules\uglify-js\lib\parse.js:197:11) at croak (C:\ProgramData\Titanium\mobilesdk\win32\4.1.0.v20150614181235\node_modules\uglify-js\lib\parse.js:656:9) at token_error (C:\ProgramData\Titanium\mobilesdk\win32\4.1.0.v20150614181235\node_modules\uglify-js\lib\parse.js:664:9) at expect_token (C:\ProgramData\Titanium\mobilesdk\win32\4.1.0.v20150614181235\node_modules\uglify-js\lib\parse.js:677:9) at expect (C:\ProgramData\Titanium\mobilesdk\win32\4.1.0.v20150614181235\node_modules\uglify-js\lib\parse.js:680:36) at expr_list (C:\ProgramData\Titanium\mobilesdk\win32\4.1.0.v20150614181235\node_modules\uglify-js\lib\parse.js:1172:44) at subscripts (C:\ProgramData\Titanium\mobilesdk\win32\4.1.0.v20150614181235\node_modules\uglify-js\lib\parse.js:1310:30) at subscripts (C:\ProgramData\Titanium\mobilesdk\win32\4.1.0.v20150614181235\node_modules\uglify-js\lib\parse.js:1287:20) at subscripts (C:\ProgramData\Titanium\mobilesdk\win32\4.1.0.v20150614181235\node_modules\uglify-js\lib\parse.js:1287:20) {code} When building for Android it will be surfaced as the following {code} [ERROR] Failed to parse C:\Users\Windo_000\Documents\Appcelerator_Studio_Workspace\testCreate\Resources\app.js [ERROR] Unexpected token punc «;», expected punc «,» [line 18, column 39] [ERROR] [ERROR] var doc = Ti.XML.parseString(xmlString; [ERROR] ---------------------------------------^ [ERROR] {code} h5.Steps To Reproduce 1. In an existing titanium project edit the app.js so that it will fail the parsing, remove a parentheses for example 2. Build the app for Windows h5.Actual Result The parser fails with the first error h5.Expected Result The parser should fail with an error indicating the reason why",5 TIMOB-19030,"Android: HttpClient setOnload() and setOnerror() methods do not work","h5.Reproduce Step: 1.Simple run the following code in a classic mobile project. {code:title=app.js} var url = ""http://www.appcelerator.com""; var client = Ti.Network.createHTTPClient({ timeout : 5000 // in milliseconds }); client.setOnload(function(e) { Ti.API.info(""Received text: "" + this.responseText); alert('success'); }); client.setOnerror(function(e) { Ti.API.debug(e.error); alert('error'); }); // Prepare the connection. client.open(""GET"", url); // Send the request. client.send(); {code} h5.Expect Result: Should fire alert event. Like its behaviour in iOS h5.Acutal Result: Return a error, like this: {code:title=error log} [ERROR] : TiExceptionHandler: (main) [100,100] ----- Titanium Javascript Runtime Error ----- [ERROR] : TiExceptionHandler: (main) [0,100] - In app.js:413,9 [ERROR] : TiExceptionHandler: (main) [0,100] - Message: Uncaught TypeError: Object # has no method 'setOnload' [ERROR] : TiExceptionHandler: (main) [1,101] - Source: client.setOnload(function(e) { [ERROR] : V8Exception: Exception occurred at app.js:413: Uncaught TypeError: Object # has no method 'setOnload' {code}",5 TIMOB-19031,"Windows: Update Ti.buildHash and Ti.buildDate properties on CI build","Titanium build properties such as {{Ti.version}}, {{Ti.buildDate}} and {{Ti.buildHash}} are not updated on each build. It returns placeholder string for now. (See [TiModule.cpp#L32|https://github.com/appcelerator/titanium_mobile_windows/blob/master/Source/Ti/src/TiModule.cpp#L32]), should be integrated with CI build. ",5 TIMOB-19032,"Windows: Port KitchenSink application","Port [KitchenSink|https://github.com/appcelerator/KitchenSink] application so that developers can check how many API are implemented and how it works. It would be good for QA too.",13 TIMOB-19033,"Windows: Global.String and i18n functions","Titanium has some global built-in functions such as {{L()}} and {{String.format}}. The {{L()}} macro is a short form for {{Ti.Locale.getString()}}. {{String.format}} formats strings according to the IEEE printf specification. Both of those functions often appears in Titanium demo apps such as KitchenSink. ",8 TIMOB-19034,"Windows: Building to Emulator Should Allow Error Dialogs","h1. Problem When running the emulator, if errors are encountered, they should show the standard red screen of death to the user. Even if the underlying build type is `release`, we need to find a way to surface these errors to the developer in the traditional Titanium way. h2. Solution Introduce (or tweak, if it's already there) a deploy type with values such as ""development"" or ""production"" like we do for other platforms. Then, use this value to decide whether or not we should show the error dialog, instead of the build type. h2. Example {code:javascript} var win = Ti.UI.createWindow(); win.add(Ti.UI.createLabel({ text: 'Please Wait...' })); win.open(); setTimeout(function() { throw new Error('oh no!'); }, 2000); {code} {code}ti build -p windows -C 8-1-1 -G 00000000-0000-1000-8000-000000000000{code}",5 TIMOB-23490,"Packaged JavaScript and Hybrid Modules: it doesn't work properly","When I create a pure Javascript Module, any exported method is accessible. In detail for the module I've: # Created a new Mobile Module Project, from Appcelerator Studio, with id (for example) it.module.test # Inside _assets_ folder, I've created a js file called _it.module.test.js_ # Into _it.module.test.js_ I have: {code:javascript} module.exports = { something: ""hi"" } {code} Now I package this module directly from Appcelerator Studio and install this module inside a Test Application. Into this application I do: {code:javascript} var module = require(""it.module.test""); Ti.API.info(module.something); {code} And the result is *null*. The problem is that the native module classes are being called instead of the CommonJS ones as per the docs. __UPDATE__ After several tests, it seems that the problem is the Titanium SDK 4.0.0. When I create the module project inside Appcelerator Studio and selecting a previous version of Titanium SDK (3.4.1 for example) all works perfectly with the same code. ",8 TIMOB-19037,"Windows: Reopening a window from a tableview does not work until another window is opened","h5.Description When using a tableview, if on click a tableview opens a window the windows will not open again until another row is clicked, for example considering the following code, if I tap on the row 'Apples' a window will open, when I close that window it will not open again until I tap another row {code} var win = Ti.UI.createWindow({backgroundColor:'black'}); var tableData = [ {title: 'Apples'}, {title: 'Bananas'}, {title: 'Carrots'}, {title: 'Potatoes'} ] var table = Ti.UI.createTableView({ data: tableData }); table.addEventListener('click', function(e){ var win2 = Ti.UI.createWindow({backgroundColor:'red'}); var lbl = Ti.UI.createLabel({ text: 'HELLO!', color:'black', width: 'auto', height: 'auto' }); win2.add(lbl); lbl.addEventListener('click',function(){ win2.close(); }); win2.open(); }); win.add(table); win.open(); {code} h5.Steps To Reproduce 1. Replace the attached app.js with the above code 2. Build to a device or emulator 3. Tap on Apples 4. Tap on the 'HELLO' label to close the window 5. Tap on Apples again 6. Tap on Potatoes 7. Tap on the 'HELLO' label to close the window 8. Tap on Apples h5.Actual Result 3. A window will open 5. The window will not open 6. A window will open 8. A window will open h5.Expected Result A window should open every time I tap the tableview",8 TIMOB-19038,"Windows: Crashes when opening windows from a tableview with the QE testing app","h5.Description When using the QE testing apps, if I open one test case then the next test case I open will crash the application. I have attached an example app as APIModule.zip h5.Steps To Reproduce 1. Download the attached project and build it for device or emulator 2. Open test case TIMOB7187 3. Close the window 4. Open test case TIMOB9214 5. Reverse steps 2-4 h5.Actual Result When attempting open the second test case window the app will crash h5.Expected Result The app should not crash",8 TIMOB-19039,"Windows: Titanium.version does not return correct values","h5.Description When getting the version, buildHash and buildDate properties they are logged as the following {code} __TITANIUM_VERSION__ __TITANIUM_BUILD_HASH__ __TITANIUM_BUILD_DATE__ {code} {code} var win = Ti.UI.createWindow({backgroundColor:'black'}); var lbl = Ti.UI.createLabel({ text: 'Hello!' }); lbl.addEventListener('click', function(e){ console.log(Titanium.version) console.log(Titanium.buildHash); console.log(Titanium.buildDate); }); win.add(lbl); win.open(); {code} h5.Steps To Reproduce 1. Using the above code build to a windows emulator h5.Actual Result The logging contains the value {code} __TITANIUM_VERSION__ __TITANIUM_BUILD_HASH__ __TITANIUM_BUILD_DATE__ {code} h5.Expected Result The values should be values like {code} 4.1.0 c7717ab 2015/06/16 22:52 {code}",5 TIMOB-19040,"iOS9: MPMoviePlayerController deprecated. Use AVPlayerViewController instead","MPMoviePlayerController is getting deprecated in iOS9. We are using this in TiMediaVideoPlayer, so we have to work on an alternative. Likely AVPlayerViewController. Deprecation details: https://developer.apple.com/library/prerelease/ios/releasenotes/General/iOS90APIDiffs/frameworks/MediaPlayer.html AVPlayer Reference: https://developer.apple.com/library/prerelease/ios/documentation/AVFoundation/Reference/AVPlayer_Class/index.html#//apple_ref/doc/uid/TP40009530 AVPlayerViewController Reference: https://developer.apple.com/library/prerelease/ios/documentation/AVFoundation/Reference/AVPlayerViewController_Class/index.html#//apple_ref/doc/uid/TP40014273 ",13 TIMOB-19041,"Windows: Package i18n resources","Package localization files like {{/i18n/LANG/strings.xml}} described at [Titanium.Locale|http://docs.appcelerator.com/platform/latest/#!/api/Titanium.Locale] with {{ti build}}. ",5 TIMOB-19088,"Android: Alloy- HeaderView element not showing in android for TableViewSection","Hi, I have added a headerView to TableViewSection but on android it doesn't shows while on iOS works fine. Here is the code, it needs to be added in index.js var createHeaderViewSection = function(args) { Ti.API.info('create header view section'); var headerView = Ti.UI.createView({ left: 0, height: '18dp', backgroundImage: '/images/timeline_date.png' //backgroundColor: '#0000ff' }), label = Ti.UI.createLabel({ top: '2dp', left: '15dp', textAlign: 'center', text: args.day, color: '#fff', font: { fontSize: '14dp'} }); headerView.add(label); return headerView; }; var sectionFruit = Ti.UI.createTableViewSection({ headerView: createHeaderViewSection({day: ""02-02-2016""}) }); sectionFruit.add(Ti.UI.createTableViewRow({ title: 'Apples' })); sectionFruit.add(Ti.UI.createTableViewRow({ title: 'Bananas' })); var sectionVeg = Ti.UI.createTableViewSection({ headerTitle:'Title' }); sectionVeg.add(Ti.UI.createTableViewRow({ title: 'Carrots' })); sectionVeg.add(Ti.UI.createTableViewRow({ title: 'Potatoes' })); var sectionFruit_02 = Ti.UI.createTableViewSection({ headerView: createHeaderViewSection({day: ""03-02-2016""}) }); sectionFruit_02.add(Ti.UI.createTableViewRow({ title: 'Apples' })); sectionFruit_02.add(Ti.UI.createTableViewRow({ title: 'Bananas' })); var sectionFruit_03 = Ti.UI.createTableViewSection({ headerView: createHeaderViewSection({day: ""03-02-2016""}) }); sectionFruit_03.add(Ti.UI.createTableViewRow({ title: 'Apples' })); sectionFruit_03.add(Ti.UI.createTableViewRow({ title: 'Apples' })); sectionFruit_03.add(Ti.UI.createTableViewRow({ title: 'Bananas' })); var tb= Ti.UI.createTableView({ height: Ti.UI.SIZE, backgroundColor: ""#ff0000"" }); tb.setData([sectionFruit, sectionVeg, sectionFruit_02, sectionFruit_03]); $.index.add(tb); $.index.open();",5 TIMOB-19042,"Windows: HTTPClient GET on an incorrect URL throws onload instead of onerror","h5.Description When doing a HTTP GET on an incorrect URL the HTTPClient will throw onLoad rather than onError. {code} var win = Ti.UI.createWindow({backgroundColor: 'white'}); var lbl = Ti.UI.createLabel({ text: 'Tap me!', color: 'black' }) var url = 'http://httpbin.org/gert'; lbl.addEventListener('click', function(){ var client = Ti.Network.createHTTPClient({ onload : function(e) { alert('onload'); }, onerror : function(e) { alert('onerror'); } }); client.open('GET', url); client.send(); }); win.add(lbl); win.open(); {code} h5.Steps To Reproduce 1. Add the above code to an app.js 2. Build to a device or emulator 3. Tap the label h5.Actual Result An alert will be shown with onload h5.Expected Result An alert should be shown with onerror",5 TIMOB-19043,"Windows: Ti.API.info() causes crash","When a string passed to Ti.API.info() exceeds 248 characters it causes the application to crash. {code} Ti.API.info('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'); {code} Caused by this line : https://github.com/appcelerator/titanium_mobile_windows/blob/master/Source/Ti/src/API.cpp#L121",5 TIMOB-19044,"Windows: Accessing a sliders value always returns 0","h5.Description When accessing a sliders value the value returned is always 0 {code} var win = Ti.UI.createWindow({backgroundColor: 'red'}); var lbl = Ti.UI.createLabel({ text: 'Value is ', color: 'black', width: 150 }); var slider = Titanium.UI.createSlider({ top: 80, width: '80%' }); slider.addEventListener('change', function(e) { lbl.text = 'Value is ' + e.value; }); lbl.addEventListener('click', function(){ alert(slider.value); }); win.add(lbl); win.add(slider); win.open(); {code} h5.Steps To Reproduce 1. Add the above code to an existing app.js 2. Build the device or emulator 3. Move the slider 4. Tap the label h5.Actual Result The value returned is 0 h5.Expected Result The value returned should match the label displaying the value ",5 TIMOB-19045,"Windows: Add -t windows to ti info command","h5.Description When running {{ti info}} you can specify what you want info for by using the -t flag, for example {{ti info -t android}}, {{ti info -t jdk}} etc. A Windows flag should be added similar to the other flags, at the moment there is Windows specific information that is in the regular {{ti info}} output, see below {code} ""windows"": { ""detectVersion"": ""3.0"", ""issues"": [ { ""id"": ""WINDOWS_STORE_SDK_MISSING_DEPLOY_CMD"", ""type"": ""error"", ""message"": ""Microsoft Windows Store SDK is missing the deploy command.\nYou will be unable to build Windows Store apps."" } ], ""assemblies"": { ""Microsoft.SmartDevice.Connectivity.Interface"": { ""12.0.0.0"": { ""assemblyFile"": ""C:\\Windows\\Microsoft.NET\\assembly\\GAC_MSIL\\Microsoft.SmartDevice.Connectivity.Interface\\v4.0_12.0.0.0__b03f5f7f11d50a3a\\Microsoft.SmartDevice.Connectivity.Interface.dll"", ""dotNetVersion"": ""4.0"", ""assemblyVersion"": ""12.0.0.0"", ""publicKeyToken"": ""b03f5f7f11d50a3a"" } }, ""Microsoft.SmartDevice.MultiTargeting.Connectivity"": { ""12.0.0.0"": { ""assemblyFile"": ""C:\\Windows\\Microsoft.NET\\assembly\\GAC_MSIL\\Microsoft.SmartDevice.MultiTargeting.Connectivity\\v4.0_12.0.0.0__b03f5f7f11d50a3a\\Microsoft.SmartDevice.MultiTargeting.Connectivity.dll"", ""dotNetVersion"": ""4.0"", ""assemblyVersion"": ""12.0.0.0"", ""publicKeyToken"": ""b03f5f7f11d50a3a"" } } }, ""windows"": { ""8.0"": { ""version"": ""8.0"", ""registryKey"": ""HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Microsoft SDKs\\Windows\\v8.0"", ""supported"": true, ""path"": ""C:\\Program Files (x86)\\Windows Kits\\8.0\\"", ""signTool"": { ""x86"": ""C:\\Program Files (x86)\\Windows Kits\\8.0\\bin\\x86\\SignTool.exe"", ""x64"": ""C:\\Program Files (x86)\\Windows Kits\\8.0\\bin\\x64\\SignTool.exe"" }, ""makeCert"": { ""x86"": ""C:\\Program Files (x86)\\Windows Kits\\8.0\\bin\\x86\\MakeCert.exe"", ""x64"": ""C:\\Program Files (x86)\\Windows Kits\\8.0\\bin\\x64\\MakeCert.exe"" }, ""pvk2pfx"": null, ""selected"": false }, ""8.1"": { ""version"": ""8.1"", ""registryKey"": ""HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Microsoft SDKs\\Windows\\v8.1"", ""supported"": true, ""path"": ""C:\\Program Files (x86)\\Windows Kits\\8.1\\"", ""signTool"": { ""arm"": ""C:\\Program Files (x86)\\Windows Kits\\8.1\\bin\\arm\\SignTool.exe"", ""x86"": ""C:\\Program Files (x86)\\Windows Kits\\8.1\\bin\\x86\\SignTool.exe"", ""x64"": ""C:\\Program Files (x86)\\Windows Kits\\8.1\\bin\\x64\\SignTool.exe"" }, ""makeCert"": { ""x86"": ""C:\\Program Files (x86)\\Windows Kits\\8.1\\bin\\x86\\MakeCert.exe"", ""x64"": ""C:\\Program Files (x86)\\Windows Kits\\8.1\\bin\\x64\\MakeCert.exe"" }, ""pvk2pfx"": { ""x86"": ""C:\\Program Files (x86)\\Windows Kits\\8.1\\bin\\x86\\pvk2pfx.exe"", ""x64"": ""C:\\Program Files (x86)\\Windows Kits\\8.1\\bin\\x64\\pvk2pfx.exe"" }, ""selected"": false } }, ""windowsphone"": { ""8.0"": { ""version"": ""8.0"", ""registryKey"": ""HKEY_LOCAL_MACHINE\\Software\\Wow6432Node\\Microsoft\\Microsoft SDKs\\WindowsPhone\\v8.0"", ""supported"": true, ""path"": ""C:\\Program Files (x86)\\Microsoft SDKs\\Windows Phone\\v8.0\\"", ""deployCmd"": null, ""xapSignTool"": null, ""selected"": false }, ""8.1"": { ""version"": ""8.1"", ""registryKey"": ""HKEY_LOCAL_MACHINE\\Software\\Wow6432Node\\Microsoft\\Microsoft SDKs\\WindowsPhone\\v8.1"", ""supported"": true, ""path"": ""C:\\Program Files (x86)\\Microsoft SDKs\\Windows Phone\\v8.1\\"", ""deployCmd"": ""C:\\Program Files (x86)\\Microsoft SDKs\\Windows Phone\\v8.1\\Tools\\AppDeploy\\AppDeployCmd.exe"", ""xapSignTool"": ""C:\\Program Files (x86)\\Microsoft SDKs\\Windows Phone\\v8.1\\Tools\\XapSignTool\\XapSignTool.exe"", ""selected"": true } }, ""emulators"": { ""8.0"": [], ""8.1"": [ { ""name"": ""Emulator 8.1 WVGA 4 inch 512MB"", ""udid"": ""8-1-1"", ""index"": 1, ""wpsdk"": ""8.1"" }, { ""name"": ""Emulator 8.1 WVGA 4 inch"", ""udid"": ""8-1-2"", ""index"": 2, ""wpsdk"": ""8.1"" }, { ""name"": ""Emulator 8.1 WXGA 4.5 inch"", ""udid"": ""8-1-3"", ""index"": 3, ""wpsdk"": ""8.1"" }, { ""name"": ""Emulator 8.1 720P 4.7 inch"", ""udid"": ""8-1-4"", ""index"": 4, ""wpsdk"": ""8.1"" }, { ""name"": ""Emulator 8.1 1080P 5.5 inch"", ""udid"": ""8-1-5"", ""index"": 5, ""wpsdk"": ""8.1"" }, { ""name"": ""Emulator 8.1 1080P 6 inch"", ""udid"": ""8-1-6"", ""index"": 6, ""wpsdk"": ""8.1"" } ] }, ""devices"": [ { ""name"": ""Device"", ""udid"": 0, ""index"": 0, ""wpsdk"": null } ], ""os"": { ""name"": ""Microsoft Windows 8.1 Enterprise N"", ""version"": ""6.3.9600"" }, ""powershell"": { ""enabled"": true }, ""selectedVisualStudio"": { ""version"": ""12.0"", ""registryKey"": ""HKEY_CURRENT_USER\\Software\\Microsoft\\VisualStudio\\12.0_Config"", ""supported"": true, ""vcvarsall"": ""C:\\PROGRA~2\\MICROS~1.0\\VC\\VCVARS~1.BAT"", ""msbuildVersion"": ""12.0.31101.0"", ""wpsdk"": null, ""selected"": true, ""path"": ""C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\"", ""clrVersion"": ""v4.0.30319"" }, ""visualstudio"": { ""12.0"": { ""version"": ""12.0"", ""registryKey"": ""HKEY_CURRENT_USER\\Software\\Microsoft\\VisualStudio\\12.0_Config"", ""supported"": true, ""vcvarsall"": ""C:\\PROGRA~2\\MICROS~1.0\\VC\\VCVARS~1.BAT"", ""msbuildVersion"": ""12.0.31101.0"", ""wpsdk"": null, ""selected"": true, ""path"": ""C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\"", ""clrVersion"": ""v4.0.30319"" } } } {code} h5.Steps To Reproduce 1. Run {{ti info -t windows}} h5.Actual Result The output is not specific to Windows h5.Expected Result The output should be specific to Windows",8 TIMOB-19048,"Windows: Word wrap on labels does not work if width and height are not set","h5.Description When using a label, the word wrap will not work unless the height and width are set {code} var win = Ti.UI.createWindow({backgroundColor: 'red'}); var lbl = Ti.UI.createLabel({ text: '*** Resources Dir: Test presence of file that exists => blahTest presence of file that does not exist => bleh*** appData Dir:Test presence of file that exists => meh Test presence of file that does not exist => merh', color: 'black' }); win.add(lbl); win.open(); {code} *Marking this as minor as it is a simple _workaround_* h5.Steps To Reproduce 1. Add the above code to an existing app.js file 2. Run on a device or emulator 3. Add the following to the label creation {{width: Ti.UI.FILL, height: Ti.UI.FILL}} 4. Run on device or emulator h5.Actual Result 2. The text is not word wrapped 4. The text is word wrapped h5.Expected Result The text should be word wrapped both times",5 TIMOB-19206,"Android: Encrypted Database: Not being able to read installed database","h3. Issue When working on Android and trying to install a pre-populated database Encrypted database module and open is throwing the following error: {code} [INFO] Database: sqlite returned: error code = 26, msg = file is encrypted or is not a database [ERROR] Database: CREATE TABLE android_metadata failed [ERROR] Database: Failed to setLocale() when constructing, closing the database [ERROR] Database: net.sqlcipher.database.SQLiteException: file is encrypted or is not a database [ERROR] Database: net.sqlcipher.database.SQLiteDatabase.native_setLocale(Native Method) [ERROR] Database: net.sqlcipher.database.SQLiteDatabase.setLocale(SQLiteDatabase.java:2102) [ERROR] Database: net.sqlcipher.database.SQLiteDatabase.(SQLiteDatabase.java:1968) [ERROR] Database: net.sqlcipher.database.SQLiteDatabase.openDatabase(SQLiteDatabase.java:901) [ERROR] Database: net.sqlcipher.database.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:929) [ERROR] Database: net.sqlcipher.database.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:936) [ERROR] Database: appcelerator.encrypteddatabase.EncrypteddatabaseModule.open(EncrypteddatabaseModule.java:83) [ERROR] Database: appcelerator.encrypteddatabase.EncrypteddatabaseModule.install(EncrypteddatabaseModule.java:145) [ERROR] Database: org.appcelerator.kroll.runtime.v8.V8Object.nativeFireEvent(Native Method) [ERROR] Database: org.appcelerator.kroll.runtime.v8.V8Object.fireEvent(V8Object.java:62) [ERROR] Database: org.appcelerator.kroll.KrollProxy.doFireEvent(KrollProxy.java:908) [ERROR] Database: org.appcelerator.kroll.KrollProxy.handleMessage(KrollProxy.java:1131) [ERROR] Database: org.appcelerator.titanium.proxy.TiViewProxy.handleMessage(TiViewProxy.java:347) [ERROR] Database: org.appcelerator.titanium.proxy.TiWindowProxy.handleMessage(TiWindowProxy.java:101) [ERROR] Database: ti.modules.titanium.ui.WindowProxy.handleMessage(WindowProxy.java:424) [ERROR] Database: android.os.Handler.dispatchMessage(Handler.java:95) [ERROR] Database: android.os.Looper.loop(Looper.java:137) [ERROR] Database: org.appcelerator.kroll.KrollRuntime$KrollRuntimeThread.run(KrollRuntime.java:112) [WARN] W/System.err: java.lang.NullPointerException [WARN] W/System.err: appcelerator.encrypteddatabase.EncrypteddatabaseModule.open(EncrypteddatabaseModule.java:90) [WARN] W/System.err: appcelerator.encrypteddatabase.EncrypteddatabaseModule.install(EncrypteddatabaseModule.java:145) [WARN] W/System.err: org.appcelerator.kroll.runtime.v8.V8Object.nativeFireEvent(Native Method) [WARN] W/System.err: org.appcelerator.kroll.runtime.v8.V8Object.fireEvent(V8Object.java:62) [WARN] W/System.err: org.appcelerator.kroll.KrollProxy.doFireEvent(KrollProxy.java:908) [WARN] W/System.err: org.appcelerator.kroll.KrollProxy.handleMessage(KrollProxy.java:1131) [WARN] W/System.err: org.appcelerator.titanium.proxy.TiViewProxy.handleMessage(TiViewProxy.java:347) [WARN] W/System.err: org.appcelerator.titanium.proxy.TiWindowProxy.handleMessage(TiWindowProxy.java:101) [WARN] W/System.err: ti.modules.titanium.ui.WindowProxy.handleMessage(WindowProxy.java:424) [WARN] W/System.err: android.os.Handler.dispatchMessage(Handler.java:95) [WARN] W/System.err: android.os.Looper.loop(Looper.java:137) [WARN] W/System.err: org.appcelerator.kroll.KrollRuntime$KrollRuntimeThread.run(KrollRuntime.java:112) [ERROR] TiExceptionHandler: (main) [947,947] ----- Titanium Javascript Runtime Error ----- [ERROR] TiExceptionHandler: (main) [0,947] - In ti:/invoker.js:101,19 [ERROR] TiExceptionHandler: (main) [0,947] - Message: Uncaught Error: Java Exception occurred [ERROR] TiExceptionHandler: (main) [1,948] - Source: return delegate.apply(invoker.__thisObj__, args); [ERROR] V8Exception: Exception occurred at ti:/invoker.js:101: Uncaught Error: Java Exception occurred {code} During research i found some similar issues in native development: http://stackoverflow.com/questions/13537073/android-sqlcipher-pragma-problems http://stackoverflow.com/questions/20373066/sqlcipher-create-table-android-metadata-failed h3. Steps to reproduce 1. Run alloySample (attached alloySample.zip) Expected Result The database will install and run correctly Actual Result We receive the following error ""sqlite returned: error code = 26, msg = file is encrypted or is not a database""",8 TIMOB-19051,"iOS9: application openURL:sourceApplication:annotation deprecated","This delegate is deprecated in iOS9 and is found TiApp.m. Need to research impact and changes required.",8 TIMOB-19052,"Windows: ti create for modules with long paths fails with cryptic errors","We saw the same sort of issue with the normal app builds. We test for a given path length and it it's too long and moving the build to tmp dir would shorten the path, then we do so and copy the build results back when done. This needs to be done for module builds as well.",5 TIMOB-19054,"Windows: Ti.Filesystem.File.write() 'append' parameter should be optional","Ti.Filesystem.File.write(data, append); The _append_ parameter should be optional. http://docs.appcelerator.com/platform/latest/#!/api/Titanium.Filesystem.File-method-write",3 TIMOB-19055,"Windows: Test Geocoder sample","Import the Geocoder sample (alloy) by using the latest Appcelerator Studio 4.1.0 release, through the dashboard. Then verify that you are able to build it for Win Phone and Store (after adding windows to list of deploy targets in tiapp.xml). If you run into any issues, please file additional tickets. If the sample needs to be updated in any way (like enabling capabilities), file a PR for the sample.",5 TIMOB-19056,"Windows: Test Rss Reader sample","Import the Rss Reader sample (alloy) by using the latest Appcelerator Studio 4.1.0 release, through the dashboard. Then verify that you are able to build it for Win Phone and Store (after adding windows to list of deploy targets in tiapp.xml). If you run into any issues, please file additional tickets. If the sample needs to be updated in any way (like enabling capabilities), file a PR for the sample.",5 TIMOB-19057,"Windows: Test Todo list sample","Import the Todo List sample (alloy) by using the latest Appcelerator Studio 4.1.0 release, through the dashboard. Then verify that you are able to build it for Win Phone and Store (after adding windows to list of deploy targets in tiapp.xml). If you run into any issues, please file additional tickets. If the sample needs to be updated in any way (like enabling capabilities), file a PR for the sample.",5 TIMOB-19058,"Windows: Test Field Service sample","Import the Field Service sample (alloy) by using the latest Appcelerator Studio 4.1.0 release, through the dashboard. Then verify that you are able to build it for Win Phone and Store (after adding windows to list of deploy targets in tiapp.xml). If you run into any issues, please file additional tickets. If the sample needs to be updated in any way (like enabling capabilities), file a PR for the sample.",5 TIMOB-19059,"Windows: Test Corporate / Employee Directory sample","Import the Employee Directory sample (alloy) by using the latest Appcelerator Studio 4.1.0 release, through the dashboard. Then verify that you are able to build it for Win Phone and Store (after adding windows to list of deploy targets in tiapp.xml). If you run into any issues, please file additional tickets. If the sample needs to be updated in any way (like enabling capabilities), file a PR for the sample.",5 TIMOB-19061,"Windows: TabGroup should be a subclass of Ti.UI.View","Currently {{Ti.UI.TabGroup}} is constructed from pure JavaScript object which does not have Titanium module functions like {{addEventListener}}. According to the document {{Ti.UI.TabGroup}} should be a subclass of {{TI.UI.View}}. ",5 TIMOB-19062,"Windows: CommandBar does not work with TabGroup","Unable to attach {{Ti.UI.Windows.CommandBar}} onto {{Window}} on {{TabGroup}}. {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 label1 = Titanium.UI.createLabel({ color: '#999', text: 'I am Window 1', font: { fontSize: 20, fontFamily: 'Helvetica Neue' }, textAlign: 'center', width: 'auto' }); win1.add(label1); var platform = Ti.Platform.osname; if (platform === 'windowsphone' || platform === 'windowsstore') { // Windows command bar var commandBar = Ti.UI.Windows.createCommandBar(); var addButton = Ti.UI.Windows.createAppBarButton({ icon: Ti.UI.Windows.SystemIcon.ADD, touchEnabled: true }); addButton.addEventListener('click', function () { alert('clicked'); }); commandBar.items = [addButton]; win1.add(commandBar); } tabGroup.addTab(tab1); tabGroup.open(); {code}",8 TIMOB-19063,"Windows: default background color of sample apps","On Windows Phone, background color of components tend to be transparent, and the text color tend to be set white.This causes confusion when Window color is white, because some components like {{Label}} and {{Button}} looks disappear. The issue is that some sample apps from Appcelerator tend to have white background color by default, which might be looking good with iOS. But on Windows Phone we need to make it black or something other than white. So make sure sample app does not have white background: {code} var isWindows = (Ti.Platform.osname === ""windowsphone"" || Ti.Platform.osname === ""windowsstore""); var window = Ti.UI.createWindow({ title: 'Todo', backgroundColor: isWindows ? '#000' : '#fff', navBarHidden: false, }); {code} ",8 TIMOB-19065,"Windows: AlertDialog.show() fails when buttonNames.length >= 3","{{Ti.UI.AlertDialog.show}} fails when {{buttonNames}} have over three buttons on Windows Phone. It looks like it's a limitation of {{Windows::UI::Popups::MessageDialog}} on Windows Phone, so we might want to throw exception when over 3 names are assigned. {code} Ti.UI.createAlertDialog({ title: 'Title', message: 'Message', buttonNames: ['A','B','C'] }).show(); {code}",5 TIMOB-19066,"Windows: Implement Ti.Network.HttpClient.responseXML","We don't currently implement Ti.network.HTTPClient.responseXML - resulting in the RSS Sample app not working.",3 TIMOB-19067,"Windows: Move forward and reverse geocoder implementations into TitaniumKit","We should be able to write the implementation of forward and reverseGeocoder in Javascript at the TitaniumKit level. There's no reason why they couldn't be written in JS using our own APIs, like an HTTPClient.",8 TIMOB-19073,"iOS9: Xcode 7 (beta 2)/iOS 9 are unsupported","I am unable to build for iOS via Studio when using iOS 9 and Xcode 7. Combine this with MacOS 10.11 not allowing the use of any Xcode less than Xcode 7 and the user is left not able to build for iOS, after updating. *Steps to reproduce issue* 1. Install Xcode 7 2. Create a new Titanium project 3. Attempt to run that project on a iOS 9.0 Sim or device from Studio *Actual Results* You are unable to run the project *Expected Results* The project can be run on iOS 9. *Notes* The iOS 9 simulators are not detected by {{appc ti info -t ios}} If using {{appc run -p ios -T device}}, you are able to run the project. Simulator will fail via CLI.",34 TIMOB-19069,"IOS9: App thinning: Support on-demand resources for app thinning","*Overview:* The On-Demand-Resources provide a way to load resources only when requested. The resources are grouped into tags, which is done through Xcode (also need to figure out, how to do this on proxy side). The Idea is, to supply an easy way to access and download resources and release them after there are not needed anymore as part of the app thinning process. The current progress can also be tracked, as well as warnings regarding low memory. *Demo code:* {code} var win = Ti.UI.createWindow({ backgroundColor: ""#fff"", layout: ""vertical"" }); var manager = Ti.App.iOS.createOnDemandResourcesManager(); var beginButton = Ti.UI.createButton({ title: ""Access Resources"", top: 50 }); var resultProgress = Ti.UI.createProgressBar({ top: 50, min: 0, max: 1, width: 300, height: 10, value: 0.0 }); var resultImage = Ti.UI.createImageView({ top: 50, height: 100, image: ""titanium.png"" }); beginButton.addEventListener(""click"", function() { manager.conditionallyBeginAccessingResources({ tags: [""appc""], success: function(e) { resultImage.setImage(""titanium""); // Resources are now accessible. Ti.API.warn(e); }, error: function(e) { // Accessing the resources failed. Ti.API.error(e); } }); }); manager.addEventListener(""progress"", function(e) { Ti.API.warn("" -- PROGRESS --""); Ti.API.warn(e); resultProgress.setValue(e.value); }); win.add(beginButton); win.add(resultProgress); win.add(resultImage); win.open(); {code} *Apple docs:* https://developer.apple.com/library/prerelease/ios/documentation/FileManagement/Conceptual/On_Demand_Resources_Guide/ *Note:* On demand resources are only available for iOS9. that means for developers who wants this, they have to set the minimum iOS version as 9.0 otherwise it won't compile. Just do this in tiapp.xml. {code} 9.0 {code}",13 TIMOB-19070,"iOS9: Support picture in picture","_emphasized text_https://developer.apple.com/library/prerelease/ios/documentation/WindowsViews/Conceptual/AdoptingMultitaskingOniPad/QuickStartForPictureInPicture.html#//apple_ref/doc/uid/TP40015145-CH14-SW1 https://developer.apple.com/library/prerelease/ios/documentation/AVFoundation/Reference/AVPlayerViewController_Class/index.html#//apple_ref/occ/cl/AVPlayerViewController",8 TIMOB-19215,"Events on Map Annotation do not fire","There are some other tickets related to this, but since most of them show no activity, are old or cover only part of the problem, here's one ticket and test case that covers it all. The following test case shows that the only 2 times a click-event that fires is when you tap a pin to open the annotation and when you tap the map to close the annotation. Tapping on the leftButton/View, rightButton/View, title or subtitle does not fire the event. Another bug is that the {{clicksource}} when you tap the map to close the annotation is {{annotation}} and not {{map}}. Adding listeners directly to the leftView/rightView does not work either. h2. Test case {code:javascript} var map = require('ti.map'); var win = Ti.UI.createWindow(); var anOne = map.createAnnotation({ latitude:37.390749, longitude:-122.081651, title:""Appcelerator Headquarters"", subtitle:'Mountain View, CA', leftButton: Ti.UI.iPhone.SystemButton.SAVE, rightButton: Ti.UI.iPhone.SystemButton.SAVE }); var lBtn = Ti.UI.createView({ backgroundColor: 'red', width: 40, height: 40 }); lBtn.addEventListener('click', function(e) { console.error(e); }); var rBtn = Ti.UI.createView({ backgroundColor: 'red', width: 40, height: 40 }); rBtn.addEventListener('click', function(e) { console.error(e); }); var anTwo = map.createAnnotation({ latitude:37.33182, longitude:-122.0311837, title:""Apple Headquarters"", subtitle:'Cupertino, CA', leftView: lBtn, rightView: rBtn }); var mapview = map.createView({ region: {latitude:37.390749, longitude:-122.081651, latitudeDelta:1, longitudeDelta:1}, annotations:[anOne, anTwo], }); win.add(mapview); mapview.addEventListener('click', function(evt) { console.error(evt); }); win.open(); {code} h2. Logs {code} Jun 25 11:11:10 iPhone-Fokke LiveViewer[6105] : [ERROR] { annotation = ""[object TiMapAnnotation]""; bubbles = 1; cancelBubble = 0; clicksource = pin; index = 14; map = ""[object TiMapIOS7View]""; source = ""[object TiMapIOS7View]""; title = ""Apple Headquarters""; type = click; } Jun 25 11:11:11 iPhone-Fokke LiveViewer[6105] : [ERROR] { annotation = ""[object TiMapAnnotation]""; bubbles = 1; cancelBubble = 0; clicksource = annotation; index = 14; map = ""[object TiMapIOS7View]""; source = ""[object TiMapIOS7View]""; title = ""Apple Headquarters""; type = click; } {code}",13 TIMOB-19400,"Android: Build fails if Java 1.6 is not installed","h5.Description: 1. On a clean machine setup appcelerator studio. 2. Studio will download java 1.7.0_XX, node js & appc CLI. 3. Login to studio & download android SDK from with in studio. 4. Create an app & run it on android device/emulator. h5.Actual Results: 1. The build fails as it looks for java 1.6 & errors as it can't find it with the errors below: {code} [INFO] Encrypting JavaScript files: /Users/qetester/Library/Application Support/Titanium/mobilesdk/osx/4.0.0.GA/android/titanium_prep.macos ""com.app.test1"" ""/Users/qetester/Documents/Appcelerator_Studio_Workspace/test1/build/android/assets"" ""alloy/CFG.js"" ""app.js"" ""alloy/backbone.js"" ""alloy/constants.js"" ""alloy/controllers/BaseController.js"" ""alloy/controllers/index.js"" ""alloy/styles/index.js"" ""alloy/sync/localStorage.js"" ""alloy/sync/properties.js"" ""alloy/sync/sql.js"" ""alloy/underscore.js"" ""alloy/widget.js"" ""alloy.js"" ""ti.cloud.js"" ""_app_props_.json"" [ERROR] Failed to encrypt JavaScript files [ERROR] No Java runtime present, requesting install. TRACE | titanium exited with exit code 1 ERROR | Error: ti run exited with error code 1 at ChildProcess. (/Users/qetester/.appcelerator/install/4.0.2/package/node_modules/appc-cli-titanium/plugins/run.js:84:66) at ChildProcess.emit (events.js:98:17) at Process.ChildProcess._handle.onexit (child_process.js:820:12) {code} 2. We also get a dialog saying ""This application needs java 6"" & clicking on more info button on the dialog it takes us to the java 1.6 download page on apple's website. *NOTE* - Attached screenshot for reference. h5.Expected Result: 1. The build should succeed with java 1.7.0_X.",21 TIMOB-19076,"CLI: ti info -o json should show Windows Phone 8.0 SDK as unsupported","h5.Description When running the command ti info on Windows, Windows 8.0 and Windows Phone 8.0 SDKs are shown as supported, as these SDKs are not supported and Windows Hybrid is being deprecated then they should not show as supported. {code:title=Windows Phone} ""windowsphone"": { ""8.0"": { ""version"": ""8.0"", ""registryKey"": ""HKEY_LOCAL_MACHINE\\Software\\Wow6432Node\\Microsoft\\Microsoft SDKs\\WindowsPhone\\v8.0"", ""supported"": true, ""path"": ""C:\\Program Files (x86)\\Microsoft SDKs\\Windows Phone\\v8.0\\"", ""deployCmd"": null, ""xapSignTool"": null, ""selected"": false {code} {code:title=Windows} ""windows"": { ""8.0"": { ""version"": ""8.0"", ""registryKey"": ""HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Microsoft SDKs\\Windows\\v8.0"", ""supported"": true, ""path"": ""C:\\Program Files (x86)\\Windows Kits\\8.0\\"", ""signTool"": { ""x86"": ""C:\\Program Files (x86)\\Windows Kits\\8.0\\bin\\x86\\SignTool.exe"", ""x64"": ""C:\\Program Files (x86)\\Windows Kits\\8.0\\bin\\x64\\SignTool.exe"" }, ""makeCert"": { ""x86"": ""C:\\Program Files (x86)\\Windows Kits\\8.0\\bin\\x86\\MakeCert.exe"", ""x64"": ""C:\\Program Files (x86)\\Windows Kits\\8.0\\bin\\x64\\MakeCert.exe"" }, ""pvk2pfx"": null, ""selected"": false } {code} h5.Steps To Reproduce 1. Run {{ti info -o json}} or {{appc ti info -o json}} with 8.0 SDKs installed on your machine h5.Actual Result Windows 8.0 and Windows Phone 8.0 SDKs are shown as supported h5.Expected Result Windows 8.0 and Windows Phone 8.0 SDKs should not be shown as supported ",5 TIMOB-19077,"Windows: Logging does not seem to work when using device","h5.Description When building to Windows Phone device I am unable to get logging to work. I have tried across multiple machines and devices when using the same wifi etc. Logging works fine when running in an emulator. {code} var win = Ti.UI.createWindow({backgroundColor: 'red'}); var lbl = Ti.UI.createLabel({ text: 'I log things!', color: 'black' }); lbl.addEventListener('click', function(){ Ti.API.info('Hello from info!'); Ti.API.debug('Hello from debug!'); Ti.API.error('Hello from error!'); }); win.add(lbl); win.open(); {code} h5.Steps To Reproduce 1. Add the above code to an app.js and build to device 2. Build to emulator h5.Actual Result 1. No logging 2. Logging h5.Expected Result There should be logging in both circumstances",8 TIMOB-19078,"Windows: TableView.setData throws Catastrophic Failure exception","{{TableView.setData}} crashes when it is updated through {{click}} event. It does not cause issue when it is set at constructor parameter. {code} var win = Ti.UI.createWindow({layout:'vertical'}); var button = Ti.UI.createButton({title:'Add'}); var tableData = [{ title: 'Apples' }, { title: 'Bananas' }, { title: 'Carrots' }, { title: 'Potatoes' }]; var table = Ti.UI.createTableView({/* data:tableData */}); button.addEventListener('click', function () { table.setData(tableData); }); win.add(button); win.add(table); win.open(); {code}",13 TIMOB-19079,"Windows: Database.Resultset.fieldByName should be case insensitive","{{Titanium.Database.ResultSet.fieldByName}} should be case insensitive. {code} var rows = db.execute('SELECT rowid,name,phone_number,city FROM people'); while (rows.isValidRow()){ Ti.API.info(rows.fieldByName('ROWID') + ', phone_number: ' + rows.fieldByName('PHONE_NUMBER')); Ti.API.info(rows.fieldByName('rowid') + ', phone_number: ' + rows.fieldByName('phone_number')); rows.next(); } {code}",5 TIMOB-19081,"Android: Add Theme.AppCompat.NoTitleBar to default themes","Every android app we build includes a few [built-in themes|https://github.com/appcelerator/titanium_mobile/blob/master/android/templates/build/theme.xml]: * {{Theme.AppCompat.Fullscreen}} * {{Theme.AppCompat.Translucent}} * {{Theme.AppCompat.Translucent.NoTitleBar}} * {{Theme.AppCompat.Translucent.NoTitleBar.Fullscreen}} * {{Theme.Titanium}}, which extends either {{Theme.AppCompat}} directly or {{Theme.AppCompat.Fullscreen}} depending on the {{}} setting in {{tiapp.xml}}. Strangely enough, it does not include a theme that would cover one of the most common use cases: hiding the Action Bar. Our [guide|http://docs.appcelerator.com/platform/latest/#!/guide/Android_Action_Bar-section-36735509_AndroidActionBar-HidingtheActionBar] explains how to do this using a custom theme, while it could be much simpeler if only we would include one by default. via *tiapp.xml* {code:xml} {code} or per window: {code:javascript} Ti.UI.createWindow({ theme: ""Theme.AppCompat.NoTitleBar"" }).open(); {code} Ideally, the new themes would follow the same naming convention as the Translucent ones: {code:xml}