如何使用Android应用程序的源代码(在Java中)与xamarin一起制作跨平台程序

时间:2017-01-14 02:03:47

标签: java xamarin

我创建了一个Android应用程序,我想将其移植到iOS和Windows平台。我知道我可以使用C#和Xamarin创建这种程序,因为我之前已经尝试过这种事情;但是,我宁愿不必将所有代码转换为C#,因为这将耗费时间,最终不会很好地利用我的时间。从我在Xamarin文档中读到的描述来看,它似乎是可行的,只是我不确定如何。为了澄清,我希望Xamarin使用Java代码(Android应用程序源代码)来创建相同的应用程序,但是在iOS和通用Windows平台上。提前谢谢。

我的意思是: 从这个java代码生成一个应该在所有平台上执行完全相同的应用程序:

AlertDialog.Builder uselessAlert=new AlertDialog.Builder(this);
uselessAlert.setMessage("Pointless Button v");
uselessAlert.setPositiveButton("Ok",new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog, int which) {}});
uselessAlert.create().show();

当然,这是一个非常无用的程序,很容易转换为C#,但我正在处理一个相当复杂的程序。

1 个答案:

答案 0 :(得分:0)

基本上,你不能。 Xamarin是一个工具集,为iOS和Android提供C#和F#编译器,以及本机iOS和Android SDK的包装器。您可以通过绑定库来调用Java代码,因此您可以调用现有的Android Java库,但只能从Android应用程序调用,而不能从iOS应用程序调用,因为运行Java代码所需的API是特定于Android的。在上面的代码片段中,您引用了AlertDialog。这是一个Android API,你可以在Xamarin Android应用程序中用C#调用它,但是无法从iOS或UWP应用程序调用它 - API根本就不存在。您需要为每个平台重新编写此代码。

Xamarin跨平台的方式是因为你可以编写你的业务逻辑 - 所以一切都不需要直接与操作系统交互(即不是UI代码),然后从iOS,Android和UWP中引用它应用

首先需要做的是重构核心业务逻辑并用C#或F#重写它。然后,您需要考虑UI以及与操作系统交互的任何内容。

对于您的UI,您有两个选择 - 使用Xamarin.iOS,Xamarin.Android和UWP编写它(因此使用本机SDK构建您的应用程序),或使用Xamarin.Forms,它为您提供跨本机API的抽象允许你编写一次你的UI(妥协是你得到一个最低的公分母方法,如果你想做一些花哨的东西,你需要直接与本机API交互)。

TL; DR - 您不能只使用Xamarin神奇地移植Android应用,您需要重新编写它。