Android 6 个棉花糖 Delphi XE8

Android 6 Marshmallow with Delphi XE8

是否可以使用 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.

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

更新:

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

更新: 我的应用程序似乎崩溃了,因为我在第 2 个表单

的 FormClose 事件中调用了 TCloseAction.caFree

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

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

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

因此,对于最终解决方案,我将备忘录放在 TTabItem 的顶部,这样它就永远不会隐藏在键盘后面,并从 designer/runtime 中删除 TVertscrollbox。现在我的 ListBoxItems 得到了正确的绘制,我的应用程序不再在旧 android 版本上崩溃。