Microsoft's Plan To Port Android Apps To Windows Proves Too Complex (networkworld.com)
An anonymous reader writes: The Astoria project at Microsoft has failed because a breakthrough was needed to overcome the complexity of the software development challenge. Microsoft tried to automate mapping the Android UI into the Windows 10 UI and to map Google services within the app such as maps, payments and notifications into Microsoft equivalents. Automated conversion of a UI from one platform to another has never been successfully demonstrated. When I first saw Microsoft's Android bridge at Build 15, I thought it was achievable. But project Astoria, as it is called, is much too complex. Drawing on my architectural knowledge of the underlying Microsoft/Lumia hardware that is very similar to Android phones.I concluded that in the context of partitioning the device or running a VM Microsoft would succeed. But Microsoft tried something much more ambitious.
Rather than "failed," The Next Web reports that for now the project may have only been delayed.
But kudos for pointing it out.
Honestly now ... did anybody believe this could be achieved? I'm pretty sure lots of people looked at this and thought "yeah, right, never gonna happen".
This is why people have been maintaining cross-platform libraries to solve this problem -- because it's a huge and difficult problem.
Automagically converting apps from Android to use all the Windows stuff? That always sounded like a pipe dream. They'd be better off writing something like a reverse Mime to allow native Android apps to run on Windows.
I am not in the least shocked Microsoft isn't going to create the magic path to putting Android apps on Windows phones. And, honestly, I'm not sure the Android users ever expected to care about this, this was all about trying to lure people to Microsoft's platform.
As usual, Microsoft can only see the world through their own lens, and have yet to demonstrate they know what people are actually looking for.
Lost at C:>. Found at C.
I thought all Android apps were just written in Java, you know, that language that is supposed to compile and run on any platform?
Running android on my phone, I notice that there are a lot of very buggy apps. Even assuming the apps all worked perfectly, I imagine it'd be way hard, but with buggy ones...
Microsoft attempting to implement a Wine-like solution for its phone OS?
How ironic.
All they have to do is license GenyMotion.
It's meant for Android developers, but could work for this with a new skin. It runs X86 Android in VirtualBox So, you build your project for X86. I build for dual X86/ARM and use the same executable on physical devices and GenyMotion.
I run it on OSX. It really is the only practical solution for Android simulation on desktop. The Google-supplied emulator is dog-slow to the point of total uselessness, and Intel Haxm isn't much better. GenyMotion is a joy.
Don't work for them, just a happy user!
It is pricy, but they have a $99/year option for Indie developers. (I think individual or company with 3 or fewer developers.)
I'm sure Microsoft could cut a deal.
All they have to do is license GenyMotion.
It's meant for Android developers, but could work for this with a new skin. It runs X86 Android in VirtualBox So, you build your project for X86. I build for dual X86/ARM and use the same executable on physical devices and GenyMotion.
I run it on OSX. It really is the only practical solution for Android simulation on desktop. The Google-supplied emulator is dog-slow to the point of total uselessness, and Intel Haxm isn't much better. GenyMotion is a joy.
Don't work for them, just a happy user!
It is pricy, but they have a $99/year option for Indie developers. (I think individual or company with 3 or fewer developers.)
I'm sure Microsoft could cut a deal.
(Sorry for dupe, posted first as a response to existing with irrelevant subject. Slashdot, do we still have to party like it's 1999? How about ability to edit posts?)
But always a question looking for one!!
Microsoft has an amazing history of backwards compatibility. I mean, the SimCity hack is just my favorite, but they go on and on. If anyone can overcome the delays (not failure) in porting over Android programs, it's Microsoft.
And that's without taking into account their EEE mehtodology. Excel took off the same way, being 100% compatible with 1-2-3.
I don't understand why the GUI would even be difficult. There are a finite number of calls. All they have to do is be slavishly followed. If you want to make the GUI feel more MS'y, that'd be difficult. But first they embrace, then add a few MS only options, then boom.
Your ad here. Ask me how!
Yes with ARC welder from Google, I can run Android apps on my Linux machine and possibly others.
"The hallmark of humanity is the ability to move beyond sensory inputs" - Mary Helen Immordino-Yang
Why dont they use PhoneGap?
Cross platform frameworks do consume more power if youre app is device hardware heavy (I have a research paper on that confirming it).
The Android API is some thousands of functions. Android and Google already implemented that API on top of Linux . I don't see any fundamental reason that a company with Microsoft's resources -couldn't- implement the same API as follows:
Android.textbox.Draw(blah, x, y) {
Winforms.textbox.Draw(x, y, blah);
}
Sure there are thousands of functions, but Microsoft can put hundreds or thousands of programmers to it. It's not an easy task, but mostly it seems -big-, lots of functions, not necessarily anything all -that- complicated.
Looking at it another way, not only did Android and Google implement the Android API, Google also re-implemented the Java API from scratch, while the Mono project and Wine have re-implemented the Microsoft APIs. Given that they've done that, I don't see how it would be impossible for Microsoft re-implement the Android API, mostly with simple stub functions which call the corresponding Windows function.
Actually, the original poster is wrong, automated conversation from one platform to another has been done at least one time in the past, check out Project Odin which could on the fly automatically convert a Win32 binary into a native OS/2 binary.
How about throwing the 'windows' operating system into a trash, and creating own Android port?
It's 100% compatible!
It also has great market share and just works. Contrary to the windows toy.
Google would enjoy suing MS for a gazillion dollars! It could not happen to a nicer company.
The good stuff uses native code. There is an NDK = "native development kit"
I write hybrid apps, using the Rhodes cross-device platform. So, UI is a webview. The platform uses some Java on Android, but mostly C and C++, because it can use the same code used on iOS and Windows CE/Mobile.
So, Rhodes uses Java on Android where it uses Objective-C on iOS - to interface to native APIs.
This partly demonstrates why "separation of content from presentation" is an overrated concept that often complicates designs by making unnecessary "busy work" layers.
How features are presented and grouped are largely interrelated to the function of the application itself. On different devices or gizmos one may design or group features entirely different. The UI is not just a "skin", it's an integral part of the overall product. It's what the users and customers see and largely what they judge you on, fair or not.
You can bend over backward to keep them separated, but then you create a bureaucratic bloated middle-man layer that you have to support and wade through even if you never change UI methods. It's expensive meteor insurance.
That being said, I'd like to see IDE's or similar that make it easy to change (virtual) groupings and filters of UI related code to fit the viewpoint of a given task.
I've kicked around the idea of a "table oriented GUI" where the code is stored, or at least managed, in a database. That way you can sort and group widget code by widget type, screen, title, change-date, property values, method names, etc. etc. -- all the powerful virtual grouping and filtering that database queries offer. For big projects, multiple viewing, searching, and grouping angles becomes more useful. It's what databases are for.
The traditional approach hard-wires one grouping aspect into linear code, making tasks not aligned to that grouping aspect more difficult.
Note the UI-related code doesn't necessarily have to "run" in the table, for compiled languages could have the IDE generate file-based code from the tables. The database would be a code management tool.
Some IDE's kind of do this, but they are essentially reinventing databases. Why reinvent something that already exists?
(One difficult part of this is that "dynamic relational" doesn't exist yet, and each widget kind has different attributes. Making a custom table for each widget gets unruly. Dynamic relational would allow columns to be dynamic. Name/value attribute-tables have to be used instead for traditional RDBMS.)
Table-ized A.I.
Or something like VMWare? Or did they really want the apps to look like native apps? That I'd get. I wish I could run many of my iPad apps on my MacBook...there already is a simulator, so it must be close.
This reminds me of when IBM had the mistaken notion that if they added Windows 3.x compatibility to OS/2 they'd be the platform of choice.
You'd think Microsoft of all companies would remember that logical fallacy of that plan.
You were mistaken. Which is odd, since memory shouldn't be a problem for you
Very simply, Microsoft has to work on the Universal apps - making as many apps available on Windows 10 Mobile as there are in the mainstream Windows 10 platform.
Also, Microsoft should identify and work on helping vendors port some major apps in the market - like Uber, Lyft, Vonage, et al to their platform. Do a drive so that most apps that are already there for both iOS and Android are also ported to Windows 10 Mobile. It doesn't have to be most, or even a majority of apps, just the ones that are already indispensable.
This business happens time and time again. People forget all the past failures, like say the OSI Scientific 3-CPU machines, The Zenith Z-100 dual-CPU system, Apple's various stillborn OS's of the 1990's, and Taligent, and mine, all mine, a CP/M emulator for the Convergent Techologies systems. Remember all of those? All fell flat. Everybody thinks it's a great idea but when they run it they soon notice all the loose ends and rough edges and the slowness and they pretty soon go back to native.
...is the one loosing.
Clarifications and further details:
Re: "to support and wade through even if you never change UI methods"
Change: "to support and wade through even if you never change UI frameworks or platforms"
Re: "For big projects, multiple viewing, searching, and grouping angles becomes more useful."
Change: "For big projects, multiple viewing, searching, and grouping angles becomes more valuable to help deal with the volume of (UI) code."
Re: "UI-related code doesn't necessarily have to "run" in the table, for compiled languages could have the IDE generate file-based code..."
Note that interpreted languages could optionally do an "eval()" function on code in tables. Or they can use the same technique mentioned for compiled languages, but it's an extra code preparation step. Or just store attributes in tables, not methods. But one may be able convert common method behavior into "action" attributes, such as opening a given screen in an "on-click" event.
A lot of GUI activity has reoccurring patterns that can be parameter-ized rather than rely on lots of explicit app code. That way more of the GUI activity is attributes instead of direct code, reducing the tricky issue of how to execute UI-related app code. I'd say at least 3/4 of GUI activity can be readily parameterized in such a way. It's just not the habit of GUI engine/API designers to think that way because they are writing for coders, not attribute "programmers".
(And added advantage of such a system is that it's less language-dependent. You do most GUI "coding" by setting attributes and action-lists having parameters, not using a specific app language.)
Regarding dynamic relational, generally each widget will have a fixed or common set of attributes, such as an ID, container ID/ref, title, default value, sequence or coordinates, widget type, etc., but also have a widget-type-specific set of attributes. Traditional RDMBS don't deal with these widget-specific attributes very well, and this may be why the idea hasn't really been tried. (Visual FoxPro did it to some extent, but mostly didn't expose it to the coder. OODBMS may use sub-classing for widget-specific stuff, but that creates other problems, especially if the differences are not clean "type" hierarchies.)
Table-ized A.I.
Virtual Box.
or one, $50.00 word:
Parallels.
or I will put it another way...
Not news.
The 10 people who bought windows phones because of this are going to want their money back.
BB10 QNX phones run Android apps just about as well as they run natively from what I can tell.
-- Never Mistake a Clear Vision, for a Short Path --
Not sure why MS couldn't just purchase Bluestacks or similar and expand it with hiding the UI to give it the "integrated" look similar to Parallels for OSX. While a VM is not the same as native, most modern W10 hardware can handle the overhead.
Microsoft had a private beta with the bridge and the problem was it worked flawlessly. The bridge allowed anyone to run any Android app on WM. The problem was that it would have resulted in the destruction of universal apps. Why write to Windows if Android apps can run natively?
Why not port the Java Virtual Machine, then using the MS widget set/chrome? E.g. RoboVM uses this to run Android Apps on IOS.
I could not even get MS's Android emulator to run! They overengineered it to the max. Installing it cripples your PC by taking over your ethernet card, without warning. After trashing my development machine with this junkware, I uninstalled their crap and went back to Google's slow-mulator, which at least doesn't trash your computer. I'm not surprised anything MS does with Android has fail written all over it.
There is no such thing as too complex especially when you have the resources of Microsoft. All you have to do is to emulate the Android API at a high level. The only problems are those application that have native Linux binary code.
They could even run Google Play and Google Services internally. The issue is Google wouldn't certify their Android Player to run those programs officially.
Anti-competitive behavior, imho.
Their existing developers were none too happy about all the time they spent on native apps being made worthless under a deluge of quick and dirty ports.
Hi! I make Firefox Plug-ins. Check 'em out @ https://addons.mozilla.org/en-US/firefox/addon/youtube-mp3-podcaster/
Port the Dalvik VM to windows would be a good start, which would run 90% of the apps - then get sued by Goo$le and Ora$le.
Seriously if WINE can be written and maintained, then with MS's resource they cannot achieve something similar they are just approaching the problem wrong. All they need to do is rethink their approach.
Automated conversion of a UI from one platform to another has never been successfully demonstrated.
Isn't this the definition of an emulator?
Not to contradict your point in any way, but Uber has been available on Windows Phone for months, possibly years. Lyft is not, though. It's a WP8 app, but will run fine on W10M.
There's no place I could be, since I've found Serenity...
Microsoft. The spyware.
http://arstechnica.com/information-technology/2015/08/microsoft-has-no-plans-to-tell-us-whats-in-windows-patches/
http://arstechnica.com/information-technology/2015/09/leaks-show-that-microsoft-writes-release-notes-so-why-cant-it-publish-them/
https://www.gnu.org/proprietary/malware-microsoft.html
http://www.computerworlduk.com/blogs/open-enterprise/how-can-any-company-ever-trust-microsoft-again-3569376/
http://www.networkworld.com/article/2956574/microsoft-subnet/windows-10-privacy-spyware-settings-user-agreement.html
http://www.technobuffalo.com/2013/08/22/nsa-windows-8-exploit/
http://www.technobuffalo.com/2013/07/11/microsoft-gave-the-nsa-direct-backdoor-access-to-outlook-skype/
http://winsupersite.com/windows-10/how-stop-windows-10-upgrade-downloading-your-system
http://www.extremetech.com/computing/195592-with-windows-10-microsoft-could-move-to-a-subscription-based-model
http://www.extremetech.com/computing/205320-microsoft-windows-10-will-be-the-last-version-of-windows
https://www.youtube.com/watch?v=5GU5uv28a3I
http://techrights.org/2015/07/31/vista-10-anticompetitive/
https://www.youtube.com/watch?v=wwRYyWn7BEo
https://www.youtube.com/watch?v=Gghj03J_ri0
http://localghost.org/posts/a-traffic-analysis-of-windows-10
http://www.ghacks.net/2015/08/28/microsoft-intensifies-data-collection-on-windows-7-and-8-systems/
THESE
https://gitlab.com/windowslies/blockwindows
^(have to uncomment the #'s on two url's in the hosts file per latest change)
https://senk9.wordpress.com/checklists/windows-10-privacy-checklist/
^Applies to 7/8/8.1 too.
MS tried to make it so difficult for Windows apps and services to work on other platforms, now the tables are turned and they're sad... Oh boo hoo MS
I just got my new Jolla phone, and it runs Android apps through a layer on the Sailfish O/S just fine, thanks !!!