- Вопрос или проблема
- Ответ или решение
- Решение проблемы интеграции вашего приложения с HMS
- 1. Проверка интеграции с HMS
- 2. Исправление конфигурации ProGuard
- 3. Проверка использования HMS DRM
- 4. Ошибка "Service not registered"
- 5. Проверка конфигурации приложения в AppGallery Connect
- 6. Настройка кода для проверки интеграции
- Заключение
Вопрос или проблема
Я реализовал Huawei DRM и добавил отпечатки ключей,
в то время как мое приложение “не может быть использовано или отображено на HMS”:
Примечания: Поскольку ваше приложение еще не интегрировано с HMS, оно не может быть использовано или отображено на HMS. Если нужна интеграция с HMS, пожалуйста, обратитесь к: https://developer.huawei.com/consumer/en/doc/development/HMSCore-Library/android-sdk-download-0000001064112371
Эта ссылка не работает, в то время как документация также отсутствует нужный res/raw/keep.xml
:
<?xml version="1.0" encoding="utf-8"?>
<resources
xmlns:tools="http://schemas.android.com/tools"
tools:keep="@string/drm_*,@string/hiapp_*",
tools:shrinkMode="strict"/>
Вместе с этими правилами конфигурации Proguard:
-keep interface com.huawei.android.sdk.drm.DrmCheckCallback
-keep class com.huawei.appmarket.service.pay.drm.** { *; }
-keep class com.huawei.android.sdk.drm.** { *; }
С моим res/raw/keep.xml
теперь это работает с включенным уменьшением ресурсов…
но “Проверка интеграции” все еще выдает одно настойчивое предупреждение и тем не менее проходит.
Если ваше приложение не является платным за загрузку, измените его на бесплатное в AppGallery Connect. Если ваше приложение платное за загрузку и интегрировало SDK DRM, проверьте, является ли код SDK HMS запутанным в файле конфигурации.
Для получения дополнительных сведений о том, как изменить файл конфигурации, посетите https://developer.huawei.com/consumer/en/doc/development/AppGallery-connect-Guides/appgallerykit-paydownload-devprepare#h1-1578385113978
Я не знаю, что именно проверяет эта проверка, в то время как мой вопрос заключается в том, как убедиться, что эта проверка проходит? Я уже попробовал все возможное, включая удаление почти всех зависимостей Google, кроме GSON и т.д. Проверка DRM также проходит с песочницей, и не проходит в облачной эмуляции (нет входа, нет покупки), повторная попытка показывает что-то вроде наложения “занято”.
Тем временем, появляется один подозрительный стек-трассировка для HUAWEI P40 LITE:
java.lang.IllegalArgumentException: Сервис не зарегистрирован: com.huawei.android.sdk.drm.c$f@ecc10af
at android.app.LoadedApk.forgetServiceDispatcher(LoadedApk.java:1861)
at android.app.ContextImpl.unbindService(ContextImpl.java:1880)
at android.content.ContextWrapper.unbindService(ContextWrapper.java:741)
at com.huawei.android.sdk.drm.c.s(Unknown Source:12)
at com.huawei.android.sdk.drm.c.b(SourceFile:3)
at com.huawei.android.sdk.drm.f$a.onCancel(Unknown Source:7)
at android.app.Dialog$ListenersHandler.handleMessage(Dialog.java:1642)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.loop(Looper.java:219)
at android.app.ActivityThread.main(ActivityThread.java:8349)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1055)
Однако в AndroidManifest.xml
библиотеки отсутствует любой <service/>
.
Ответ или решение
Решение проблемы интеграции вашего приложения с HMS
Согласно вашему описанию, у вас возникли проблемы с интеграцией вашего приложения с Huawei Mobile Services (HMS), что приводит к тому, что оно не может быть использовано или отображаться на платформе HMS. Приложение не проходит проверку интеграции, несмотря на вашу реализацию Huawei DRM и добавление ключевых отпечатков. Давайте разберем возможные шаги для решения этой проблемы.
1. Проверка интеграции с HMS
Первое, что необходимо сделать, — это убедиться, что ваш проект действительно интегрирован с HMS. В вашем коде должны быть правильно настроены зависимости HMS. Убедитесь, что вы следовали документации для установки HMS Core SDK, доступного по следующей ссылке: Huawei HMS Core SDK.
Если ссылка не работает, попробуйте найти актуальную информацию в документации HMS.
2. Исправление конфигурации ProGuard
Вы указали, что вы добавили конфигурации ProGuard, что является хорошим шагом. Следует убедиться, что они корректны и полностью охватывают необходимые классы. Убедитесь, что файл res/raw/keep.xml
правильно прописан, и в нем содержится следующий код:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
tools:keep="@string/drm_*,@string/hiapp_*"
tools:shrinkMode="strict"/>
Ваши правила Proguard также выглядят правильно:
-keep interface com.huawei.android.sdk.drm.DrmCheckCallback
-keep class com.huawei.appmarket.service.pay.drm.** { *; }
-keep class com.huawei.android.sdk.drm.** { *; }
Однако, если проблема сохраняется, рассмотрите возможность добавления дополнительных правил для классов, которые могут обфусцироваться в процессе сборки.
3. Проверка использования HMS DRM
Ваше приложение должно корректно использовать HMS DRM. Убедитесь, что вызовы инициализации DRM в вашем коде происходят до попытки проверки лицензии или доступа к функционалу DRM. Проверьте также правильность работы с сандбокс-аккаунтом, чтобы удостовериться, что все запросы проходят корректно.
4. Ошибка "Service not registered"
Ошибка java.lang.IllegalArgumentException: Service not registered
выглядит как проблема с попыткой отвязать сервис, который не был связан. Убедитесь, что вы выполняете unbindService
только в том случае, если сервис был успешно связан. Код для учета этой проверки может выглядеть следующим образом:
if (isServiceBound) {
unbindService(connection);
isServiceBound = false;
}
Это позволит избежать ошибок, связанных с попыткой отвязать несуществующий сервис.
5. Проверка конфигурации приложения в AppGallery Connect
Также следует проверить конфигурацию вашего приложения в AppGallery Connect. Если ваше приложение является платным, убедитесь, что информация о DRM SDK правильно прописана в конфигурационном файле. Проверьте, что вы указали все необходимые параметры и что они соответствуют требованиям документации. Если ваше приложение бесплатное, измените настройки от платного к бесплатному.
6. Настройка кода для проверки интеграции
Убедитесь, что ваши проверки интеграции выполняются правильно. Некоторые из таких проверок могут включать в себя наличие необходимых разрешений и корректную настройку манифеста.
Заключение
Интеграция вашего приложения с HMS может быть сложной задачей, но следуя предложенным шагам и внимательно проверяя каждую деталь настройки, вы сможете устранить возникающие проблемы. Убедитесь, что вы регулярно обращаетесь к документации и следуете рекомендуемым практикам. Если после всех предложенных шагов проблема сохранится, подумайте о том, чтобы обратиться в техническую поддержку Huawei или на форумы разработчиков для получения более специализированной помощи.