繁体   English   中英

com.google.android.gms.internal.zzhu:找不到引用的类android.security.NetworkSecurityPolicy

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

我尝试使用proguard生成一个apk,但是在尝试构建时我遇到了这个错误:

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工具。 在此之前,这个项目没有提出proguard的问题。 我找到了这篇帖子( https://plus.google.com/+PaulBurke/posts/T3vmAnRP3q6 ),其中Oliver Renner写道:

“所以基本上下一个谷歌库可能无法升级到最新版本。它似乎还需要compileSdk 23才能在不修改的情况下使用ProGuard(警告:com.google.android.gms.internal.zzhu:can找不到引用类android.security.NetworkSecurityPolicy)“*

我更新了我的项目以使用SDK 23进行编译,但问题没有解决。

贝娄,我包含了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:2.5.0@aar') {
        transitive = true;
    }
}

我有同样的问题。 警告信息说:

如果您的代码在没有缺少类的情况下正常工作,则可以使用“-dontwarn”选项来禁止警告。

那么我们来看看它的建议:

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

对我来说,这解决了这个问题。 但是,如果由于某种原因你的代码在没有类的情况下不能正常工作,你可以另外做这样的事情(未经测试):

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

请注意,无论哪种方式,您都需要-dontwarn行。 祝好运!

对我来说,看起来这实际上是由谷歌在Play Services Analytics 8.1的依赖项中意外包含AdMob引起的: https//plus.google.com/+GoogleDevelopers/posts/HsSNWEQ6H4e

如果我在build.gradle排除play-services-ads模块,我没有得到android.security.NetworkSecurityPolicy的Proguard错误,我的发布版本安装并运行没有任何问题(它以前在启动时崩溃了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'

我还没有证实自己。

当我最近升级我的播放服务依赖时,我遇到了类似的错误。 当您省略更新与您使用的播放服务版本相对应的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更新一起移动。 希望这能节省一些灵魂。

问题出现在我更新版本时,我尝试所有的解决方案,但不适合我。然后我看到这个问题# 24109609并且规则进入亲保护对我有用

-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.** { *; }

对我来说,我只是将项目的所有模块同步到最近的游戏服务库,然后我才能使用该软件包。

我在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'

希望这有助于某人。

对我来说,它取代了

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

有:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM