
Microsoft now lets iOS developers deploy, run and test their apps on Windows - andysinclair
https://techcrunch.com/2017/05/11/microsoft-now-lets-ios-developers-deploy-run-and-test-their-apps-directly-from-windows
======
pjc50
"Microsoft tells us that it talked to Apple about this functionality and that
it has its rival’s blessing and that the Live Player application complies with
all of Apple’s usual rules."

Which is interesting, since I thought that interpreters were strictly against
Apple rules?

~~~
bpicolo
Deployed apps are compiled to ARM assembly. Bit of info here:

[https://developer.xamarin.com/guides/cross-
platform/applicat...](https://developer.xamarin.com/guides/cross-
platform/application_fundamentals/building_cross_platform_applications/part_1_-_understanding_the_xamarin_mobile_platform/)

~~~
ianai
You got it, the relevant piece:

"OS – C# is ahead-of-time (AOT) compiled to ARM assembly language. The .NET
framework is included, with unused classes being stripped out during linking
to reduce the application size. Apple does not allow runtime code generation
on iOS, so some language features are not available (see Xamarin.iOS
Limitations )."

------
pgoggijr
Are there any examples of solid, stable, cross-platform apps developed with
Xamarin? I tried looking at their website, but it doesn't seem possible to
tell the difference between apps being tested using Xamarin Test Cloud, and
apps developed using the Xamarin Platform.

~~~
hart_russell
I've worked on a number of Xamarin apps. You can definitely make stable cross
platform apps, it's just very tedious; sometimes it requires more effort than
developing 2 separate native apps.

~~~
stevenwoo
re:more effort Did you have the freedom to recommend going native or was
Xamarin a requirement or was it too late to switch?

~~~
UK-AL
I would imagine xamarin is faster when you have a complicated domain.

~~~
jacobush
I imagine it goes faster to make the domain complicated with Xamarin. Make of
that what you will...

~~~
UK-AL
You can't make a domain more complicated by technology choices.

You can make it more technically complicated.

~~~
joshjje
Not sure I follow. Are you being pedantic about the definition of domain?
(real question)

~~~
UK-AL
A domain is the business area you are trying to fix problems in. This is the
standard definition.

The technology you used can not make that harder or easier.

------
banashark
It's cool to see xamarin growing after the microsoft acquisition. Replicating
good existing features that other environments have (like exponent, etc) is a
good sign that things are progressing.

Building apps with Xamarin however is still not a pleasant experience whether
it be Native or Forms.

Although Microsoft has built some cool apps with forms (check the microsoft
github and you can find them), it's still a pain to work with things visually.
Odd bugs and restrictions that require dense workarounds occur if you deviate
from the standard application uses (tables and forms). It makes sense it being
a targeted API so I'll leave it at that.

Native was something I really wanted to like. I built 2 PoC apps that later
got translated into swift/java and react-native respectively. Building your
own libraries and widgets is fun, but not when you have a deadline. For non-
visual libraries, it's awesome. I've worked with the .Net ecosystem for a
while, and while the way libraries are written isn't my favorite (OverkillOOP
sometimes), everything is consistent. Visual Libraries are rough. Quite a few
I wanted to use were abandoned with no source code and just a link to download
the nuget from the xamarin store. I could spend the time building the 10
custom widgets that the client REALLY wants (even though the app could work
fine without it), or I could use native/RN UI libraries to wow the client
giving them what they wanted and a little bit more in the same visual/design
style.

To sum it up: it's more work to write a xamarin application when I'm more than
capable of handling 2 similar languages (most app requirements are just
applying known patterns and library gluing anyways) or using
Exponent/ReactNative.

As a side note, I prefer F# and while the Xamarin team says they "like it", it
is a pretty 2nd class system and definitely not something you want to use with
a deadline.

~~~
joshjje
Ive only dabbled in Xamarin briefly before, but I can imagine the numerous
ways it could complicate things. If you have ever been deep into Windows Forms
or the windows API in general, even native has its own unpleasant experiences,
though I cant speak for Apple stuff.

We recently went the hybrid route using Cordova, and while it too had its
share of shenanigans, I think it was much faster/better than separate apps.

------
logiseye
To be honest, that page about limitations in their docs is a huuuuuge let down

[https://developer.xamarin.com/guides/cross-
platform/live/tro...](https://developer.xamarin.com/guides/cross-
platform/live/troubleshooting/)

\- Android user interfaces designed with AXML files are not currently
supported.

\- Some iOS storyboard features are not supported.

