【问题标题】:Android 6 Marshmallow with Delphi XE8Android 6 Marshmallow 与 Delphi XE8
【发布时间】:2023-03-13 01:07:01
【问题描述】:

是否可以使用 Delphi XE8 而不是 Delphi 10 创建适用于 Android 6 的应用程序?

现在应用程序似乎在 Android 6 上崩溃,但 Delphi 10 应用程序似乎在旧 Android 版本上崩溃。

我从 19(Android 4.4) 到 23(6.0) 安装了多个 Android SDK 我还有最新的 android NDK(r10e) 和最新的 Java JDK。

崩溃似乎非常随机。还不能说它为什么会崩溃。我会努力了解更多!

更新:

这似乎是特定于设备的问题。如果我在具有 android 4.2/6.0 的模拟器上运行 Delphi 10 应用程序,则该应用程序不会崩溃。同样在我的带有 android 4.2 的三星 Galaxy 选项卡上,它也不会崩溃。只有我的 android 5.1 的索尼 xperia 崩溃了。

更新: 我的应用程序似乎崩溃了,因为我在第二个表单的 FormClose 事件中调用了 TCloseAction.caFree

【问题讨论】:

  • 可能吗?也许。使用 Delphi 10 Seattle 编写的应用程序已被证明可以在 Marshmallow 上部署和运行,但不确定 XE8 应用程序。你看到什么样的崩溃? Delphi 的文档尚未将 Marshmallow 列为官方支持的 Android 版本,即使在西雅图也是如此。但是,西雅图应该支持至少可以追溯到 ICS 的 Android 版本,因此应将西雅图的崩溃报告给QualityPortal。也许您没有安装正确的 Android SDK?
  • @RemyLebeau 我已经更新了我的问题。崩溃似乎很随机,还不能说它什么时候崩溃。

标签: android delphi android-6.0-marshmallow delphi-xe8 delphi-10-seattle


【解决方案1】:

我使用我的 Delphi 10 版本的项目发现了旧 android 版本的问题所在。

通过注释掉代码,我发现 TCloseAction.caFree 在 formclose 事件中使应用程序崩溃。我无法删除它,否则表单内存不会被释放。我尝试了多种方法,但只有这样才能完全释放 Firemonkey 多设备项目中表单的所有内存。

发现这一点后,我发现当我将 TVertScrollBox 添加到 TTabItem 时它会崩溃。在我的表单上,我有多个选项卡。在其中一个上,我有一个列表框,我用项目填充运行时,下面是一个备忘录。为了正确使用此备忘录,我添加了一个 TVertScrollBox,因此当显示键盘时,键盘不会隐藏备忘录。当我在设计器中添加 VertScrollBox 时,我的列表框没有正确绘制项目,所以这就是我在运行时添加它的原因。但这会导致旧 android 版本崩溃。显然,出于某种原因,它不喜欢在 onClose 事件中被释放。

因此,对于最终解决方案,我将备忘录放在 TTabItem 的顶部,这样它就不会隐藏在键盘后面并从设计器/运行时删除 TVertscrollbox。现在我的 ListBoxItems 可以正确绘制,并且我的应用程序不会再在旧的 android 版本上崩溃了。

【讨论】:

    猜你喜欢
    • 2015-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-11
    • 1970-01-01
    • 2016-01-02
    • 1970-01-01
    相关资源
    最近更新 更多