使用C#开发Android应用

111

是否可以使用C#编写安卓应用程序?是否有API或其他工具可用?个人和商业开发是否免费?

我需要安装什么才能在我的Visual Studio中拥有安卓项目模板?


不确定C#有什么用途,但你可以尝试使用HTML5......(但有一些限制) - Dheeresh Singh
C#比Java更类似于Objective-C。iPhone使用前者,Android使用后者,如果您已经了解了C#,那么尝试开发iPhone会更有意义。 - Todd Davies
85
@ToddDavies 我完全不同意,认为Java和C#是最相似的语言。事实上,我会说Objective C根本不反映C#。 - Darren
1
每个人都有自己的看法,但我相信Java和Objective C的关系就像我和我最讨厌的五姑妈一样:P - Todd Davies
1
+1 @DarrenDavies Mono在iOS上的绑定有时很难表示它们在Objective-C中的等效物(例如协议),但它们与Android直接对应。 - Danyal Aytekin
7个回答

83

经过使用Mono后,我不建议使用它。Mono运行时与您的应用程序捆绑在一起,因此您的apk文件将超过6MB,导致应用程序变得臃肿。对于C#的更好编程解决方案是dot42。Mono和dot42都是许可产品。

个人建议使用IntelliJ IDEA开发环境的Java。我有以下3个理由:

  1. 已经有很多适用于Android的Java代码,省去重复造轮子的时间和精力。
  2. IDEA与Visual Studio相似,易于学习;它由JetBrains制作,智能感知比VS更好。
  3. IDEA是免费的。

我是一名C#程序员,拥有12年的经验。我曾尝试使用C#进行Android开发,但最终放弃,选择了Java路线。这两种语言非常相似,你几乎不会注意到太多的学习曲线。

附:如果您想使用LINQ、序列化和其他C#的便利功能,则只需要查找等价的Java库即可。


4
谢谢,你的经验似乎很有用。 - nightcoder
很好的回答,但如果Android应用程序有C#作为后端,该怎么办? - Krupal Shah
如果我想为使用Web API构建的Web应用程序创建一个应用程序,该怎么办? - renakre
谢谢,你的意思是,如果我们使用Java开发Android应用程序,那么我可以通过谷歌搜索获得更多的博客和资料。只有刚开始会有些困难,后来一切都会变得顺利。谢谢,我是C#开发人员,但我将使用Java开始我的应用程序。 - Mr doubt

64

13
为自己和朋友写几个应用程序,399美元的价格实在太高了。我希望有一些“中间价位”的选择。考虑到Android+Eclipse是免费的,Visual Studio Express也是免费的,Xamarin由于其价格原因错失了很多机会。 - cmroanirgo
1
@cmroanirgo Xamarin现在支持订阅模式,提供免费选项 - 您不再需要购买Mono for Android。 - James
@james 这只适用于不使用 P/Invoke 第三方库的小型应用程序:https://store.xamarin.com/ - Redoman
@jj_ 是的,我知道,我没有详细说明免费订阅的细节,我的观点是你可以发布应用程序而无需购买许可证(而以前是需要的)。 - James
4
"dot42"的官网(http://www.dot42.com/)发布了以下信息:dot42已停止开发并不再得到支持,但所有源代码都可以在GitHub上获取。最新版本可作为二进制安装程序进行下载。此消息发布于2015年5月29日。他们曾提供过源代码的下载( http://www.dot42.com/download/Dot42AndroidSetup.exe )和GitHub地址(https://github.com/dot42)。 - JabberwockyDecompiler
显示剩余3条评论

20
这是一个新的工具(注意:处于技术预览阶段):http://www.dot42.com。它是一个 Visual Studio 插件,可以将 C# 代码直接编译为 DEX 代码,这意味着没有像 Mono 这样的运行时要求。
披露一下:我在这家公司工作。
更新:所有源代码现在都在https://github.com/dot42上了。

6
我认为这里不是讨论定价的合适场所,但请确保比较正确的许可证。我想指出的是,dot42附带了一个免费的社区许可证供非商业用途使用。 - Frank Rem
4
弗兰克,你完全正确,我必须承认我没有注意到社区许可证。 - Dave81
1
很好。你是否考虑过为iOS创建C代码? - citykid
2
这太棒了!有没有计划加入UI设计师?或者我可以使用另一个工具来完成这个任务吗?做得非常好! - Piotr Kula
2
实际上目前没有这样的计划。您可以使用Android Studio设计UI,然后将这些资源导入Visual Studio。 - Frank Rem
显示剩余4条评论

8

这个开发工具是否免费用于商业开发?我想开发一个为某公司(他们的用户)服务的应用程序。 - CoolArchTek
他们提供了很多免费使用的内容。但是据我所知,还有一些许可费用。 - FoamyGuy
Mono是唯一的选择吗?有没有其他开源选项可用? - CoolArchTek
5
Mono是开源的,如果我没记错的话。另外,你是否意识到将整个C#(CLR)运行时移植到一个不太得到微软支持的平台需要多少努力?甚至Mono存在都是奇迹。在移动领域,Google和微软是直接竞争对手,而C#是微软支持的技术。可以想象一下。 - Seva Alekseyev

6

我曾经使用过Unity 3D游戏引擎来开发针对PC和移动设备的游戏。在这个开发过程中,我们使用了C#语言。


1
能否提供一下您使用的Unity 3D游戏引擎版本的链接?谢谢。 - Jesse Chisholm

5

4

的确有适用于Android的C#编译器。尽管我更喜欢使用Java开发Android应用程序,但我可以推荐MonoForAndroid。您可以在http://xamarin.com/monoforandroid上找到更多信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接