【问题标题】:I cannot add Android target platform for packages via IDE我无法通过 IDE 为包添加 Android 目标平台
【发布时间】:2017-02-09 01:29:58
【问题描述】:

只是一个关于 Delphi Berlin 10.1.2 的愚蠢问题

我想将 Android 平台添加为我的运行时包的目标平台之一......这似乎无法通过 IDE 完成。当列表中添加了 Win32 和 Win64 时,弹出菜单被禁用。

【问题讨论】:

  • 设计时包还是运行时包?或两者?因为如果要支持多平台,就需要把这些分开。只有运行时包应该有特定的平台,而设计时包应该分配 Win32 平台,因为 Delphi IDE 仅适用于 Windows 32 位。
  • 是的,它是纯运行时包
  • 嗯,在 Delphi 10 Seattle 中运行良好。我想它应该在柏林也可以正常工作。如果您创建一个全新的运行时包并尝试添加这些平台会发生什么?
  • 问题解决了 :) 浪费了 2 小时 xD
  • 有趣的结论...我认为这是一个功能。但它应该是一个可选功能。无需为您提供针对甚至未在您的 IDE 中配置的平台。但是我仍然可以想象很多情况下您可能想要定位它们,尽管您没有配置它们。我可能会针对所有可能的 Android 设备,但从不在我的 IDE 中配置任何 SDK/NDK。这不应该阻止我至少选择瞄准他们。

标签: android delphi


【解决方案1】:

调查结果:看起来像一个错误(或功能)。

当您在入门版中在安装 Android SDK之前创建项目时,.dproj 文件不包含行

<Platform value="Android">False</Platform>

结果:

当您安装 Android SDK 时,Delphi IDE 不会自动更新 .dproj 文件...

但等等,还有更多!

Delphi Starter Edition 自动删除所有平台条目,如

<Platform value="Android">True</Platform>
<Platform value="Win64">True</Platform>

不询问您何时保存项目...(Win32 ofc 除外)

所以注意您是否使用 Starter Edition 并且您想为一些也适用于 Win64 的 GitHub 项目做出贡献...您必须在提交之前手动更正 .dproj 文件。

解决方案:

手动编辑 .dproj 文件并添加缺少的平台条目。


除了 Starter SKU,当您创建项目时,IDE 在其他 SKU 上表现出相同的行为,而 IDE 尚未安装所有(特定)平台。


IDE 行为有点不一致。它应该

  • 在所有情况下自动更新 .dproj 文件

  • 根本不要碰它

附注我喜欢浪费时间与 IDE 设计缺陷作斗争...

P.P.S. 目标平台 Win32 似乎无法移除 :P

【讨论】:

  • 实际上,虽然这当然可以被认为是一个错误,但 IDE 是故意这样做的。这不是一个错误,而是一个功能。当然是愚蠢的。
  • 顺便说一句 - 似乎不可能从项目中删除 Win32 目标平台:P 即使它无法在 Windows 平台上编译...当我删除 Win32 时,关闭项目并打开它:P 并手动删除它会导致 无法加载项目 blahblahblah Platform "32-bit Windows" not supported
  • Win32平台有特殊处理。它是设计时功能所必需的。
  • 在设计时包的情况下我可以理解。但是为什么我不能用运行时的呢?
  • 为什么我不能用运行时的来做 因为如果你删除了 Win32 平台,你就不能在 IDE 中打开它并执行它。 IDE 是 Win32。为什么你仍然需要删除它?只是不要分发该构建版本。
【解决方案2】:

入门版

Delphi Starter Edition 特别不支持 Win32 开发以外的任何东西。这是 Starter 与其他 Delphi SKU 的区别之一:

您可以设法使 Starter Edition 完全“支持”除 Win32 之外的任何内容,这确实表明存在错误。

但错误在于简化版试图限制它自己的功能。

如果错误得到修复,那么它不会消除对变通办法的需求,而是确保任何此类变通办法都不再有效!

专业版

