Google Chrome App filesystem events, shell/finder integration - windows

For a new desktop app project I'm researching if it's feasible to create a cross-platform implementation instead of native Windows and OS X apps. Chrome Apps seemed promising, but after browsing through the Chrome APIs there are some things I didn't see that I'll need in my app:
Notifications on changes to files in the local filesystem. (File System Events API on OS X, FileSystemWatcher on Windows.) At first I thought the syncFileSystem API might help with this, but it's apparently only for syncing with Google Drive, which is not what I need. I guess I could workaround this by scanning the directories I'm watching on a timer, but that won't perform well if there are a lot of directories and/or files.
Ability to add context menus in Windows shell and OS X Finder, as I would be able to with a Windows shell extension or OS X Finder plugin.
Ideally (although probably not a hard requirement) get the app into the Windows System Tray / OS X Menu Bar (NSStatusItem).
Can anyone confirm whether it's possible to access this functionality with a Chrome App? If not, can you recommend an alternative cross-platform tool for building an app with these features?

All of the listed features have bugs logged, but no real progress at the moment:
Watch: https://code.google.com/p/chromium/issues/detail?id=148873
File manager integration: https://code.google.com/p/chromium/issues/detail?id=130455
Sys tray: https://code.google.com/p/chromium/issues/detail?id=142450
The first of these to be made available will probably be file manager integration, which is being worked on now.
We'd love to improve watching but it is a significant task to support this on all operating systems and we don't have anyone working on it now.
Sys tray support is something we have no plans to release soon as we're not sure how we want to support this on ChromeOS.

I could not find anything close to the items you have mentioned. I did however find this product: node-webkit that likely would get you onto both your target platforms, use the same basic code-base (HTML5/CSS/JS) and allow some possible per-OS customization. There is even a 'watch' project under NPM that covers your first bullet point. Check node-webkit/wiki for notes on how to add C/C++ extensions to their node build (under using-node-modules.) Project seems active and appears to be backed by Intel (they re-built their XDK product on it to do cross platform.)

Related

Control installation depending on platform in MSIX package

I have added desktop extension to my UWP app that gives some extra functionality if it runs on Windows 10 desktop platforms. But for other platforms it won't be used. Hence I want to make sure that the desktop extension isn't installed on other platforms thereby saving users some disk space. I have looked into app extension but it won't be viable for my use cases since the UWP app and desktop component communicate via named pipes and memory mapped files. Is there any other way I can control the installation of desktop component depending upon the platform it is being installed??
Update 1
From researching further I have found that this should be possible with optional packages/related sets, to be accurate related sets for my scenario. The examples provided in docs only show scenarios for packaging uwp apps as related sets and no example for packaging win32 apps as related sets was given. Is there any way to package a win32 application as related sets??

OS X Background Fetch Equivalent

I'm familiar with the Background Fetch in UIKit but I was wondering if there is an equivalent for OS X apps.
My application is bundled with a Safari App Extension that needs to update frequently. Auto update does not look like it's supported from what I've read in the forums on the App Extensions since it's bundled to the OS X app. I have a shared data storage between the app and the extension so my ideal solution would be having the app run (in the background wether the user has it open or not) periodically check for the latest version. Then when the user is actually engaging with my extension it will notify the user of the update. This is why a solution like Sparkle is not desired.
I have everything down, but I'm lost on running the background process. Appreciate any help or creative solutions!

Android accessibility service is restarted while taking adb uiautomator dump

I have created my custom accessibility service for my project. Once it is enabled it is working well and serving my purpose. I need to take a dump for certain requirement. But when I take a dump using adb uiautomator command, Android system is disabling and re-enabling accessibility service.
I didn't find this behavior documented anywhere. Is there any workaround to stop Android system from disabling service ?
No there is not. Older versions of Android have a limitation. Only one service can attach to the Accessiblity APIs at a time. For example, if you attempted to turn on TalkBack while your service was on, you would see similarly poor behavior. Either TalkBack would not turn on, or your service would crash.
UIAutomator Heirarchy scanners depend on accessibility services as well as other automated testing features. This is a platform limitation and nothing you can overcome without purchasing a new device/running on a newer OS level. I believe this limitation is gone in Marshmallow, but it might be N or L.

Blackberry Development on Mac OS X

