Delphi android 应用程序在 Lenovo A5000 移动版中出现问题
Delphi android application is raising issue in Lennova A5000 mobile
我正在使用 Delphi 10 Seattle trail 版本开发移动应用程序。我尝试创建仅包含 TEditBox 的新 android 移动应用程序。然后通过将选项设置为 "Release" 来编译。然后,生成.apk 文件,然后将该文件提供给用户。当用户尝试单击编辑框时,应用程序会引发错误消息“Appname 没有响应”。
用户正在使用 Lennova A5000 并且 Os 是 Android 5.0.2。
我的 Moto g2 (5.0.2) 和 Micromax Yureka 中的应用程序 运行 相同。
请提供我是否有任何解决方案。
此外,我已经在 google 应用商店中更新了该应用。然后,它显示为 此设备不兼容的应用程序 (Lennova A5000)。
而且我还更新了所有 android SDK 包。在那之后,它也提出了同样的问题。
我认为这可能是 Embarcadreo Delphi 或任何丢失的包的问题? 不知道该怎么办。
提前致谢。
最后我从 Embarcadreo 网站上得到了解决方案。请按照上述步骤操作。
1.Copy FMX.Platform.Android.pas 从 source/fmx 文件夹到项目文件夹
并将复制的文件添加到项目中。
- 然后,按照以下步骤进行更改。
过程TPlatformAndroid.RunOnUIThread(过程:TThreadProcedure);
procedure TPlatformAndroid.RunOnUIThread(Proc: TThreadProcedure);
begin
//MainActivity.runOnUiThread(TSimpleProcedureRunner.Create(Proc));
CallInUIThread(
procedure()
begin
Proc;
end);
end;
过程TPlatformAndroid.SynchronizeOnUIThread(过程:TThreadProcedure);
procedure TPlatformAndroid.SynchronizeOnUIThread(Proc: TThreadProcedure);
var
Runner: TSimpleProcedureRunner;
begin
// CallInUIThread(
// procedure()
// begin
// Runner := TSimpleProcedureRunner.Create(Proc);
// MainActivity.runOnUiThread(Runner);
// Runner.Event.WaitFor;
// end);
CallInUIThreadAndWaitFinishing(
procedure()
begin
Proc;
end);
end;
程序TPlatformAndroid.SetClipboard(值:TValue);
procedure TPlatformAndroid.SetClipboard(Value: TValue);
var
Setter: TClipboardSetter;
begin
Setter := TClipboardSetter.Create(Value.ToString);
CallInUIThread(
procedure()
begin
SharedActivity.runOnUiThread(Setter);
end);
Setter.Done.WaitFor(INFINITE);
end;
函数TPlatformAndroid.GetClipboard: TValue;
function TPlatformAndroid.GetClipboard: TValue;
var
Getter: TClipboardGetter;
begin
Getter := TClipboardGetter.Create;
CallInUIThread(
procedure()
begin
SharedActivity.runOnUiThread(Getter);
end);
Getter.Done.WaitFor(INFINITE);
Result := Getter.Value;
end;
- 然后,重建项目。这样做之后一切正常。
我正在使用 Delphi 10 Seattle trail 版本开发移动应用程序。我尝试创建仅包含 TEditBox 的新 android 移动应用程序。然后通过将选项设置为 "Release" 来编译。然后,生成.apk 文件,然后将该文件提供给用户。当用户尝试单击编辑框时,应用程序会引发错误消息“Appname 没有响应”。
用户正在使用 Lennova A5000 并且 Os 是 Android 5.0.2。
我的 Moto g2 (5.0.2) 和 Micromax Yureka 中的应用程序 运行 相同。 请提供我是否有任何解决方案。
此外,我已经在 google 应用商店中更新了该应用。然后,它显示为 此设备不兼容的应用程序 (Lennova A5000)。
而且我还更新了所有 android SDK 包。在那之后,它也提出了同样的问题。
我认为这可能是 Embarcadreo Delphi 或任何丢失的包的问题? 不知道该怎么办。
提前致谢。
最后我从 Embarcadreo 网站上得到了解决方案。请按照上述步骤操作。
1.Copy FMX.Platform.Android.pas 从 source/fmx 文件夹到项目文件夹 并将复制的文件添加到项目中。
- 然后,按照以下步骤进行更改。
过程TPlatformAndroid.RunOnUIThread(过程:TThreadProcedure);
procedure TPlatformAndroid.RunOnUIThread(Proc: TThreadProcedure);
begin
//MainActivity.runOnUiThread(TSimpleProcedureRunner.Create(Proc));
CallInUIThread(
procedure()
begin
Proc;
end);
end;
过程TPlatformAndroid.SynchronizeOnUIThread(过程:TThreadProcedure);
procedure TPlatformAndroid.SynchronizeOnUIThread(Proc: TThreadProcedure);
var
Runner: TSimpleProcedureRunner;
begin
// CallInUIThread(
// procedure()
// begin
// Runner := TSimpleProcedureRunner.Create(Proc);
// MainActivity.runOnUiThread(Runner);
// Runner.Event.WaitFor;
// end);
CallInUIThreadAndWaitFinishing(
procedure()
begin
Proc;
end);
end;
程序TPlatformAndroid.SetClipboard(值:TValue);
procedure TPlatformAndroid.SetClipboard(Value: TValue);
var
Setter: TClipboardSetter;
begin
Setter := TClipboardSetter.Create(Value.ToString);
CallInUIThread(
procedure()
begin
SharedActivity.runOnUiThread(Setter);
end);
Setter.Done.WaitFor(INFINITE);
end;
函数TPlatformAndroid.GetClipboard: TValue;
function TPlatformAndroid.GetClipboard: TValue;
var
Getter: TClipboardGetter;
begin
Getter := TClipboardGetter.Create;
CallInUIThread(
procedure()
begin
SharedActivity.runOnUiThread(Getter);
end);
Getter.Done.WaitFor(INFINITE);
Result := Getter.Value;
end;
- 然后,重建项目。这样做之后一切正常。