我正在使用Delphi 10 Seattle trail版本来开发移动应用程序.我试图创建新的Android移动应用程序,其中只包含TEditBox.然后通过将选项设置为“Release”进行编译.然后,生成.apk文件,然后将该文件提供给用户.当用户尝试单击编辑框时,应用程序会引发“Appname没有响应”的错误消息.
用户正在使用Lennova A5000,而Os则是Android 5.0.2.
同样的应用程序在我的Moto g2(5.0.2)和Micromax Yureka中运行.
请提供给我有什么解决方案.
此外,我已在谷歌应用商店更新了应用程序.然后,它显示为此设备的不兼容应用程序(Lennova A5000).
而且我还更新了所有的android SDK包.在此之后,它也提出了同样的问题.
我认为这可能是Embarcadreo Delphi或任何遗失包裹的问题?不知道该怎么办.
提前致谢.
解决方法
Atlast我从Embarcadreo网站获得了解决方案.请按照上述步骤操作.
1.将FMX.Platform.Android.pas复制到源/ fmx文件夹中的项目文件夹
并将复制的文件添加到项目中.
>然后,执行以下过程中的更改.
程序TPlatformAndroid.RunOnUIThread(Proc:TThreadProcedure);
procedure TPlatformAndroid.RunOnUIThread(Proc: TThreadProcedure); begin //MainActivity.runOnUiThread(TSimpleProcedureRunner.Create(Proc)); CallInUIThread( procedure() begin Proc; end); end;
程序TPlatformAndroid.SynchronizeOnUIThread(Proc: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;
>然后,重建项目.这样做之后,每件事都很好.