\- iOS XIB files are not supported.

Well, let's see how this evolves over time...

------
0x0
So I take it you still need a mac with xcode to properly codesign and submit
release versions of apps to the ios app store? I'm assuming the preview player
ios app is just interpreting c# in debug mode? No way apple blessed
microsoft's preview app with jit entitlements?

~~~
rhodysurf
Yes you have to compile with a mac to deploy to itunes connect. No it compiles
C# AOT to arm assembly code.

~~~
Nelkins
I don't think you are correct. For a proper release, yes, the C#/F#/VB is AOT
compiled. For this "Live Player" app, the IL in the DLLs is interpreted.
Basing this off of this:

"Microsoft believes its Live Player system is entirely compatible with Apple's
rules and regulations for App Store apps. Behind the scenes, the Live Player
includes an interpreter for .NET code. This means that running an app through
Live Player is slower than it would be if natively built on a Mac, but that's
not such a big deal for many aspects of user interface development."

[https://arstechnica.com/information-
technology/2017/05/xamar...](https://arstechnica.com/information-
technology/2017/05/xamarin-live-player-almost-takes-the-mac-out-of-ios-
development/)

~~~
rhodysurf
Look here [https://developer.xamarin.com/guides/cross-
platform/applicat...](https://developer.xamarin.com/guides/cross-
platform/application_fundamentals/building_cross_platform_applications/part_1_-_understanding_the_xamarin_mobile_platform/)

"iOS – C# is ahead-of-time (AOT) compiled to ARM assembly language. The .NET
framework is included, with unused classes being stripped out during linking
to reduce the application size. Apple does not allow runtime code generation
on iOS, so some language features are not available"

~~~
0x0
Because apple does not allow runtime code generation, then obviously the Live
Player preview app won't be able to make use of any ARM assembly language
binary produced by .NET. The only way this Live Player preview app stands a
chance of being approved by apple is by interpreting everything. Mapping
memory executable is impossible for "mere mortals" on iOS, only a few
specially-blessed first party apps like MobileSafari can do that (to support
JIT javascript). And the whole reason for using the Live Player as a conduit
is to avoid the need for a native mac xcode toolchain to package a real .ipa
app.

The section you quoted is only applicable for native builds to .ipa (which you
probably still need a mac for, since iOS requires the app to be code signed
and provisioned even for debugging/development modes)

------
Stanleyc23
more accurately: Microsoft now lets Xamarin developers deploy, run and test
their iOS apps on Windows

~~~
H1Supreme
Yeah, they left that part off didn't they? Xamarin != Native iOS.

~~~
marcosscriven
How is Xamarin not native? It's compiled right, not some web view hybrid?

~~~
xamcb
Yes, Xamarin produces a compiled executable, as you would get in Swift or
Objective-C. It is not a web view hybrid.

I work for Microsoft

------
tluyben2
I have been working on a huge Xamarin app for weeks now and both Xamarin
Studio and Visual Studio for Mac are horrendous. There are so many bugs and
quirks in those things. Almost always when I think I found an issue with the
underlying libraries (we use the native Android & iOS libs as well as Forms
and a mix of both), it is an issue with either of the IDEs. I have a solid
Macbook Pro and yet it comes to a halt and requires reboots after a bit. I
even currently do parts with Vim and only compile/run with the IDE. I tried
Rider but that's even worse. VS for Windows with this release might be worth a
try. Did anyone try?

------
mkhalil
Wow, for a second I thought I was looking at an old post since this functions
almost identical to how repl.it[0] is working and they just posted their
framework on here a few days ago.

[0][https://repl.it/site/react_native](https://repl.it/site/react_native)

------
fhood
Anybody used this yet? This could end up be really helpful for me. I hate
developing for android, but I collaborate with people that don't own macs
enough that it ends up being my de facto OS for prototyping mobile crap.

~~~
xamcb
Hey, PM at Microsoft here. I have used this often, and I find it to be
perfectly suited for quick mockups and testing new ideas. However, it is still
a preview, so there may be cases where live apps may fail on the device. Be
sure to let us know, we are eager to improve this product!

------
0xFFC
Sorry, i am little bit confused, you don't need azure cloud or anything to run
you ios app inside your visual studio when you developing it?

It iOS vm or it is just deploys to your IPhone from windows?

~~~
znedw
Deploys to a physical iOS device via QR code

------
bigmanwalter
I haven't used Xamarin yet but I'm really enjoying Ionic framework for
multiplatform development with JavaScript.

------
pbarnes_1
* written in C#.