专业版同样不支持“开箱即用”的所有平台,因此如果您没有安装对某些平台的支持,那么 IDE 将再次采取(笨拙的)步骤来限制您使用 [显然] 许可功能。

再一次,如果 this 曾经“修复”过,那么它也将阻止您的变通方法起作用,绝对需要您安装您希望支持的平台才能创建/从事涉及您需要特定许可的平台的项目。

企业/架构师版

您的问题并不完全清楚您是否已经使用 SKU 的上述 Professional 测试了此行为,但由于该行为是基于没有“安装”特定平台的,所以我认为它没有,因为所有平台都支持这些更高版本中的默认设置。

除非安装程序特别提供了不安装它们的选项(我不记得临时),在这种情况下,您可以争辩说任何“错误”都在于选择的人> 安装他们坚持尝试使用的产品功能。

一般问题

如果您在不支持平台的产品中创建项目,那么您不会期望该项目支持该平台。如果您随后在支持该平台的产品中打开该项目,该产品是否应该向该项目添加对该平台的支持?如果平台对项目没有意义怎么办?如果您要将项目交还给尚未安装该平台的其他人工作怎么办?

如果 IDE 会检查项目并且如果它识别出缺少的目标平台(而不是禁用)然后 提供 为您添加对它们的支持,这可能会很好。

但它不应该自动添加它们,因为如果它这样做了,并且您要在支持 Android 的 IDE 中处理一个项目,然后将该项目交给一个没有 IDE 的人Android 支持(例如)那么这将阻止他们在项目上工作(如果平台限制得到强大实施)。

但是,从您的描述中,有问题的行为(删除未安装的平台)似乎只是执行许可条件的笨拙尝试。不是错误。

理想的解决方案

理想情况下,目标平台不会获得单独许可的“功能”,并且在 SKU 之间提供更合适的区分点,那么所有这些(与平台相关的)问题都会消失。

【讨论】:

  • 我只能访问具有不同 Delphi 版本的不同机器。我通过 Git 存储库在他们之间共享一些代码。 (大多数项目都是针对 Win32 和 Win64 的)而且我讨厌我想使用 Starter 版本进行一些修复,并且每次提交之前我都必须手动恢复所有丢失的平台实体......
  • 我理解你的痛苦,但 Embarcadero 不想让你的生活更轻松。他们喜欢你讨厌这个。他们打算让您最终会讨厌它,以至于您最终会购买(至少)Pro +“移动附加”许可证。在低价 SKU 中让生活越来越不舒服是 Embarcadero 长期以来的一种模式,所以不要指望这种情况会改变。这不是错误,而是一项功能(在他们的销售和营销部门看来)。
  • @Deltics 如果您没有安装许可证(编译器),仅向项目添加平台不足以编译任何内容。此外,目前的情况是,如果您使用未安装特定平台的 IDE 创建项目,则即使您使用具有它们的 IDE 打开项目,您也永远无法向该项目添加任何其他内容。为此手动编辑项目是巨大的 PITA。
  • 对。故意从项目中删除平台条目并不是为了限制在其他地方强加的许可功能。因此,这样做只能是一种故意行为,使使用更便宜的 SKU 与使用更高价格 SKU 的人合作项目变得困难。我并不是说它应该对用户/客户有意义。它设计是为了让生活变得不舒服和尴尬,以便在没有其他令人信服的理由的情况下强迫人们升级。这是 Embarcadero 的方式。习惯就好了。
  • “解决方法”当前“有效”到您仍然可以完全打开这些项目的范围内,以处理它们,需要您重新添加任何在您签入或推送您的更改以供其他人使用之前手动(在 IDE 之外)输入平台条目。 Embarcadero 不能阻止您根据记事本等的要求简单地编辑 DPROJ 标记(如果可以的话,我相信他们会这样做)。如果项目包含您的许可证不支持的平台,任何“修复”都更有可能阻止您首先打开项目。这样您就必须在处理这些 dproj 之前和之后“修复”它们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多