Do i need multiple binaries to support multi-resolution windows 8 application? - windows-8

I am developing a windows 8 application but this application need to be supported on multiple resolution & density screens (tablet, notebook & desktop). Do i need to create multiple binaries for each resolution?
i've looked at http://msdn.microsoft.com/en-US/library/windows/apps/hh780612 but need the clarification before i jump into a solution.
thanks for your help.

If you're designing according to the Windows Store UX Guidelines, you don't need separate binaries, but you do need to have scaled versions of all graphics, logos, etc. and you need to handle orientation and layout changes in your app so that you always present a suitable UI.
We're going through this pain now, and it's very very tempting to design some static layouts, with fixed positions etc. but that's very much against the Windows Store guidelines. It's probably going to take just as long to do the design as it is to do the code.
If you're using HTML5/Javascript, there is a useful example of an adaptive layout on MSDN

No you don't. Generally it'll just work. You can optionally provide high-resolution images by using a scale naming convention as described here: http://msdn.microsoft.com/en-us/library/windows/apps/hh465362.aspx
I recommend that you use the Simulator option when you run the app to test the app looks good at different resolutions and dpi settings.

Related

How to force an application to use DPI virtualization on Windows 7/8

Is there a way to force an application to use DPI virtualization in Windows 8.1? I have an application that wrongly declares to be DPI aware, and displays too small on my high DPI screen (don't have the source). It would be sufficient if it was scaled up 2x by Windows.
I tried editing the .exe's manifest, and setting <dpiAware>false</dpiAware>, but it had no effect. (It might have made the few pieces of the application that used a larger (appropriate) font use a small font (in pixels), like I'd expect for DPI virtualization, I'm not entirely sure... but it certainly did not activate the DWM scaling.)
What can I do? I read that other settings in the manifest may affect DPI virtualization other than dpiAware, is this true? The app might be setting DPI awareness at runtime via API, how can I find out if this is the case?
(Posting this here and not on superuser because there is no user-facing setting for this, and I expect the answer to be something along the lines of "edit the manifest such-and-such" or "inject a DLL/attach a debugger and do this". Also the fact that I don't have the source is secondary, I also have in-house apps where I have the source and would like to fix, and I'm asking for the more general solution that would fix both cases. I hope that's OK.)
I just released a DLL that hooks and redirects calls to SetProcessDPIAware. For applications that disable DPI scaling through code, this is a fast and easy fix (compared to binary patching). Just load the offending application with a tool like CFF Explorer and add this DLL to the import table. (Alternatively, it could be injected dynamically at application launch.)
Note that the current release only hooks SetProcessDPIAware and leaves SetProcessDPIAwareness untouched. If that's an issue, feel free to ping me and I'll hook both.
DPIMangler: Blog post, source code.

unity platform for apps

I am considering making a small app for desktop pc's. I would mainly like to have support for mac and for ubuntu (linux) and I wouldn't mind support for windows as well. An easy way seems to develop an app using Unity, but it is more known to be an engine for games.
To my simple logic, there should be no reason why an app cannot be built with Unity. A platform that features the ability to create massive laser marine gunbattles should be capable of rending pretty buttons and a user interface. The plus side is that with unity you can port to all platforms that I would like this app to run on as well.
Am I making a bad assumption? Are there any people that have done such things? The app I would like to make might be open source, does the Unity platform limit me in any way here?
You are correct in your reasoning that it is possible to make a normal app with Unity, but this of course is not what Unity was intended for. It is geared towards rendering and updating scenes (including physics, game logic, etc.). If you do not need the notion of scenes in your app, then you will add additional complexity to your development and run-time overhead that you would not normally need.
Another drawback is that you will need to abide by Unity's licensing with your app which may or may not be an issue for you (https://store.unity3d.com - See links at the very bottom for other special licenses, such as for gambling).
Since you mentioned Unity specifically, it uses Mono for some of its run-time support across platforms. Perhaps you want to consider using just Mono and associated tools instead (http://www.mono-project.com).

Titanium UI issues

I am beginning to look at options for cross-platform mobile development. In a couple of places I read that there are some problems with Titanium UI performance, here is a link to one of those (slide 12):
http://www.slideshare.net/bertouttier/crossplatform-tools-for-mobile-application-development
I then went to the Titanium site's App Showcase to download and test some apps to see if I noticed anything. I decided to start with the Khan Academy app since I know that they are pretty tech savvy (or assume so since their founder has 3 degrees from MIT including Comp Sci) and have some money (a few million from Google and Gates).
It only took me about 1 minute to get to a video with captions listed below the video and the first few words of the narration. I went down to the scrolling captions and tested how the gestures felt and couldn't believe that it was barely functional. Sometimes it goes in the wrong direction, sometimes it does nothing, and I cannot access the vertical scroll bar!
So the larger question I am trying to answer is potential not suitable for the Stack Overflow format...., which is: Is this one glitchy UI indicative of problems found in using Titanium in general?
More specific questions are: Why is the caption scrolling at the bottom of these videos so terrible? Is this an issue caused by Titanium? Have other people run into similiar problems with UI widgets in Titanium?
FYI - I am using an iPad 2.
If you are looking for the fastest possible UI performance, going "fully" native is probably the best overall option. Titanium offers you flexibility in that you are writing a single application with smaller changes, if necessary, across multiple platforms. It cuts your development time down significantly since you are able to share code across projects.
My understanding of the UI in Titanium is that they map to native controls on the target platform. So the performance you are seeing are native controls. The background logic of your application, the business rules, are controlled by JavaScript.
I downloaded (from iTunes) and played with the app and didn't see any issues with navigating their app. I am running it on an iPhone 4 with IOS 6. The animation flipping between between tables was responsive and the animations jumped in a predictable way. Perhaps you have a different OS version?
The Khan Academy appears to be a perfect example of an app that should take advantage of cross-platform development like Titanium. Though the app is relatively simple, it gets you access to what you need quickly and simply. This app could then be deployed on all the supported Titanium platforms, likely without any modifications at all.

Webkit Wrapper for Desktop Apps

I have a desktop app based on HTML/JS that needs WebKit to function at a reasonable speed. Normally, I would live with IE behaving badly, but its JS engine is just too slow.
I would normally go to Appcelerator for this, but it seems they have discontinued their desktop SDK and left it for the "community"...
This needs to function on Windows PCs, or I would just use Fluid (http://fluidapp.com)...
Is there a simple Webkit wrapper that I can use, or should I build one really quick in something like Qt. I haven't used Qt in a while, so I'd have to look at it again and make sure WebKit is implemented in it...
While it is somewhat node.js-oriented, AppJS may offer what you're looking for. If it doesn't already support other scripting languages, it might at least provide a good example to start from.
Update: in the time that's passed since my original answer, it seems node-webkit fills a similar role but has gathered and maintained more momentum than AppJS. It's a little more focused, in that it doesn't attempt to provide much additional "framework" on top of simply exposing the node.js API to the window's JS context.
There's also https://github.com/atom/atom-shell, which I just learned of and may be similar.
One other thing to note is that (presumably with either, but at least with node-webkit), you MUST be cautious of any XSS-like vulnerability in your app that an attacker could exploit to gain complete access to the user's native machine. So if you are simply needing to package an offline web app in a downloadable desktop distribution, you may wish to research more PhoneGap-like solutions (e.g. Mac OS X as PhoneGap platform) or a plain web view wrapper (like mentioned in the OP) that do not expose an entire OS-level native API — as node.js does — into the JavaScript environment.

Augmented reality in mono touch

I'm developing a typical "Windows GUI" based app for iPhone using MONO technologies. I need to add a little AR based functionality to it. It is just about opening up the camera, and showing information to the user regarding nearby businesses.
How can I do this using mono?
Of course it is possible. I have created a project and works very nice. It is quite complicated and I would need three pages to explain it and, the time to do it which I do not have.
In general, you need to look into:
CLLocationManager for location and
compass.
MapKit, if you want to provide
reverse geocoding information.
Implement an overlay view over the
UIImagePickerController which will
act as your canvas.
And of course, drawing.
I hope these guidelines will get you started.