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

Andrey Efimov

Модераторы
  • Постов

    833
  • Зарегистрирован

  • Победитель дней

    116

Andrey Efimov стал победителем дня 5 июля

Andrey Efimov имел наиболее популярный контент!

3 Подписчика

Информация о Andrey Efimov

Информация

  • Пол
    Мужчина

Посетители профиля

9 999 просмотров профиля
  1. Оба apk файла собраны для 64-бит. Вам нужно собрать 32 битную версию: Честно говоря, я не знаю как вам ещё объяснить это... (раз проблемы возникают даже на таком этапе, то я обязан сообщить, что на форуме существует раздел: Ищу подрядчика) Перед тем как вы соберётесь выложить сюда собранный 32-битный apk, проверьте его, открыв например в винраре. Зайдите в папку "lib" и проверьте каждую папку. Выше я уже написал, что будет внутри каждой папки для 32-битного apk и для 64-битного apk (https://fire-monkey.ru/topic/7447-android-10-и-музплеер/?do=findComment&comment=43249). Т.о. в 32-битном apk должна получиться примерно такая структура (на примере Project1): armeabi - заглушка libProject1.so. armeabi-v7a - ваш проект libProject1.so, сервис, библиотека bass и т.д. mips - заглушка libProject1.so. p.s. По поводу логов, то они сообщают о том, что не найдена библиотека PublicRadio (что собственно подтверждается и текстом ошибки и вскрытием apk файла, в нем библиотека есть только в папке для 64-бит, т.е. apk файл собран не для 32-бит).
  2. Вот что сейчас я вижу на Delphi 10.4.2 для чистого проекта Project1 и сервиса: Релиз для 32 бит (Application store/Development): armeabi - заглушка libProject1.so. armeabi-v7a - проект libProject1.so, сервис и т.д. mips - заглушка libProject1.so. Релиз для 64 бит (Development, для Application store создаётся aab файл(который может включать в себя 32 битную версию)) arm64-v8a - проект libProject1.so, сервис и т.д. Библиотеку bass я бы положил только в armeabi-v7a (для 32 бит) и arm64-v8a (для 64 бит). Эти галочки управляются из блока Project Manager, в зависимости от выбранной битности и конфигурации(Debug/Release и Application store/Development). Поэтому, если вы снимали их самостоятельно (через Deployment Manager), то рекомендую поставить их обратно, т.е. вернуть в дефолтное состояние. Повторюсь, сейчас нужно собрать 32 битную версию и выложить сюда для теста (возможно, PowerOwl или Олег смогут проверить). p.s. Вопрос, какую версию студии вы используете?
  3. но при этом подсовываете туда библиотеку bass... В этих папках (кроме arm64-v8a (для 64 бит) и armeabi-v7a (для 32 бит)) должны лежать заглушки, которые в случае несовместимости с девайсом буду выдавать сообщение типа такого "Application does not support this device". Собственно, PowerOwl, уже сделал предположение.
  4. По какой причине вы сняли галочки с записей связанных с libnative-activity.so?
  5. Скриншот Deployment Manager'а в "студию" (для 32 и 64 битной версии). Отсортируйте по столбцу Local Name.
  6. У меня на устройстве с Андроид 11 и эмуляторе с Андроид 7.1.2 приложение не падает. По теме, делайте дебаг версию и ищите устройство на котором падает, запускайте monitor.bat и приложение, снимайте логи и выкидывайте их сюда. Это нужно сделать как минимум для того чтобы убедиться в ваших догадках (что происходит падение из-за сервиса). Так же попробуйте вынести в кнопку код запуска сервиса. Документация по Foreground service: https://developer.android.com/guide/components/foreground-services
  7. Есть два варианта: 1) Добавить в промежуточном манифесте (находится тут: Project\Android\Debug\AndroidManifest.xml) Находим: <service android:exported="false" android:name="com.embarcadero.services.serPublic" /> Заменяем на: <service android:exported="false" android:foregroundServiceType="mediaPlayback" android:name="com.embarcadero.services.serPublic" /> Делаем деплой проекта. 2) Прописать сервис в шаблоне (находится тут: Project\AndroidManifest.template.xml) Примерно вот так. Находим: <%services%> Заменяем на: <service android:exported="false" android:foregroundServiceType="mediaPlayback" android:name="com.embarcadero.services.serPublic" /> <service android:exported="false" android:name="com.embarcadero.firebase.messaging.ProxyFirebaseMessagingService"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT" /> </intent-filter> </service> <service android:exported="true" android:name="com.google.firebase.messaging.FirebaseMessagingService"> <intent-filter android:priority="-500"> <action android:name="com.google.firebase.MESSAGING_EVENT" /> </intent-filter> </service> <service android:exported="false" android:name="com.google.firebase.components.ComponentDiscoveryService"> <meta-data android:name="com.google.firebase.components:com.google.firebase.iid.Registrar" android:value="com.google.firebase.components.ComponentRegistrar" /> </service> Делаем сборку и деплой. p.s. Возможно есть ещё способы, я давненько не касался темы сервисов..
  8. <manifest> ... <service ... android:foregroundServiceType="mediaPlayback" /> </manifest> Более подробно можно почитать тут Foreground services - Declare foreground service types
  9. Возможно, для Андроид 10-11, необходимо указывать тип службы. (в манифесте: foregroundServiceType и в startForeground)
  10. Отлично. Вот ещё один момент, на эмуляторе с рут-правами и обычным перекидыванием файлов в директорию может появляться эта же ошибка. Видимо, это связано с правами на директорию, поэтому, чтобы ошибки не было, необходимо добавить необходимые файлы в проект через деплой (Deployment Manager). По поводу книг, загляните сюда https://delphifmandroid.blogspot.com/p/blog-page_15.html, ещё полезное можно найти тут https://blogs.embarcadero.com/. Тут - https://www.youtube.com/watch?v=Q6vXbXFthLU&list=PLvs4_U1JSz61q3b-S1KcX4F5rbWPAEWsH , Ярослав выложил курс по стилям. И вот сюда - https://learndelphi.org/ P.s. Студия не поддерживает разработку под версии Андроида ниже 5.1. http://docwiki.embarcadero.com/RADStudio/Sydney/en/Android_Devices_Supported_for_Application_Development
  11. Так, а чего сразу то не сообщили, какая именно ошибка?! (вот так всегда, в 95% случаев, приходится вытягивать всю информацию из людей...). Теперь по теме: 1) Касательно "Тогда я посмотрел в Androidapi.JNI.GraphicsContentViewText.pas класс BitmapFactory, и там почему-то в разделе декларации методов объекта JBitmapFactory ничего нет. Возможно я ошибаюсь, но мне кажется, что так быть не должно. " Ещё раз повторяю, изучите основы. Всё реализовано правильно. 2) В коде, с помощью TFile.Exists проверьте, существование файла. 3) Если проверка пишет, что файл есть, то скорее всего нужно поиграться с настройками BitmapFactory.Options, например с этими: var BitmapFactory_Options: JBitmapFactory_Options; begin BitmapFactory_Options.inJustDecodeBounds (эту пробуйте в первую очередь) BitmapFactory_Options.inPreferQualityOverSpeed BitmapFactory_Options.inSampleSize Image := TJBitmapFactory.JavaClass.decodeFile(StringToJString(FilePath), BitmapFactory_Options); Описание есть в документации к АПИ. p.s. У меня демо приложение работает(как на эмуляторе, так и на девайсе с 11 Андроидом), если файл существует в нужном месте.
  12. Вот такая ошибка у вас вываливалась?
  13. В эту директорию "/data/data/<application ID>/files"? (т.е. вы используете устройство с root правами?)
  14. а как вы указываете имя картинки, если её нет в проекте?
×
×
  • Создать...