How to reuse existing C# code in Android? - c#

I have a C# network protocol library (about 5000 LOC) which I want to reuse in an android app. The protocol is likely to change in the future.
What is a good way to do this?
Port the library to Java/Android?
Use some sort of C# to Java converter like this. Build a Java library with the source and use it in my Android app?
Build a android service with Xamarin.Android (monodroid) and write a native Android app which uses this service?
other options?!

If you are looking to make an Android app and using Java isn't a requirement, Xamarin.Android is a very good solution. The way you build the app is pretty much the same as you would with Java. You still have resource files and axml files, etc. The main difference is that you use C# instead of Android.
There has also been some anecdotes that the .NET VM runs faster than Android's Dalvik JVM. So it is possible that your C# code will run faster than a Java port.
The Alpha Channel of Xamarin Studio has initial support for PCLs so if you have your library as a PCL already it may turn out to very easy to just plug it in.
You may want to check out this discussion to get a sense of Pros and Cons of C# vs. Java:
MonoDroid VS Java in android development?
You can also use this website to scan your lib to see how mobile friendly it is:
http://scan.xamarin.com/

Related

Is it possible to Convert or wrap C# APP to IO Xcode Apple APP and Android

I have an app developed for windows 10 on C# and now I want to move to IOS and Android. I have heard of xamarin and used some of there stuff in C# but would it be possible to embed the C# code and move it to apple xcode without having to redevelop the app from again?
would it be possible to embed the C# code and move it to apple xcode without having to redevelop the app from again?
No, it is not possible. Basically you can share some UIs across different platforms, but I think redevelop your app for each platform is necessary.
Not sure if you want to use Xamarin.Android and Xamarin.iOS or Xamarin.Forms to develop your app, you can use C# for development by using Xamarin, it provides a cross-platform implementation of the extensive features in .Net framework, but the actual implementation on each system is very different. For more information, you can refer to Understanding the Xamarin Mobile Platform.
For Xamarin.Android and Xamarin.iOS, you can refer to Android Architecture and iOS Architecture.
For Xamarin.Forms, you can have your UIs and some basic features designed in the PCL in order to share across different platforms, but for most features just for example like working with files, we need to access the native method of each platform, therefor, Xamarin.Forms provides a locator named DependencyService to achieve this.

Writing cross-platform Unity3D plugins using Xamarin

Is it possible to write cross-platform Unity3D plugins (specifically for android and ios) using the Xamarin APIs?
If yes, what would be the procedure to go about doing it? Are you aware of any documentation or reference that might be useful?
Unity still doesn't provide a lot of native functionality as Xamarin does. I'm asking this because it just makes sense minimizing the learning curve for developing unity plugins. After a lot of experimentation, I've just begun understanding the intricacies of C#. If I have to learn two other languages (Java and Objective-C) that would greatly impede my progress.
Thanks.
Microsoft is opensourcing the Xamarin SDK, so combined with Mono for Android (that Unity most probably uses), you could soon be closer to your goal
BTW, they're also changing Mono's licensing model to the more permissive "MIT License" and hosting it under the .NET Foundation
Xamarin and Unity MonoDevelop are separate project. Xamarin doesnt support Unity. If you want a crossplatform plugin you could use C++ read:
http://docs.unity3d.com/Manual/Plugins.html

developing tool for building Android/Iphone app

I have .net c# background(don't mind to learn new language to get the things right). Right now i want to make some small applications for Iphone/Android phones.Basically, i will show some graphs with data retrieved through my webservice.
Can anyone tell me which developing tool should i use to create those small apps quickly?
I don't have any experience with Flash.And i just know that Flash builder 4.5 can convert Flash applications to Iphone/Android. However, i don't feel like that it is a native way to build Iphone/Android app
But if you advise that, i might go that way.
thank you
Xamarin has products that allows you to use C# (and your existing skills) for both iOS (iPhone / iPad) and Android devices : MonoTouch and Mono for Android.
disclaimer: I work for Xamarin
You might want to use frameworks that help build apps for multiple platforms with the need to know native programming languages. PhoneGap is one of these popular frameworks.
You can use C# to create a WCF service. There are a few different libraries to develop Android applications. If you want to work with C#, you can check out Mono for Android.
http://docs.xamarin.com/android
From my knowledge, however, Java is the preferred language to develop Android application. Eclipse has a great plugin which integrates with the Android SDK / Emulator.

Develop a C# application for Windows Mobile, Android & iPhone

