【问题标题】:Appcelerator titanium build takes about 2 minutesAppcelerator 钛合金构建大约需要 2 分钟
【发布时间】:2017-08-15 14:34:09
【问题描述】:

嗨钛团队/专家,

我正在使用 Titanium,并且我正在寻找一种方法来加快我的应用程序构建速度,这样每次都不需要很长时间来测试它。即使我在不​​添加任何内容的情况下运行它两次,在我的设备上构建大约需要 2 分钟,而在我的设备上安装则需要 15 秒。

我认为关键在于“强制重建:JavaScript 文件需要重新加密”。有没有办法避免这种重建?

正在mac机下开发

【问题讨论】:

  • 这里回答的大多数人不是 Appcelerator 的员工,而且只是作为志愿服务/个人品牌的一种形式。对于这种消息,Titanium Jira 可能是一个更好的地方。 jira.appcelerator.org/secure/Dashboard.jspa
  • 我无法使用我的 appcelerator 邮件和密码登录 jira 系统
  • 您必须创建一个帐户。我只是说这里没有人能得到你的钱,所以如果你想得到答案,如果你稍微改变一下你的问题可能会更好。
  • 您好 Mauro,您能帮我解决重建问题吗?谢谢
  • 如果您包括如何构建您的应用程序将会很有帮助。工作室?命令行界面?直接到设备?模拟器?

标签: android titanium appcelerator appcelerator-titanium


【解决方案1】:

根据您的 Mac 规格,重建应用程序确实需要 2 分钟。一种更快的开发方法是使用 LiveView 或 TiShadow(如果您使用的是开源工具)。这两种方法都不需要重新编译,只会重新编译需要重新编译的文件。

请注意,在重新启动/重建时,这两种方法都不会完全清理应用程序,诸如事件侦听器、集合和模型之类的东西可能会导致问题。因此,时不时需要实际重启,有时会出现仅在实时视图开发期间出现的错误。但大多数情况下,尤其是在 UI 改进方面,这些方法大大提高了开发速度。

【讨论】:

  • 主要问题是每次都完全重建,有没有办法防止它? ...”我认为关键在于“强制重建:JavaScript 文件需要重新加密””
  • 你看过我的回答了吗?我在那里解释它实际上可能需要很长时间,我解释了如何解决它
  • @RenePot 是的,这可能需要很长时间,但 Boaz Lautman 正在询问如何在没有进行任何更改的情况下防止重建。
  • @RenePot 虽然这会阻止重建,但它并不能解释为什么 Boaz 在没有进行任何更改时会收到 Forcing rebuild 消息。当然,如果您在未进行任何更改的情况下按构建,钛应该了解使用先前制作的现有构建而不是强制重建。
【解决方案2】:

有几种方法可以加快构建速度。其中一些在这里描述:https://wiki.appcelerator.org/pages/viewpage.action?pageId=29002843

不过我也讨论了一些其他的方法。

TiShadow

考虑使用TiShadow。它可以使用任何操作系统在多个真实设备上同时进行实时部署和测试以进行开发。我已经用了一段时间了,真是太棒了!不明白没有它的人如何使用 Titanium

使用缓存

V8 和 Titanium Mobile 1.8+ 所需的 Android NDK r7 可以使用 ccache,这是一种重用缓存 C/C++ 编译的工具。使用它,我们在构建时间上得到了巨大的改进。

  1. 如果您尚未安装 HomeBrew,请安装它
  2. 使用以下命令安装 ccache:brew install ccache
  3. 设置环境变量 NDK_CCACHE 指向它。与 HomeBrew 一起安装,命令为:export NDK_CCACHE=/usr/local/bin/ccache

并行编译

NDK还可以在编译的同时进行并行化,这样可以加快进程。

  1. 确定您的机器有多少内核。您可以在 Mac OSX 上使用此命令:system_profiler | grep -i "Number Of Cores"
  2. 将上面的数字乘以 2。所以如果上面的命令返回 Number of Cores: 2,那么你的值应该是 4。
  3. 将环境变量 NUM_CPUS 设置为上述值。在这种情况下:export NUM_CPUS=4

不要在每次编译时都构建文档

跳过构建 JSCA 文件(Titanium Studio 的代码辅助功能使用的文件)。如果您只是为自己进行构建以进行测试,则不需要它们。要跳过,请像这样运行 scons:

scons build_jsca=0

实时取景

实时视图减少了重新编译的需要,如下所述:https://wiki.appcelerator.org/display/guides2/LiveView

加速模拟器

虽然这并不能真正加快您的构建时间,但加快您的模拟器可以大大加快运行时间。这里描述了一些方法:https://gist.github.com/adam-lynch/7247983

GenyMotion 也是我听说过的更快的模拟器。自己没试过。

【讨论】:

  • 好答案。虽然 Android Studio 的 Android Emulator 比 Genymotion 快。我会推荐 ;)
  • @RenePot 我一直被告知 Genymotion 要快得多,但我自己还没有真正使用过它。虽然被推荐了很多。
猜你喜欢
  • 2021-06-20
  • 1970-01-01
  • 2015-12-30
  • 1970-01-01
  • 2014-01-06
  • 1970-01-01
  • 2015-06-04
  • 1970-01-01
  • 2017-08-04
相关资源
最近更新 更多