【问题标题】:How the code conversion happen in cross platform tools like Unity 3d and titanium代码转换如何在 Unity 3d 和 Titan 等跨平台工具中发生
【发布时间】:2014-04-16 13:52:35
【问题描述】:

我想问一下,从一种编程语言到另一种编程语言的代码转换是如何发生的。就像在 unity 3d 中一样,我们用 c# 或 js 编写代码,然后它可以将其导出到 xcode 项目或 android 项目等: 1)我怎样才能创建这样的Xcode项目?

这种转换是如何发生的: 2)他们是否为此使用了一些桥接器,如何制作这个桥接器,这个桥接器开发是否像编译器开发?

我最初的理解是bridge应该研究跨平台语言(如js),然后将其转换为本地语言。是否有任何存储表存储此转换信息?

【问题讨论】:

  • 不要忘记标记最佳答案并支持解决您问题的问题。如果没有问题,请添加 cmets 或编辑您的问题以提供更多详细信息。面临同样问题的人会想知道是什么解决了您的问题
  • 抱歉,我出城休假了。

标签: android ios objective-c unity3d appcelerator


【解决方案1】:

在每个平台上,您将创建一个库、框架等,将 javascript(或其他语言)解析为本地语言。

例如

如果 javascript 对象 == TI.UI.TextField

然后在 iOS 上创建 UITextField

等等,但比这复杂得多。我以前使用过 Titanium,并且看到生成的项目包含某种 Titanium 库。

然后,您将创建某种模板项目,该项目将接收文件并对其进行一些处理并构建布局。

然后您使用命令行工具调用将创建应用程序的构建过程

编辑

你的评论:

  1. 正如我上面提到的,要创建这样的 xcode 项目需要使用命令行工具(例如 Xcode command line docs)。您将在构建文件夹中创建一个项目(就像您查看过的所有工具一样),然后您将使用命令行复制您制作的本机库,然后复制,比如说 js,资源将被编译/解释。

  2. 我已经介绍过这一点,对于每个平台,您都需要开发一个本地库,使您能够将 JS 对象转换为 Objective-c 对象(Android 类似)。每个工具都可以以不同的方式做到这一点,phonegap 创建一个带有 webview 的应用程序,并将 html、css 和 javascript 放入其中,同时提供使用一些本机 API 的能力。在 JS 几乎直接映射到 Objective-c 的情况下,Titanium 的表现完全不同。他们声称扫描 JS 代码以查找正在使用的 api/框架并将其包含到项目中。这是我在 stackoverflow 上找到的描述:How Does Appcelerator Titanium Mobile Work?

  3. 我不确定您在这里实际问的是什么,但在某些时候,还有处理来解释这个 JS 对象映射的 Objective-c 对象。所以在某个时候,每个对象类型都会有一个映射。这是相当常识的,如果你在钛中写var textfield = TI.UI.textfield(...);,它需要知道将其映射到[[UITextField alloc] init];。这个映射是如何存储的?这可以通过数百种不同的方式完成,我不知道钛究竟是如何做到的。

我没有构建 Titanium,所以我不能准确地告诉你每行的作用。您的问题是“它是如何做到的”,从高层次上讲,这就是它的作用,每种语言都需要一个本机库来解释 JS 文件。如果您尝试创建自己的工具来执行此操作,我不认为从复制已经存在的工具开始。它们的功能完全不同,并利用了所有底层系统如何工作以及如何最好地利用这一点的知识。

如果这对您来说还不够,您需要进行研究或联系其中一家公司的开发人员并直接询问他们,但我认为他们不会告诉您如何复制他们的产品。 Stackoverflow 不适用于推荐工具、为您进行研究或讨论最佳实践,因为所有这些都会导致个人意见和首选的开发模式/技术,并且很难给出完整的答案。

【讨论】:

  • 感谢您的回复。这是一个很好的简短描述。你能再描述一下吗?我需要更详细的答案。
  • @Mohit 好吧,我已经给了你一个高层次的观点,除非你有一个具体的问题想让我回答,我不会编写一个例子并在这里发布.做这样的事情是一项艰巨的任务,即使是在简单的层面上
  • 我提出了 2 个问题和 1 个问题作为建议。请回答所有这些问题,我会将您的答案作为已接受的答案进行检查。
猜你喜欢
  • 1970-01-01
  • 2017-06-17
  • 2021-01-01
  • 1970-01-01
  • 2021-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多