代码之家  ›  专栏  ›  技术社区  ›  Rashiq

颤振-从现有android项目导入

  •  31
  • Rashiq  · 技术社区  · 8 年前

    我目前正在做一个android项目,完成了约75%。我需要一个类似的iOS应用程序。

    我可以将此项目导入到Flatter吗?怎样

    此外,Flatter是否支持我在该项目中使用的库?

    5 回复  |  直到 6 年前
        1
  •  53
  •   creativecreatorormaybenot    8 年前

    颤振应用程序的工作方式完全不同 ,即既不像Android,也不像iOS。颤振有自己的架构,因此有自己的插件等。

    总结

    不 ,您不能 转换 您现有的Android代码 飞奔 颤振代码,这是启用跨平台行为所必需的,因为颤振SDK使用的所有代码都必须用Dart编写。

    然而 ,您可以使用您的Android代码,只需将其包含在Android文件夹中 尝试 要将其与颤振SDK集成,这可能比完全在Dart中重写它需要做更多的工作。这也是 不 您通常想要做什么,因为本地Android和iOS代码最有意义的是用于启用您无法通过Flutter实现的功能,形式为 plugins 。

    还有第三种方法,那就是保留Android代码 添加 具有颤振特性。这很难实现,因为您必须创建一个接口来从Android代码“切换”到Flutter。使用此选项,您还需要在Flutter或本机iOS中重写iOS的其余部分,这对您毫无帮助。

    详尽阐述

    对此有一个非常直截了当的答案。

    颤振 是一个 顶部图层 本机SDK的。 这意味着 就是你 能够 保留你的代码,因为如果你有机会 项目 ,你会看到,在它里面,目前基本上 三个结构 您可以使用:

    • lib 的文件夹 飞奔 代码+文件颤振需要包括 插件 ,短: Dart代码 对于 颤振

    • iOS 文件夹 目标-C 或 敏捷的 代码,其中还包括常见的iOS附件

    • android 文件夹 Java语言 或 科特林 (或C++)代码和所有其他gradle文件等。

    这意味着 就是你 可以 使用 本机代码 如果你想,但你不需要这样做。

    您可以完全忽略 安卓 和 ios 开发过程中的文件夹` 。

    很可能您只是在本地代码中修改应用图标、名称、版本名、许可证密钥等方面。

    颤振 的 球门 就是在Dart中编写所有代码,并且只在Flatter SDK中编写,这意味着您现有的Android代码 能够 但它对iOS没有任何用处,因为所有跨平台工作都是在Dart中使用 Flutter SDK 。

    结论

    如果您真的想切换到颤振SDK,那么最好的选择是完全切换到颤振,即。 重写 中的所有功能 飞奔 。

    不存在将Android代码“转换”为颤振代码的“导入”可能性。如果它们是用同一种语言编写的,这甚至不起作用,因为Flutter体系结构完全不同,而且构建应用程序的方式与Android应用程序没有远程关联。

    如果您认为学习Dart和重写跨平台应用程序不值得,但您仍然需要iOS支持,我建议您使用iOS native编写,但我对这个问题的一般建议是用Dart重写整个应用程序。

        2
  •  3
  •   Rémi Rousselet    8 年前

    颤振使用完全不同的渲染架构。所有渲染都是使用Dart代码计算的,从不使用本机元素。

    因此,您不仅不能使用本机代码,也不能有“将本机导入到flutter”之类的东西。

    对于图书馆来说,这是一个复杂的话题。你 可以 使用它们。但只有在弗利特所说的内部 Platform channel 。这是一个api,用于以在操作系统中本机运行的代码编写系统调用。

    所以像Firebase这样的库是可以的。但是组件库或类似rxjava的东西已经过时了。您将需要一个类似的dart库。

        3
  •  0
  •   Randal Schwartz    8 年前

    从我所看到的情况来看,在大多数情况下,您可能必须将其移植到Dart。然而,由于你的75%可能包含的不仅仅是编码(如设计、交互、流程),最简单的部分将是在Dart中重新编码以完成。

        4
  •  0
  •   Aleon Q    8 年前

    我会说不,没有。原因可以用@CreativeCreatorMormayBenot很好地解释。 我想补充一点,这不仅仅是语言差异使其具有挑战性,而且整个android原生视图、视图层次结构与Flatter的视图层次结构都不同。 如果您熟悉Cocos框架,它有自己的视图层次结构,那么flutter与之类似,只是更好、更丰富,并且得到了Google的证明(我想,;)。 发布点仍然是Flitter中的常规android活动,但仅此而已。然后,控制流到颤振以测量和绘制UI小部件。 您可能仍然需要实现一些功能,这些功能需要系统服务和硬件访问以本机Java/Kotlin android风格/IOS本机风格编写。

    建议: 在这一点上,我不建议您使用黑客方式将dart转换为java/kotlin,并将Android UI转换为Flatter UI,即使您在网上看到这样的东西。原因是,flatter本身是谷歌的一项实验,还没有像Android那样成熟。你应该预料到一些细微差别会经常被改变和添加。 既然你已经完成了75%,我想说的是全部使用本机(Android和IOS)或全部使用Flutter。

    要准确回答您的问题: 我可以将此项目导入到Flatter吗? 现在不行。

    此外,Flatter是否支持我在该项目中使用的库? 有点 由于您没有提到您使用过的任何库,我将举几个例子来说明: -图像下载库(glide,picasso)可能会被Flatter的本地 Image 小部件 -如果您使用的是要移植到Flatter的任何核心java库,那么您可以遵循Flatter的文档中关于 developing packages and plugins 本质上是说在dart和“android”文件夹中的iMementation java包中声明契约/API。IOS和android的合同保持不变。 -如果您想使用系统级组件,就像我前面提到的那样,包和插件是最好的选择。 Here 是Dart团队开发的第一手插件列表。

        5
  •  0
  •   Rashiq    8 年前

    我可以将此项目导入到Flatter吗?怎样

    到目前为止,我已经研究过,对于来自任何其他框架的项目,在颤振中没有可用的导入选项。与其他建筑相比,颤振建筑是完全不同和全新的。我们可以在项目中包含现有的android代码,但它对iOS没有任何用处,因为所有跨平台的工作都是在Dart中使用Flatter SDK完成的。

    颤振会支持我在这个项目中使用的库吗?

    不,因为颤振提供了自己的用Dart编写的库。他们每天都在添加新的库,我们需要使用它们。

    因此,我们需要用dart语言编写完整的项目,并使用现有的颤振库构建一个新项目。