Adz*_*Adz 8 c++ android cross-platform azure ios
我为iOS和Android开发了一个应用程序,我正在寻找在这两个平台之间共享代码的最佳方式.
我想要做的是在本机中创建所有View(UI部分),但共享逻辑代码(控制器+模型).
在我发现的所有内容中,有3件事似乎相当不错:
1)C++ - >构建库文件使用c ++对于逻辑,我将能够在2个平台中使用.dll文件
2)Azure移动应用程序服务.是否有可能成为网络服务中的所有逻辑?问题是,如果我没有访问互联网,我的应用程序将无法使用,对吧?
3)我听说过很多关于Facebook使用的React本机,但它似乎用于创建UI,但我更喜欢用原生的方式创建它.我可以只对逻辑做出反应吗?
mic*_*rus 14
看起来你有三个选择:
你不仅可以拥有一个已编译的.dll,并期望它适用于iOS和Android.它们都必须在不同的体系结构中编译,并且必须是iOS上的静态库.
Dropbox就是这样做的,他们已经提供了很多笔记和示例代码,以及你可以使用的代码,所以你可以看看.
优点
•设置完成后非常简单
•没有额外的依赖关系,错误等(例如Xamarin/React Native)
缺点
•设置和使用它需要大量的额外工作:您需要设置其他编译步骤并为两个平台编写包装器.
•在尝试为两种不同的体系结构编译相同的代码时,您肯定会遇到的其他一些挑战
在这种情况下,此选项似乎极端.您被迫使用C#并引入另一层依赖项和错误.你说你不想为UI使用其他语言,所以我不推荐它.
现在这是一个可行的选择.您可以在JS中编写脚本,并在Android和iOS中使用本机代码.
不幸的是,它使用React Native for UI,但您可以从本机代码轻松调用React Native函数.
使用它有很多不足之处,包括调用是异步的,因为它们是在另一个线程上执行的,所以你必须为返回某些东西的函数实现某种回调系统.
优点
•似乎易于设置和编写
缺点
•您必须为每个返回某些内容的函数实现本机回调
•使用它有很多文档描述的缺陷:
•由于事件可以从任何地方发送,因此可以在项目中引入意大利面风格的依赖项.
•事件共享命名空间,这意味着您可能会遇到一些名称冲突.不会静态检测到冲突,这使得它们难以调试.
•如果您使用相同React Native组件的多个实例,并且希望将它们与事件的视角区分开来,则可能需要引入某种标识符并将它们与事件一起传递(您可以使用本机视图的reactTag)作为标识符).
我想我会选择C++,主要是因为一家大公司(Dropbox)尝试过并成功实际使用它.你可以试试React Native作为一个实验,它会成为一个很好的研究案例!