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

How to use an android app's source code (in Java) to make a cross-platform program with xamarin

我已经创建了一个Android应用程序,我想移植到iOS和Windows平台。我知道我可以用C_和Xamarin创建这种程序,因为我以前也做过类似的实验;但是,我不希望把所有代码都转换成C_,因为那样会很费时,最终也不会很好地利用我的时间。从我在Xamarin文档中读到的描述来看,它似乎是可行的,只是我不确定如何做到。为了澄清,我希望XAMARIN使用Java代码(Android应用程序源代码)来创建相同的应用程序,但在iOS和通用Windows平台上。事先谢谢。

我的意思示例:生成一个应用程序,从Java代码中可以在所有平台上执行完全相同的操作:

1
2
3
4
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,但我正在处理一个相当复杂的程序。


基本上,你不能。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跨平台的方式是因为你可以编写你的业务逻辑——所以所有不需要直接与操作系统交互的东西(即,不是用户界面代码)一次,然后从iOS、Android和uwp应用程序引用它。

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

对于你的用户界面,你有两个选择-使用xamarin.ios、xamarin.android和uwp编写它(所以使用本地的sdk来构建你的应用程序),或者使用xamarin.forms,它给你一个跨本地API的抽象,允许你编写你的用户界面一次(折衷的是你得到了一个最小的公分母方法,如果你想做一些花哨的事情您需要直接与本机API交互)。

tl;dr-你不能仅仅使用xamarin来神奇地移植你的Android应用程序,你需要重新编写它。