Delphi 10.3.1-Android服务挂起在System.InitUnits上

Delphi 10.3.1-Android服务挂起在System.InitUnits上,android,delphi,service,freeze,Android,Delphi,Service,Freeze,我已经在10.2.3上创建了简单的Android服务,并将其固定在我的Android应用程序上,就像它在文档中一样。但是,在{$BDS}/lib/android/release中没有libProxyAndroidService.so,我从debug dir复制了它。Embarcadero给我的下一根刺是在打电话时挂起整个应用程序 TLocalServiceConnection.StartService('somename'); 我安装了10.3.1,希望在这个版本中消除这个bug,但它也做到了

我已经在10.2.3上创建了简单的Android服务,并将其固定在我的Android应用程序上,就像它在文档中一样。但是,在{$BDS}/lib/android/release中没有libProxyAndroidService.so,我从debug dir复制了它。Embarcadero给我的下一根刺是在打电话时挂起整个应用程序

TLocalServiceConnection.StartService('somename');
我安装了10.3.1,希望在这个版本中消除这个bug,但它也做到了。 在调试模式下运行应用程序时,我在System.Android.ServiceApplication中设置了一些断点,当通过代码反复执行时,它在System.InitUnits中崩溃,第23357行:

 try
    while I < Count do
    begin
      P := Table^[I].Init;
      Inc(I);
      InitContext.InitCount := I;
      if Assigned(P) and Assigned(Pointer(P^)) then
      begin
{$IF defined(MSWINDOWS)}
        TProc(P)();
{$ELSEIF (defined(POSIX) and defined(CPUX86)) and defined(ASSEMBLER)}
        CallProc(P, InitContext.Module^.GOT);
{$ELSE}
        TProc(P)(); << 23357 crashing 
{$ENDIF}
      end;
试试看
当我做的时候
开始
P:=表^[I].Init;
公司(一);
InitContext.InitCount:=I;
如果赋值(P)和赋值(指针(P^)),则
开始
{$IF-defined(MSWINDOWS)}
TProc(P)();
{$ELSEIF(已定义(POSIX)和已定义(CPUX86))和已定义(汇编程序)}
CallProc(P,InitContext.Module^.GOT);
{$ELSE}
TProc(P)()
这是一只老虫子,Embarcadero从未修复过
只需移除所有使用FMX的东西。类型单位,从evey使用的单位中移除此单位。
然后将ClassGroup设置为TPersistent
浪费的时间:|

procedure TPlatformAndroid.BindAppGlueEvents;
var
  AndroidAppGlue: TAndroidApplicationGlue;
begin
  AndroidAppGlue := PANativeActivity(System.DelphiActivity)^.instance; // <------- Error occurs here
  AndroidAppGlue.OnApplicationCommandEvent := HandleApplicationCommandEvent;
  AndroidAppGlue.OnContentRectEvent := HandleContentRectChanged;
  AndroidAppGlue.OnInputEvent := HandleAndroidInputEvent;
end;
过程TPlatformAndroid.BindAppGlueEvents;
变量
AndroidAppGlue:TAndroidApplicationGlue;
开始
AndroidAppGlue:=PANativeActivity(System.DelphiActivity)^.instance//