Microsoft's Plan To Port Android Apps To Windows Proves Too Complex (networkworld.com) 131
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.
TFS is oversensational? Say it ain't so! (Score:4, Funny)
But kudos for pointing it out.
Re: (Score:3)
Considering pretty much all other news sites are covering the story from the aspect that providing an Android compatibility layer has more legal issues than not (considering the unsure outcome of the Oracle vs Google API case - if MS went ahead with a compat layer and Oracle won then both Oracle and Google could take issue with it) and that providing a compatibility layer cheapens the Universal Windows Platform MS has been touting for WP10, Im not entirely sure where the angle taken in TFS has come from - s
Re: (Score:3)
I would love if there were a compat layer in Windows Phone that let it run Android apps and that the same compat layer was usable on a Win 10 desktop!
The general consensus on Windows 8 was that people did not want phone-style apps on desktops.
Re: (Score:2)
At least last time I was looking into the Windows for mobile devices it had severe shortcomings but maybe they have filled in the grand canyon-sized holes in their platform, otherwise they don't have any hope of succeeding.
Re: (Score:2)
Geez - it's not that hard - just license the Android OS from Google and give it a Windows UI skin!
( /me ducks and runs like hell...)
Re: (Score:2)
And that's the effect of competition...
They actually have to compete in the mobile market, while on desktops they take their customer base for granted.
Re: (Score:2)
To be fair, a company like MS will 'delay' a project a lot before admitting publicly that it's a lost cause...
Honestly ... (Score:5, Insightful)
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.
"just" an implementation of what Android/Google (Score:4, Insightful)
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.
Re:"just" an implementation of what Android/Google (Score:4, Insightful)
Re: (Score:2)
Re: (Score:2)
Problem is there's a lot of awkwardness to reconcile. Off the top of my head:
-Background execution managed by a notification icon
-Things like accelerometer, magnet, gps, and other sensor data inputs
-Low level data from the cellular radio
Now for something like an angry birds, the bar is probably pretty low. If you want to claim support for 'everything', well that's a whole world of possible hurt.
However supporting the common pieces that a lot stick to because they are already trying to have consistent exp
Re: (Score:2)
Re:"just" an implementation of what Android/Google (Score:5, Informative)
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);
}
Simple... Android.textbox.Draw, and Winforms.textbox.Draw usually don't have the exact same semantics. In fact, usually the APIs are structurally different. Often there simply isn't analagous functionality on one or other platform.
Furthermore, even if you somehow magically managed to make all of that work out properly, you'd still be stuck with a bunch of functionality that's subtly different. The behaviour of the controls is subtly different, and that can make or break the functionality of an application.
Re: (Score:3)
Simple... Android.textbox.Draw, and Winforms.textbox.Draw usually don't have the exact same semantics. In fact, usually the APIs are structurally different. Often there simply isn't analagous functionality on one or other platform.
The same could be said of lot of emulation / compatibility layers yet they still exist. Apparently the Xbox One supports certain 360 games because they recompiled and linked the executables using a compatibility library - they run natively but think they're running on the 360.
Likewise wine / winelib allows Windows software to run on Linux or OS X (through commercial forks of Wine). And Wine didn't even have the benefit of being able to look at the Windows source. I actually looked at a Wine implementation
Re: (Score:1)
Which is why you dealt with those problems when making the conversion wrappers that handled said calls.
All they had to do was write something similar to WINE that took every Android call and did it natively.
It seems they tried to over-analyse things and make it way more complicated than it need be.
WINE is complex, but it is only complex because there are loads of different calls and specs they need to basically recreate manually.
It is heavily TIME-based, not complexity based. That is the issue. Microsoft
Re: (Score:2)
All they had to do was write something similar to WINE that took every Android call and did it natively.
You realise that Wine is 1.4 million lines of code, and *still* doesn't accurately implement all the windows SDKs, right?
That's not an "all" you have to do.
Re: (Score:2)
Android is OSS under a fairly liberal license. You don't need to emulate it completely, you just need to emulate the relatively small number of syscalls/kernel interfaces so that the existing OSS code could run on a Windows kernel and get a graphics context to draw on ... Pretty trivial with OpenGL or DirectX since Microsoft will try to shoe horn that in instead of using the more directly compatible OpenGL layer.
That's the first month. Now you spend a couple years integrating with your own services instea
Re: (Score:2)
Except they are trying to implement, emulate whatever the entire damn ecosystem, sounds like, rather than just port an app, or provide a limited technical environment in which it will run...sort of...
Sounds like just the spot of mega-project that will fail hard.
Given the amount of cash they're sitting on, would it not be easier to get the "thousands of programmers" the easy way?
Just contact the dudes that wrote the top 100 (or 200, 300 whatever your budget) apps on android and iOS and given free free dev to
Re: (Score:2)
Re: (Score:2)
Re:Honestly ... (Score:4, Interesting)
Of course it can be achieved!
Ever heard of Jolla? They are a small Smartphone manufacturer created by former Nokia employees who were let go when Microsoft bought up the phone activities of Nokia.
=> jolla.com
Ever heard of sailfish? It is an operating system based on Linux and Qt, with its origins in the next Linux OS developed by Nokia. It was suppose to replace the OS running on the N900 (which used GTK for the UI). That was before that smart guy Stephen Elop became CEO, if you know what I mean...
=> sailfishos.org
So what, you ask? Jolla runs sailfish and sailfish contains an Android runtime (VM + glue code + libraries).
In a sense, I just love the irony of the situation!
Re: (Score:2)
Which is essentially what I said: instead of trying to write something which re-maps all of the Android stuff to Windows to try to create a native app ... implement an Android runtime, or a layer like Mime which allows the Android calls to run without caring it's Windows underneath.
The problem is Microsoft was trying to map it to their own native cal
Re: (Score:2)
The problem with what you're saying is that you're blaming the complexity/difficulty and saying it's not possible. That's just plain wrong. It's certainly possible. Is it feasible? Even if it was feasible, if they did it, would it be a good thing?
I suspect this is pretty much a bait and switch type of situation - lure people along thinking they'll have the entire android ecosystem available, and then just give up on that project as they slowly get the top NNN apps to move over to native apps. They don't wan
Focus on Universal apps (Score:2)
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 alread
Re: (Score:2)
I'm pretty sure they put it on a shelf for now - and that developers can still take a look at it. I don't think open source - but it is still available for people to play with and take a look at it. Gosh - can't remember my source, maybe a recent Dotnetrocks episode?
Apparently there were parts that they couldn't figure out - and the implementation was becoming ugly.
Sounds like the approach was never going to work out - so they are taking time to rethink it.
Re: (Score:1)
Honestly now ... did anybody believe this could be achieved?
Pretty much everyone believed that. Blackberry users have been running Android apps for ages. They even have Amazon's app store. If a much smaller company can do it, and do it well, there's no reason to believe that Microsoft couldn't.
Re: (Score:2)
Re: (Score:2)
At a binary level, there are plenty of applications for Windows 10 - both native Windows 8/10 apps as well as previous 64-bit Windows 7 apps. So for Windows 10, it's not an issue
For Mobile, Microsoft needs to come up w/ a strategy so that the killer mobile apps are there. Some are - Fandango, Yelp! and so on. However, a lot of them ain't - Uber, Lyft, Vonage are some apps that could be a make/break decision of whether a phone gets used or not. Microsoft should identify the indispensable apps and do a
WP8.1 has Uber (Score:2)
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.
Re: (Score:2)
Re: (Score:2)
some things that might be achievable would be things like the google play services location services and such.
the payment api services however.. they would need the dev to do so much work they might just as well switch to ms apis anyways for those. they need to set the iap options on ms's servers anyways and switch the server side to do confirmations from ms. this is a task that I cannot see being automated.
as to mapping the ui libraries? why the fuck. nothing good can come out of that, and with that I mean
Port? Really? (Score:3, Funny)
I thought all Android apps were just written in Java, you know, that language that is supposed to compile and run on any platform?
Re:Port? Really? (Score:5, Funny)
Your knowledge and experience is truly a credit to the Slashdot community and part of what makes this site so great.
Re:Port? Really? (Score:5, Informative)
I think that you are confused about java-the-language, java-the-standard-library and java-the-platform. Android is java only as far as first one is concerned. And I don't think that this is giving any troubles with possible porting.
Basic subset of C is quite portable, isn't it? Then according to your logic, game written for Xwindows+opengl should work against MSWindows+DirectX without any issues...
Re: Port? Really? (Score:2)
Android runs portable byte code unless you're using the NDK. It's not java bytecode. For example one big difference is that it's register based instead of stack based. Arm had a ton of registers. X86 only has a few general purpose ones.
To get the integration that Microsoft seeks they would have to reimplement a good portion of the runtime, which heavily depends on Linux. For example android has a rather sophisticated IPC mechanism.
It's unlikely this will get done without QEMU.
In summary most android apps ar
Re: (Score:2)
I think that you are confused about a earnest question vs a rhetorical question.
Seriously though, we software developers should never miss an opportunity to ask "how's that platform-independent Java working out for ya?" so that the business guys remember why they need us.
It's also not true that platform independence hasn't been achieved. It's just that we call it "open standards". There are many examples, but in terms of a full application stack, HTTP/HTML is probably the best. Sure, it took the w3c and bro
Re: (Score:2)
The only remaining question is why Apple, Google and Microsoft all insisted on making smart phones and tablets entirely new beasts, incompatible with each other and with the modular, cohesive, loosely coupled web-based application stack that is obviously the clear winner for just about everything else (sorry embedded device guys).
But, Microsoft didn't. UWP/WinRT apps can be built using HTML/JS/CSS. (Or C#/XAML, VB/XAML, C++/XAML, or C++/DirectX if that's what you prefer.) Additional APIs can be accessed for platform and device capabilities like notifications, live tiles, persistence, 3D printing, etc. And you get the same security sandbox guarantees.
Re: (Score:2)
Originally, only Apple could write actual apps for iPhone. The Apple line then was to write web apps that will run on Mobile Safari. After they made such programming available,
NDK = Native Development Kit (Score:2)
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.
Good point (Score:2)
Why not port the Java Virtual Machine, then using the MS widget set/chrome? E.g. RoboVM [robovm.com] uses this to run Android Apps on IOS.
Not surprised (Score:2)
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...
Re: (Score:2)
Not really. From what I understand, the plan was to make it easy for developers to port over apps they wrote for Android without having to re-write it for Windows (an automated conversion), not to provide a compatibility layer. Basically to re-compile the code in such a way that it becomes a native Windows app.
GenyMotion (Score:2)
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
Re:GenyMotion (Score:5, Insightful)
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.
Microsoft would never do this because It's not in their interest to build something which connects a customer to Google's services.
They want to replace the entire Google cloud services infrastructure with Microsoft services.
Re: (Score:2)
You hit the nail on the head there, and I think that is one of the main reasons for the delay/abandonment of this project. Even if they could get an approximation of Googles services up and running they would probably run into a wall of lawyers, so even if it was technically feasible (albeit extremely complicated) would it be legally feasible?
GenyMotion (Score:2)
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
Re: (Score:1)
OK, /. is totally wacky now. I guess it was /. that made the subject "Score:?" That's what happens when the "professionals" take over!
Re: (Score:1)
You're blaming slashcode for your double post?
Ok, fine, that's actually quite credible. But still, a craftsman doesn't blame his tools.
I wouldn't count on failure yet (Score:2)
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 mak
Re: (Score:2)
You reference an article from 2004. In 2004 Microsoft had $36.8 billion in revenue. In 2015 it was $93.5 billion.
Is Microsoft really "done"?
Re: (Score:2)
I don't know about Microsoft, but Windows phone is "done". Market share never reached anything like critical mass and is now dropping. App developers are actively pulling their apps from Microsoft's app store. He's dead Jim.
Re: (Score:2)
This gen is done. Next gen will come out again.
MS has the money to try again and again til it gets traction. They will have a Windows phone that succeeds, even if it's just a fork of Android.
I mean, hell, didn't they buy Cyanogenmod?
Re: (Score:1)
> Microsoft has an amazing history of backwards compatibility. I mean, the SimCity hack is just my favorite,
Ah, you're referring to How Microsoft Lost the API War [joelonsoftware.com]
Re: (Score:2)
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
There may be a finite number of them (vast but still finite), they're sitting in a sea of asynchronous execution while maintaining internal state. If MS don't just clone Android source, manually reproducing all the subtle interactions adds a huge level of complexity to the task.
Get that all working and you still have to replace the rendering layer or accept the graphics won
ARC Welder (Score:3)
Yes with ARC welder [chrome.com] from Google, I can run Android apps on my Linux machine and possibly others [arstechnica.com].
Re: (Score:2)
Phonegap would be great for apps written with PhoneGap! If they can get the authors to publish for Windows.
PhoneGap apps use a combination of Javascript and native plugins.
PhoneGap won't "convert" some arbitrary app that is written with Java and/or the NDK.
Re: (Score:2)
Microsoft did include decent Cordova (Phonegap) integration into Visual Studio 2015 including native Windows and Android build process with connected device deployment, and remote build on networked Mac for iOS builds and deployment.
Re: (Score:2)
Can you post a link to your research?
Automated conversation has been done before (Score:2)
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.
Re: (Score:2)
Maybe Microsoft should flip things and make an Android phone (with 100% Android compatibility) but possibly with Windows style tiled home screen (optional for users) but also have a Windows 10 Mobile native programming interface (to give Windows 10 developers easy access).
The development model of Windows 10 Universal Windows Platform is pretty cool (phone to tablet to laptop to desktop to tv). The ui tools are there to make this not too difficult to take advantage of.
Re: (Score:2)
It also has great market share and just works.
For small values of "works".
copyright (Score:2)
Google would enjoy suing MS for a gazillion dollars! It could not happen to a nicer company.
Re: (Score:2)
Separation of Presentation Over-Hyped (Score:1)
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
Clarifications (Re:Separation of Presentation Over (Score:1)
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 lan
How is this a different from Rosetta (Apple)? (Score:1)
Re: (Score:2)
It's not a virtual machine, it's a tool that would hypothetically allow developers to compile their native Android code to a Windows app and keep all functionality intact. Basically a super easy way to port their apps to Windows phone.
Re: (Score:3)
The reality is, they were trying to do FAR more than port apps:
Re: (Score:1)
This reminds me (Score:3)
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.
Re: (Score:2)
The one supporting the competitor system... (Score:2)
...is the one loosing.
Re: (Score:2)
Loosing... an arrow? Loosing the dogs of war? "Loosing" as in releasing, a reference to the way Windows 10 Mobile is being released imminently?
Blackberry did it (Score:3, Insightful)
Re: (Score:2)
Yeah. Good phone. Poor marketing. Few will listen. One must have the Correct Brand(tm) else one will not be deemed a valid hipster.
Re: (Score:2)
Bullshit (Score:2)
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.
I'd heard it wasn't just complexity (Score:2)
Never been accomplished? (Score:2)
Automated conversion of a UI from one platform to another has never been successfully demonstrated.
Isn't this the definition of an emulator?
Re: (Score:2)
Emulators are run-time, this is compile-time. The closest thing I'm aware of it WineLib, which lets people compile Win32 code for Linux or OS X, and takes care of stuff like translating DirectX calls to OpenGL ones. It's reasonably "successful" in terms of usage, but far from complete or bug-free. A lot of apps just won't work through it, and many others will exhibit new and exciting bugs.
Re: (Score:2)
These days, all libraries are bound at run-time. That's true for .NET, Android SDK, even Win32. You can write your own version of Shell32.dll, drop it in place, and as long as you implemented all of the entry points, your application would never know what happens on the back end.
Maybe an emulator is "thicker" than a bridge, a little less seamlessly part of the host OS, but it certainly does convert (or implement) the entire UI of the client to the host platform. The emulator has to implement every single