这是我的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吗?我的应用程序仍然可以正常工作吗?
答案 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'