未使用proguard-rules.pro

时间:2019-03-29 00:34:53

标签: android proguard android-proguard

这是我的proguard-rules.pro文件:(我不确定我是否真的需要包含com.github.chrisbanes的规则)

-keep public class com.google.android.gms.* { public *; }
-dontwarn com.google.android.gms.**
-keep class com.squareup.** { *; }
-dontwarn com.squareup.**
-keep class com.github.chrisbanes.** { *; }
-dontwarn com.github.chrisbanes.**

因为我用过:

api 'com.google.android.gms:play-services-ads:17.2.0'
api 'androidx.appcompat:appcompat:1.0.2'
api 'com.squareup.picasso:picasso:2.71828'
implementation 'com.github.chrisbanes:PhotoView:2.3.0'

之前,我将那个proguard-rules.pro文件(没有com.github.chrisbanes库)用于具有Google广告和Picasso库并且可以正常工作的其他应用。

现在,当我尝试生成签名的APK时遇到了很多错误,例如:

Note: the configuration keeps the entry point 'com.google.android.gms.internal.ads.zzapm { void requestInterstitialAd(android.content.Context,com.google.android.gms.ads.mediation.MediationInterstitialListener,android.os.Bundle,com.google.android.gms.ads.mediation.MediationAdRequest,android.os.Bundle); }', but not the descriptor class 'com.google.android.gms.ads.mediation.MediationInterstitialListener'
Note: the configuration keeps the entry point 'com.google.android.gms.internal.ads.zzapm { void requestInterstitialAd(android.content.Context,com.google.android.gms.ads.mediation.MediationInterstitialListener,android.os.Bundle,com.google.android.gms.ads.mediation.MediationAdRequest,android.os.Bundle); }', but not the descriptor class 'com.google.android.gms.ads.mediation.MediationAdRequest'
Note: the configuration keeps the entry point 'com.squareup.picasso.BitmapHunter { android.graphics.Bitmap decodeStream(okio.Source,com.squareup.picasso.Request); }', but not the descriptor class 'okio.Source'
Note: the configuration keeps the entry point 'com.squareup.picasso.Downloader { okhttp3.Response load(okhttp3.Request); }', but not the descriptor class 'okhttp3.Request'

Android Studio似乎根本没有使用我的proguard-rules.pro文件。

此外,与以前的应用相比,此应用中的新功能是在此应用中,我首次使用androidx并定位API 28。

您知道问题出在哪里以及如何解决?

我还可以使用-ignorewarnings并生成签名的APK吗?我的应用程序仍然可以正常工作吗?

2 个答案:

答案 0 :(得分:0)

检查您的proguard-rules.pro的位置。它应该在应用程序模块目录中。

前段时间我遇到了同样的问题。我的proguard-rules.pro位于项目的根目录中,并将其移至应用程序目录。

答案 1 :(得分:0)

  

我可以只使用-ignorewarnings并生成签名的APK吗?我的应用程序仍然可以正常工作吗?

通常,您不应在不知道其影响的情况下简单地忽略proguard警告,但有时可以忽略这些警告,因为您的应用可能未引用这些类,因此您可以尝试添加以下配置并检查您的应用是否可以正常工作。

-keep class com.google.android.gms.**
-dontwarn com.google.android.gms.**

此外,您的错误日志实际上来自proguard。尝试不同的gms版本,以查看其是否有效。例如尝试15.0.0

api 'com.google.android.gms:play-services-ads:15.0.0'