I recently started creating applications for mobile devices and have successfully completed an application for the iPhone. I am now turning my attention to the Blackberry but haven't been able to find a convincing article or website that states that it can be done or a tutorial on how to do so. Can Blackberry apps be developed on Mac OS X? If yes, how do I go about doing so? Can anyone please point me in the right direction as I only have access to a Mac and really want to get this project on the road. Thanks in advance for your help.
UPDATE:
RIM has released a MacOS Eclipse plug-in for Blackberry Development: http://na.blackberry.com/eng/developers/javaappdev/macosx.jsp
While there is no built-in simulator, the plug-in DOES support USB tethered device debugging for the Torch 9800 handhelds. I plan to get one; they are ~$499 w/no contract. With a Torch and the new plug-in, Blackberry development is possible without using a VM. (Finally!)
PREVIOUS POST:
Building on MacOS works well once you set it up. I've had less luck with the simulator. On the whole though, being able to run Eclipse natively in MacOS and flip to a Windows VM only for debugging is a big win in my book.
You can get a MacOS version of preverify (see link below for details). I do my development with Eclipse on MacOS X and use Ant to build BB apps.
This blog is excellent and has many of the details to get you started:
http://www.azizuysal.com/2009/07/blackberry-development-on-mac-os-x.html (original link is dead. The "wayback machine" provides us with the original text content, but images and styling are lost to the sands of time. Still worth a read.)
The tricky part is getting the simulator to work. There is a Wine-based work-around, but on my computer, while the simulator was able to run under Wine, the LCD output was scrambled.
Currently, I build COD files from Mac, and my Ant build process drops them into a directory that is shared with a WinXP VM. I can run the simulator stand-alone in this VM. Debugging is also possible by installing Eclipse inside WinXP and pointing the debug configuration it at the source directories.
I've actually got a bit more magic. I enabled some of the Java 1.5 features by compiling against 1.5 and then translating the bytecode to 1.3 prior to the preverify script. (Blackberry only speaks a barbaric 1.3 java, flashback to circa 1992). It's not a silver bullet as some features still don't work, but it does cut down on the need to make everything an untyped Object reference.
Lately, I've been working on a x-platform framework to allow me to write app code once and build against both Android and Blackberry (both are Java). The Android part was easy. It's just a bitch to debug anything in Blackberry. Someone working at RIM decided that Blackberry didn't need to keep Exception stack traces unless there was a catch(Throwable), and then they could do something bizarre, non-standard, and undocumented (catching Throwable behaves weird). I've only kinda-sorta figured out a hack to get stack traces using JavaLoader.exe without breaking into the debugger, and it's barely worth it.
p.s., I now do x-platform development with a single code-base targeting Android, Blackberry, and Desktop. Desktop is great for testing app functionality, with very little Blackberry on-device testing needed once features work in the desktop 'simulator' (a Swing GUI built for debugging our games).
Even though certain components of the RIM development platform are java-based, such as the JDE - other components such as the preverifier and device simulators are implemented as native Windows executables.
Basically, the easiest way to do it is to install Windows on your Mac using Bootcamp or Parallels and run inside a real Windows environment on your Mac.
However, there are other "hackier" ways to do it using Wine, MacPorts, and a number of other tools - as an example see this blog post

Using Time Machine for test environment rollback for Mac platform

When I'm testing software I'm going to deploy or running through tests in the Windows world, I'll use VMWare images so that I can start from a fresh, known state at the beginning of each test. This has worked really well so that I can install software on different OS flavors or with other/different apps and drivers loaded. This makes it super simple to duplicate or nearly duplicate a customer's environment when addressing issues that crop up.
Now I'm tasked with doing something similar for Mac OS X. I'm far less familiar with this OS and didn't really see the same sort of thing available. I noted that the server version of 10.5 might allow this, but I'm not running that here. I've got access to 10.5 on a Mac Book and one of those Mac Minis.
Has anyone used Time Machine to put their test Mac box into a known state? Or do you have other ideas? I'm also interested in a solution for 10.4 since some of my customers run "Tiger".
I tend to test things that don't manipulate the global computer state (i.e. a lot of well written Cocoa applications) with the "Guest" account. Since Tiger (I think), the effects of using this account are wiped at logout, so you can easily get a virgin environment again.
By default, Time Machine excludes certain paths from backup. This could be detrimental to your testing strategy, depending on the system resources that your software touches. See this article for information on the exclusions. At a bare minimum, if you are going to use Time Machine to rollback, make sure nothing you are testing depends on any of the excluded files.
But, I think there is a better alternative, if you can live with Mac OS X Server: VMWare Fusion provides support for virtualizing instances of Mac OS X Server Leopard. Then you can use the same strategy you used for Windows.
From http://www.vmware.com/products/fusion/features.html
VMware Fusion boasts the most complete
OS support, supporting more than 60
operating systems in a virtual
machine, including Windows XP, Windows
Vista, and even Mac OS X Server.
Keep in mind, you cannot virtualize Mac OS X Client due to license restrictions, though.
An alternative (perhaps more lightweight) solution that I just found recently is an app called RooSwitch. It lets you swap configurations for an application. So you could have a bunch of different prefs files, cache files, etc for your app and create a named configuration for it. You can create multiple configurations to test new user setup, or to reproduce an issue using a customer's data without losing your own config. RooSwitch then lets you switch between all these different configs.
I haven't used it myself yet, but heard about it on a podcast recently and thought it sounded useful for my own development and testing.

Resources