Перейти к содержанию
Fire Monkey от А до Я
  • 0

Проблема с Android Service


XXXXXX

Вопрос

Собрал сервис по туториалу



Но к сожалению не работает, может ктонибудь посдказать в чём проблема?
стандартно запускается программа, но после её закрытия в запущенных апликациях сервиса не видать.

По туториалу:
В ивенте сервиса AndroidServiceStartCommand
пишу : Result := TJService.JavaClass.START_STICKY;

При создании формы основной программы:
FService := TLocalServiceConnection.Create;
FService.StartService('RADService');
 
Сервис регистрирую в основной программе как показано в туториале.
Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Попробовал по этому видео сделать сервис.

Так у меня вообще не запускается, пишет:

[PAClient Error] Error: E2312 Unable to execute '"C:\Users\Public\Documents\Embarcadero\Studio\17.0\PlatformSDKs\android-sdk-windows\build-tools\22.0.1\Aapt.exe" package -f -M "C:\Ru\Test\Android\Services\RADservice\Android\Debug\RADService\AndroidManifest.xml" -F "C:\Ru\Test\Android\Services\RADservice\Android\Debug\RADService\bin\RADService-unsigned.apk" -I "C:\Users\Public\Documents\Embarcadero\Studio\17.0\PlatformSDKs\android-sdk-windows\platforms\android-22\android.jar" -S "C:\Ru\Test\Android\Services\RADservice\Android\Debug\RADService\res" -A "C:\Ru\Test\Android\Services\RADservice\Android\Debug\RADService\assets" "C:\Ru\Test\Android\Services\RADservice\Android\Debug\RADService\library" "C:\Ru\Test\Android\Services\RADservice\Android\Debug\RADService\classes"' (Error 1)

Alexander616, у вас никаких ошибок не выдавало?

Ссылка на комментарий
  • 0

Попробовал по этому видео сделать сервис.

Так у меня вообще не запускается, пишет:

[PAClient Error] Error: E2312 Unable to execute '"C:\Users\Public\Documents\Embarcadero\Studio\17.0\PlatformSDKs\android-sdk-windows\build-tools\22.0.1\Aapt.exe" package -f -M "C:\Ru\Test\Android\Services\RADservice\Android\Debug\RADService\AndroidManifest.xml" -F "C:\Ru\Test\Android\Services\RADservice\Android\Debug\RADService\bin\RADService-unsigned.apk" -I "C:\Users\Public\Documents\Embarcadero\Studio\17.0\PlatformSDKs\android-sdk-windows\platforms\android-22\android.jar" -S "C:\Ru\Test\Android\Services\RADservice\Android\Debug\RADService\res" -A "C:\Ru\Test\Android\Services\RADservice\Android\Debug\RADService\assets" "C:\Ru\Test\Android\Services\RADservice\Android\Debug\RADService\library" "C:\Ru\Test\Android\Services\RADservice\Android\Debug\RADService\classes"' (Error 1)

Alexander616, у вас никаких ошибок не выдавало?

Странно, нет у меня ничего подобного, всё устанавливается/ запускается, помимо самого сервиса

Ссылка на комментарий
  • 0

О, оказывается сам сервис был активным, из-за этого он и пытался запуститься на телефоне )

Теперь все отлично. Программа работает и сервис нормально перезапускает, если ее "вырубить".

 

Теперь осталось придумать как им общаться между собой (про intent-ы какие-то пишут) ))

 

Alexander616, может Build сервиса забыли сделать до установки программы на устройство?

Ссылка на комментарий
  • -2

А вот этот пример (скачивание картинки через сервис) отказывается нормально работать... в списке работающих приложений вообще не вижу приложения и скачивания не происходит.

Ссылка на комментарий
  • 0

ребята скажите как сделать так что бы после перезагрузки телефона сервис дальше работал

допустим запустил я приложение. оно запустило сревис.. я вышел из приложения и смотрю что сервис реальноработает как на видео, но процессо рабочих пишет :0

открываю другие приложения чужие - там всегда висит кроме сервиса хотя бы  1 процесс.

