Com.google.android.gms.internal.zzhu: не удается найти ссылочный класс android.security.NetworkSecurityPolicy

Я попытался сгенерировать apk с помощью proguard, но у меня есть эта ошибка при попытке сборки:

Warning: com.google.android.gms.internal.zzhu: can't find referenced class android.security.NetworkSecurityPolicy

Warning: there were 3 unresolved references to classes or interfaces.
You may need to add missing library jars or update their versions.         If your code works fine without the missing classes, you can suppress         the warnings with '-dontwarn' options.

(http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedclass)
:app:proguardRelease FAILED
Error:Execution failed for task ':app:proguardRelease'.
java.io.IOException: Please correct the above warnings first.

Недавно я обновил свои Android SDK Tools. До этого в этом проекте не было проблем с proguard. Я нашел этот пост (https://plus.google.com/+PaulBurke/posts/T3vmAnRP3q6), где писал Оливер Реннер:

"Итак, в основном, следующая библиотека Google, которая не может быть обновлена ​​до последней версии. Также, как представляется, требуется компиляторSdk 23, чтобы иметь возможность использовать ProGuard без изменений (Warning: com.google.android.gms.internal. zzhu: не может найти ссылочный класс android.security.NetworkSecurityPolicy)" *

Я обновил свой проект для компиляции с использованием SDK 23, но проблема не была решена.

Bellow, я включил некоторые части моего файла build.gradle:

compileSdkVersion 23
    buildToolsVersion "23.0.0"

    defaultConfig {
        applicationId "com.sample.sample"
        minSdkVersion 16
        targetSdkVersion 23
        versionCode 1
        versionName "1.0.0"
    }

.
.
.

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:23.0.0'
    compile 'com.google.android.gms:play-services:+'
    compile 'com.android.support:design:23.0.0'
    compile('com.crashlytics.sdk.android:crashlytics:[email protected]') {
        transitive = true;
    }
}

Ответы

Ответ 1

У меня была такая же проблема. В предупреждающем сообщении говорится:

Если ваш код работает нормально без отсутствующих классов, вы можете подавить предупреждения с параметрами '-dontwarn'.

Итак, давайте рассмотрим его предложение:

-dontwarn com.google.android.gms.internal.zzhu

Для меня это устранило проблему. Однако, если по какой-то причине ваш код НЕ работает нормально без класса, вы можете сделать что-то подобное дополнительно (не проверено):

-keep class com.google.android.gms.internal.** { *; }

Обратите внимание, что вам понадобится строка -dontwarn в любом случае. Удачи!

Ответ 2

Для меня похоже, что это было фактически вызвано Google случайно, включая AdMob в зависимостях Play Services Analytics 8.1: https://plus.google.com/+GoogleDevelopers/posts/HsSNWEQ6H4e

Если я исключаю модуль play-services-ads в build.gradle, я не получаю ошибку Proguard с android.security.NetworkSecurityPolicy, и моя версия сборки устанавливается и запускается без каких-либо проблем (ранее это было сбой при запуске с java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity, в то время как сбор отладки работал нормально):

compile ('com.google.android.gms:play-services-analytics:8.1.0') {
    exclude module: 'play-services-ads'
}

В правилах Proguard вам также необходимо:

-dontwarn com.google.android.gms.ads.**

Благодаря этому сообщению для деталей (хотя он не ссылается на сбои сборок вообще, просто размер APK): https://medium.com/google-developer-experts/warning-for-google-analytics-users-44b0096084e2#.4b3egtbxh

Здесь проблема для проекта, над которым я работал, включая фиксацию, которая разрешила проблему: https://github.com/OneBusAway/onebusaway-android/issues/342

ИЗМЕНИТЬ

Пользователи сообщают, что это разрешено в 8.3, что означает, что вы можете исправить это, установив build.gradle в:

compile 'com.google.android.gms:play-services-analytics:8.3.0'

Я еще должен подтвердить себя.

Ответ 3

У меня была такая же ошибка, когда я недавно обновлял зависимость от игрового сервиса. Это происходит, когда вы не обновляете зависимости firebase, которые соответствуют используемой вами версии игровых сервисов.

Вот две версии моих зависимостей:

Ошибка версий зависимостей

compile 'com.google.firebase:firebase-appindexing:10.0.1'
compile 'com.google.android.gms:play-services-maps:10.0.1'
compile 'com.google.android.gms:play-services-places:10.0.1'
compile 'com.google.android.gms:play-services-location:10.0.1'
compile 'com.google.firebase:firebase-auth:9.8.0'
compile 'com.google.firebase:firebase-database:9.8.0'
compile 'com.firebaseui:firebase-ui-database:1.0.1'
compile 'com.google.firebase:firebase-storage:9.8.0'

Рабочая версия зависимостей ``

compile 'com.google.firebase:firebase-appindexing:10.0.1'
compile 'com.google.android.gms:play-services-maps:10.0.1'
compile 'com.google.android.gms:play-services-places:10.0.1'
compile 'com.google.android.gms:play-services-location:10.0.1'
compile 'com.google.firebase:firebase-auth:10.0.0'
compile 'com.google.firebase:firebase-database:10.0.0'
compile 'com.firebaseui:firebase-ui-database:1.0.1'
compile 'com.google.firebase:firebase-storage:10.0.0'

`` Google, похоже, в эти дни переносит обновления сервисных сервисов вместе с обновлениями firebase. Надеюсь, это спасет несколько душ.

Ответ 4

Для меня я просто синхронизировал все мои модули проекта, чтобы использовать недавнюю библиотеку игровых сервисов, и я смог использовать пакет.

что я использую в моем build.gradle(для всех модулей):

compile 'com.android.support:support-v4:23.0.1'
compile 'com.android.support:appcompat-v7:23.0.1'
compile 'com.google.android.gms:play-services:7.8.0'

Прежде чем я использовал compile 'com.google.android.gms:play-services:7.5.0'

Надеюсь, это поможет кому-то.

Ответ 5

Проблема возникает, когда я обновляю версию, я пробую все решения, но не работаю для меня. Затем я вижу этот выпуск # 24109609, и правило для pro-guard работает для меня.

-keepattributes Signature -keep class com.firebase.** { *; }
-keep class org.apache.** { *; }
-keepnames class com.fasterxml.jackson.** { *; }
-keepnames class javax.servlet.** { *; }
-keepnames class org.ietf.jgss.** { *; }
-dontwarn org.apache.** -dontwarn org.w3c.dom.**
-dontwarn android.support.v4.**
-dontwarn com.google.android.gms.**
-dontwarn com.google.firebase.**
-keep class * extends com.myCompany.package.flavor.Flavor { *; }
-keep class com.myCompany.** { *; }

Ответ 6

Для меня это работает, заменив

compile 'com.google.android.gms: play-services-appindexing: 9.8.0'

с:

compile 'com.google.android.gms:play-services:10.0.0'