I have a project where I need to build a C# application that is able to run in iPhone, Android and Windows Mobile.
For windows Mobile that is no problem, but I think its a challenge when we try to develop for Android and iPhone.
I've been searching for solutions and i found some information about Mono-Android and MonoTouch.
My question is, has anyone used this API's? Are they good?
Do they really take advantage of Android/iPhone native api's?
Can I with only one source code create an application for both platforms?
And finally, is there any other way of creating a C# application for these mobile platforms?
Yes they are very solid. They give you .NET 4.0 with all of that capability & the ability to share data access, networking/API integration, and business logic in shared assemblies. You'll of course have to write the user interface portion of the applications in C# but specific to the platform.
For example, MonoTouch is like Cocoa in C#. It will feel unlike your typical .NET programming style, so make sure you get comfortable reading Objective-C for documentation & assistance.
Also recommended is to follow the UI guidelines of the platform in question. Don't create a cookie cutter app for all platforms or it will suck everywhere.

How to write applications for different platforms? Linux, Mac, Windows and Mobile Platforms

We want to write a client for an online service which should be available on as many platforms as possible. This question is about what programming language and framework we should use to create this client.
These platforms are required: Linux, Mac, Windows, iOS (iPhone, iPod, iPad) and Android. The more the better.
For the mobile platforms there is Titanium Mobile. I haven't tried this thing yet, the website says you can develop for both iOS and Android using web skills such as Javascript. I don't know yet if you can deploy for both platforms using the SAME code. It would be great!
There is also Titanium Desktop but I don't like the idea that the complete source code is shared with the final application. Titanium does this for Mobile too but it isn't that easy to modify an app loaded via App Store.
So, what other way is there to create an application which runs on at least the three major desktop platforms? I thought c# with mono would be the way to go but I just realized that you need to use mono with MonoMac in order to publish it on the Mac App Store and use things like Growl. And since MonoMac is naturally only available for Macs, it's again not possible to deploy the mono app on all platforms without rewriting it for at least the Mac. And it would be nice if the app looks "native" on all platforms. Gtk# just does not look good on a Mac. It's "okay" on Windows and great on Linux.
I know we could use Objective-C for iOS and Mac, Java for Android, C#.net for Windows and C#.mono for Linux but the main point is that we don't want to write the same app in a lot of different languages. That would make development and maintenance really hard.
And we prefer languages with C-style syntax which are much easier to learn for us PHP web developers. Btw: We dislike Air and I'm not sure about Java since I never used it but it also does not look "native" and it feels kinda slow.
Edit:
Just a note: It wouldn't be a problem to create an own form for each platform if at least the remaining code is the same. Is it possible to use MonoMac, Gtk# and Win Forums in the same C# application? And I'd prefer C# over C++ as I have no skills in C++, so I first need to check how hard it is to write with Qt.
Another note: We don't plan to spend much money and because we need to pay Apples Developer Programs we want to use free or cheap technology. Preferable Open Source.
Just use C# for all of the above.
The mono project will cover Mac and Linux, with monodroid your android requirements are covered and monotouch will take care of iPod/iPad/iPhone.
In regards to UI - mono has full support for the System.Windows.Forms namespace, so you don't have to use GTK# if you don't want to.
I don't think I need to mention windows support ;)
If you really want to support all those platforms from a single application, your best bet will be to create a web application. With HTML5, such an application can even be cached on the device and used when no connection is available. Also, that strategy would make it feasible to customize the UI based on the device running the app.
You will not have good luck if you set out to build a single native app that runs on Android and iOS, let alone all the other platforms you mentioned. The reason that they're different platforms rather than the same is that they're, well, different. They have different capabilities, run on different hardware, are built with different languages, employ different application models with different user interfaces, and have audiences with different expectations.
The best solution I've come across over the years is Qt SDK.
Great support for all major platforms, Symbian, OS X, Linux flavors, Windows, Windows CE (mobile), Android and iOS partial support and etc.
Its base is C++ but bindings for almost every language (like C#) is available. Lots of help and support is also covered.
The core Qt libs are very fast and extensive, And the whole KDE desktop (of Linux) is done with it. Famous software like VLC and VirtualBox are done in Qt.
Another relatively new way of doing cross-platform development is to use the open source Eto.Forms, which allows you to have one UI codebase target each platform's native toolkit. It is a UI abstraction layer that can target GTK#, MonoMac/OSX, WinForms, and WPF.
There is also an iOS port in the works.
Java sounds like the best fit. It is cross-platform, easy to understand, has a huge userbase and android is based on it.
Depending if you need an offline interaction mode, it sounds like you should develop a web application. You can develop a mobile version and a desktop version and thus support all the of the above platforms. Look at youtube's application for Iphone, it retains the same functionality as the the iphone app but is purely html. Furthermore, html5 capable browsers could also have the ability to run offline.
Crazy as it sounds, check out Flash/Flex - it is cross platform, code once, run everywhere ,now compiles down to native code on e.g. Android and iOS and the 10.1 player is shipping all over. I had to solve exactly this problem and when Flash Builder Burrito catered for mobile after working with it for a while I have switching from C#/Flash hybrid to Flash only for clients. (Our backend is C#/Node/C++, etc).
Depending on your timelines and needs it is something look into.
Some random links to peruse:
Blog post about performance and video to single app multi device
Developing flash and flex applications

Categories

Resources