майл агент например: процессов 1, серовосв: 1. и так далее. т.е. везде процесс не закрыт.

 

я выбрал LocalService как на видео. где прочесть что такое IntentLocalService

Изменено пользователем fsdb
Ссылка на комментарий
  • 0

Посмотрел видео.

1. Те. получается, что D 10+ позволяют создавать службы для андроида без дополнительных java файлов?

2. Можно ли обходится без HOST-приложения? Если да, то как запустить сервис?

3. Присоединяюсь к вопросу fsdb: нужны ли какие-тор танцы с бубном, чтобы сервис автоматически запускался при старте ОС или он будет, как в винде, запускаться автоматически без лишних танцев?

4. Разрешено ли сервису использовать Toast?

Спасибо.

 

Видео описано в этой справке

http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Creating_Android_Services#Creating_an_Android_Service

Изменено пользователем x11
Ссылка на комментарий
  • 0

Кстати, можно написать просто

TLocalServiceConnection.StartService('ServiceName');

 

т.е. без объявления

Fservice := TLocalServiceConnection.Create;

 

Изменено пользователем x11
Ссылка на комментарий
  • 0
  • Модераторы
5 часов назад, x11 сказал:

1. Те. получается, что D 10+ позволяют создавать службы для андроида без дополнительных java файлов?

Смотря какой сервис, в Делфи просто автоматизировали процесс как смогли. На самом деле, в итоге, создаются java файлы, потом всё превращается в либу и прикрепляется к основному приложению.

5 часов назад, x11 сказал:

2. Можно ли обходится без HOST-приложения? Если да, то как запустить сервис?

Прям вообще без приложения - нет. (на сколько мне известно)

5 часов назад, x11 сказал:

3. Присоединяюсь к вопросу fsdb: нужны ли какие-тор танцы с бубном, чтобы сервис автоматически запускался при старте ОС или он будет, как в винде, запускаться автоматически без лишних танцев?

Нужны и не малые, если хотите охватить максимум устройств, но такие танцы не зависят от языка.

Начать изучать можно с поиска по форуму. Ещё напомню, что на форуме есть раздел "Статьи и заметки".

5 часов назад, x11 сказал:

4. Разрешено ли сервису использовать Toast?

В теории можно, но либа Ярослава для этого не подойдёт, т.к. в компоненте используются файлы студии, которые не работают в сервисах.

 

 

По поводу умирающего сервиса (после закрытия приложения). Да, есть такой косяк, появился с версии Berlin, в Seattle всё работало.

Ссылка на комментарий
  • 0
1 минуту назад, Andrey Efimov сказал:

На самом деле, в итоге, создаются java файлы, потом всё превращается в либу и прикрепляется к основному приложению.

ага, я уже немного исследовал примеры :)

 

3 минуты назад, Andrey Efimov сказал:

Нужны и не малые,

