Устройства Huawei: тег метаданных в AndroidManifest.xml вашего приложения не имеет правильного значения - PullRequest
2 голосов
/ 31 мая 2019

Я работаю в приложении для массового использования, которое работает около 4 лет, в последнем выпуске было реализовано несколько новых библиотек, после этой реализации мы столкнулись с некоторыми проблемами при попытке проверить, доступны ли сервисы Google Play, это происходит только на устройствах Huawei с Android 8+. LogCat покажет нам эту трассировку стека

Причина: java.lang.IllegalStateException: тег метаданных в AndroidManifest.xml вашего приложения не имеет правильного значения. Ожидаемый 12451000, но найденный 4323000. У вас должно быть следующее объявление внутри элемента:

У нас есть правильные значения в манифесте:

<meta-data
    android:name="com.google.android.gms.version"
    android:value="@integer/google_play_services_version" />
<meta-data
    android:name="com.google.android.maps.v2.API_KEY"
    android:value="XXXXXXXXXXXXXXXXXXXXXX" />

Если мы следуем значению google_play_services_version, мы можем найти ожидаемое значение из play-services-basement-16.1.0.aar

<integer name="google_play_services_version">12451000</integer>

Это библиотеки, реализованные на gradle

implementation "com.android.support.constraint:constraint-layout:$constraint"
implementation "com.android.support:appcompat-v7:$support"
implementation "com.android.support:design:$support"
implementation "com.android.support:cardview-v7:$support"
implementation "com.android.support:recyclerview-v7:$support"
implementation "com.android.support:design:$support"
implementation "com.android.support:support-v4:$support"
implementation "com.android.support:mediarouter-v7:$support" //New Lib
implementation "com.android.support:animated-vector-drawable:$support" //New Lib
implementation "com.android.support:design:$support"
implementation "com.android.support:support-vector-drawable:$support"

//Play services
implementation "com.google.android.gms:play-services-maps:$playServices"
implementation "com.google.android.gms:play-services-analytics:$playServices"
implementation "com.google.android.gms:play-services-gcm:$playServices"
implementation "com.google.android.gms:play-services-safetynet:$playServices"
implementation "com.google.android.gms:play-services-wearable:$playServices"

С этой версией

ext {
    //build
    sdkCompileVersion = 27
    sdkMinVersion = 16
    sdkTargetVersion = 27
    sdkBuildToolsVersion = '27.0.3'

    //dependencies
    support = '27.1.0'
    playServices = '16.0.0'
    newRelic = '5.18.0'
    constraint = '1.1.2'
}

У кого-нибудь есть идеи, как решить эту проблему?

1 Ответ

0 голосов
/ 05 июня 2019

Вы указали значение gms-версии в вашем приложении? Что-то вроде этого applicationInfo.metaData.putInt("com.google.android.gms.version", 4323000);

Также возможно, что одна из добавленных вами новых библиотек также объявит более старую / другую com.google.android.gms.version.

Если это происходит только на Huawei, возможно, Huawei пытается переопределить какое-то значение.

Чтобы подтвердить, являются ли это ваши собственные библиотеки или Huawei, вам придется жестко закодировать его в манифест, а затем проанализировать ваш встроенный apk и проверить окончательное значение, которое там объединено. Если это значение соответствует ожидаемому, то, вероятно, это делает Huawei.

Вы также можете попробовать эту ссылку: https://stackoverflow.com/a/52249677/6668797

Если библиотека использует старую / другую версию, это заменит ее на вашу.

Если проблема все еще не решена, укажите, пожалуйста, следующую информацию: Пожалуйста, поделитесь полной трассировкой стека. Это происходит на любых устройствах Nexus / Pixel? Какие из этих библиотек недавно добавлены?

...