我尝试使用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.
Run Code Online (Sandbox Code Playgroud)
最近,我升级了我的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;
}
}
Run Code Online (Sandbox Code Playgroud)
yuv*_*val 25
我有同样的问题.警告信息说:
如果您的代码在没有缺少类的情况下正常工作,则可以使用"-dontwarn"选项来禁止警告.
那么我们来看看它的建议:
-dontwarn com.google.android.gms.internal.zzhu
Run Code Online (Sandbox Code Playgroud)
对我来说,这解决了这个问题.但是,如果由于某种原因你的代码在没有类的情况下不能正常工作,你可以另外做这样的事情(未经测试):
-keep class com.google.android.gms.internal.** { *; }
Run Code Online (Sandbox Code Playgroud)
请注意,-dontwarn
无论哪种方式,您都需要这条线.祝好运!
对我来说,看起来这实际上是由谷歌在Play Services Analytics 8.1的依赖项中意外包含AdMob引起的: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'
}
Run Code Online (Sandbox Code Playgroud)
在Proguard规则中,您还需要:
-dontwarn com.google.android.gms.ads.**
Run Code Online (Sandbox Code Playgroud)
感谢这篇文章的详细信息(虽然它没有引用构建崩溃,只有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'
我还没有证实自己.
归档时间: |
|
查看次数: |
23208 次 |
最近记录: |