xamarin调用java_如何使用Android应用程序的源代码(在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,但我正在处理一个相当复杂的程序。

您可以重构您的应用程序,将大部分代码移动到Android库中,该库可以通过绑定项目在Xamarin中重新使用。否则,您需要将代码移植到C#

@Jason我有点明白你想说什么,但我不知道你所说的重构是什么意思。据我所知,重构是一种"智能重命名",所以我不明白为什么要将其转换为Android库。你能更具体一点吗?我确实得到了关于使用绑定库的部分,就像我以前使用过它们一样。谢谢你的帮助,我很感激!

重构通常意味着获取工作代码并重新排列或对其进行小的修复。您可能会采用一个有效的循环,但很难对其进行读取和重构,从而使其更具可读性,从而更易于维护。或者取一个正在工作的应用程序,将其部分分解成一个单独的库,这样您就可以在其他应用程序中重用它,或者为它创建一个绑定库。

抱歉,我误解了你的问题-如果你想在iOS应用程序中使用andriod代码,你必须移植它。绑定库允许您在xamarin android项目中使用本机android代码,或在xamarin ios项目中使用本机ios代码,但不能在android和ios之间使用。

理解。谢谢你的帮助!

基本上,你不能。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应用程序,你需要重新编写它。

好的,所以我只需要为应用程序在后台做的所有事情重写逻辑,它将在所有平台上工作,但是用户交互逻辑必须是平台特定的。我理解正确吗?此外,是否不仅可以将应用程序的逻辑转换为.dll文件并与C_一起使用,而且我可以不只是使用XAML来生成一个跨所有平台相同的UI?我相当确定有一个用于XAML方法的模板-我将查看。不管怎样,谢谢你的回答,我真的很感激。

任何不直接调用API或对其进行抽象的任何东西都可以从在所有平台上运行的代码中调用(并且有很多抽象,例如使用HTTPclipse从跨平台代码调用WebServices、用于相机等的XAMARIN插件)不确定是否可以将Java代码转换成将在所有PLA上运行的DLL。TFrase- IOS不与Java运行时一起运行。您可以对相同的用户界面使用XAML—这是xamarin.forms,因此您只编写一次用户界面,但不能完成所有操作。但是,它允许您使用本机代码来完成所有工作。

那我最好去工作。/谢谢你的帮助!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值