Поскольку ваше приложение еще не интегрировано с HMS

Вопрос или проблема

Я реализовал 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 или на форумы разработчиков для получения более специализированной помощи.

Оцените материал
Добавить комментарий

Капча загружается...