у меня даже стандартный пример из коробки не работает :(

http://fire-monkey.ru/topic/4711-не-запускается-служба/

 

Ссылка на комментарий
  • 0
17 минут назад, Andrey Efimov сказал:

теории можно, но либа Ярослава для этого не подойдёт, т.к. в компоненте используются файлы студии, которые не работают в сервисах.

Нет, у меня файл Androidapi.JNI.Toast.pas

Цитата

// Java bridge class imported by hand by Brian Long (http://blong.com)

 

Ссылка на комментарий
  • 0

Приветствую. Кто может подсказать в чем дело. 

Программа содержит сервис. Задача чтобы сервис через определённый промежуток слал запросы на сервер и обрабатывал ответ (внутри сервиса создают поток). При перезагрузке телефона нужно чтобы сервис запускался автоматом. При отладке все работает как часы. Если установить программу с apk, при отладке все ок. Все шлёт, перезапускается. Но стоит выложить программу в Google play и установить её оттуда, сервис перестаёт запускаться при запуске программы и запускаться автоматом при перезагрузке. При перезагрузке запускается программа, причём фоном. На экране её нет, но на сервере вижу, что запросы шлёт программа, а не сервис. Причём та же программа установленная с Google play на android 8 работает правильно. А при установке на android 9 (xiaomi) начинаются проблемы. Все разрешения в манифесте прописаны и в настройках телефона тоже. 

Проблема именно после установки с Google play начинается и на android 9. 

Всю голову сломал, не пойму куда копать. 

Проверял программами информерами на телефоне содержит ли моя программа сервис, его название и т д. Все на месте. 

Изменено пользователем SergB
Ссылка на комментарий
  • 0

Отвечу сам ?. Выяснил. Если загружать отдельно пакет для 64 версии, то все работает как надо. А вот если формируем aab, то начинаются такие проблемы. Причем все работает с aab нормально, если приложение не содержит сервиса. По всей видимости или делфа не верно формирует пакет aab для сервиса, либо на гуле при оптимизации происходят какие-то метаморфозы. Теперь другая проблема, как сформировать пакет aab так чтобы все работало?

Ссылка на комментарий
  • 0

Ну и по традиции отвечаю опять я ?. Решил я эту проблему.

Я так и не разобрался, где происходит неполадка, либо при формировании aab делфой, либо при формировании установочных файлов при установке с гугла. НО, я поступил следующим образом.

1. Компилируем в делфе отдельно 32 и 64 apk

2. Открываем архиватором apk 64 и копируем из него папку arm64-v8a со всем содержимым куда-нибудь на диск

3. Копируем эту папку arm64-v8a в apk 32.

Итого получаем apk 32 содержащий либы для 32 и 64. (что и нужно гуглу). Но после этого наш файл не подписан. Можно подписать и с компа, но это тот еще геморрой. Я подписывал прямо на телефоне с помощью программы ZipSinger. Может есть и другие, но я делал с ней и все сработало.

После подписания загружаем наш гибридный apk в гугл и все работает без проблем ?.

Ну еще раз скажу, что эта проблема с формированием aab у меня возникла лишь когда я добавил в свое приложение сервис. Если нет сервиса то проблем с aab я не наблюдал.

Ссылка на комментарий
  • 0
13 часов назад, SergB сказал:

Ну и по традиции отвечаю опять я ?. Решил я эту проблему.

Я так и не разобрался, где происходит неполадка, либо при формировании aab делфой, либо при формировании установочных файлов при установке с гугла. НО, я поступил следующим образом.

1. Компилируем в делфе отдельно 32 и 64 apk

2. Открываем архиватором apk 64 и копируем из него папку arm64-v8a со всем содержимым куда-нибудь на диск

3. Копируем эту папку arm64-v8a в apk 32.

Итого получаем apk 32 содержащий либы для 32 и 64. (что и нужно гуглу). Но после этого наш файл не подписан. Можно подписать и с компа, но это тот еще геморрой. Я подписывал прямо на телефоне с помощью программы ZipSinger. Может есть и другие, но я делал с ней и все сработало.

После подписания загружаем наш гибридный apk в гугл и все работает без проблем ?.

Ну еще раз скажу, что эта проблема с формированием aab у меня возникла лишь когда я добавил в свое приложение сервис. Если нет сервиса то проблем с aab я не наблюдал.

Тоже заметил, что с aab есть проблемы. Иногда почему-то устанавливается 64 битная версия на 32 битный аппарат, соотвественно дальше сплеша на таких устройствах не идет. Если делать Apk с двумя версиями, то такой проблемы не наблюдается.

Но вышеописанное можно сделать гораздо проще. Надо в деплое 64 битной версии добавить файл  so из 32 битной версии и помещаем его в папку library\lib\armeabi-v7a\ .

Для создания APK из двух версии. сначала компилируем 32 битную версию, потом 64 битную, но в Apk 64 битной версии уже попадет и 32 битная. И заморачиваться с отдельным подписанием не надо будет. Все сделает среда.

Ссылка на комментарий
  • 0

Здравствуйте! Вот здесьhttps://fire-monkey.ru/topic/4711-не-запускается-служба/ Andrey Efimjv выставил файл Notification.zip, но внутри архива APK - файл.

А может кто-нибудь выложить исходники? Просто у меня нет такой папки, в которой есть этот пример.

Спасибо!

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...