Я создал простой Android-сервис на 10.2.3 и прикрепил его к своему Android-приложению так же, как в документах.Однако там, где нет libProxyAndroidService.so в {$ BDS} / lib / android / release, я скопировал его из каталога отладки.Следующим занятием, сделанным Embarcadero для меня, было зависание целого приложения при вызове
TLocalServiceConnection.StartService('somename');
. Я установил 10.3.1 с надеждой, что эта ошибка устранена в этом выпуске, но она сделала то же самое.Запустив приложение в режиме отладки, я поместил несколько точек останова в 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 поток пользовательского интерфейса зависает, служба не выполняется, но в фоновом режиме Android-приложение все еще выполняет код (новые потоки в журнале сообщений)
Редактировать: япроверил, что находится под P ^ Это часть инициализации модуля FMX. Платформа