当Proguard启用时,Xamarin Android应用程序因缺少google play服务类而崩溃

当Proguard启用时,Xamarin Android应用程序因缺少google play服务类而崩溃,android,xamarin,android-proguard,android-multidex,Android,Xamarin,Android Proguard,Android Multidex,在没有对Xamarin Android应用程序进行任何重大更改的情况下,昨天我们的发布版本在应用程序启动时开始崩溃: 未找到类“com.google.android.gms.R$string” 我怀疑这是由于达到了某种类别的数量限制。我在项目设置中选中了multi-dex选项,并且在AndroidManifest.xml中的应用程序节点上设置了android:name=“android.support.multidex.MultiDexApplication”,因此我不希望达到任何限制 在任何情

在没有对Xamarin Android应用程序进行任何重大更改的情况下,昨天我们的发布版本在应用程序启动时开始崩溃:

未找到类“com.google.android.gms.R$string”

我怀疑这是由于达到了某种类别的数量限制。我在项目设置中选中了multi-dex选项,并且在AndroidManifest.xml中的应用程序节点上设置了android:name=“android.support.multidex.MultiDexApplication”,因此我不希望达到任何限制

在任何情况下,由于multi-dex支持都不起作用,我下一次尝试让它起作用的是让Proguard优化捆绑在应用程序中的类。我下载了最新的proguard文件(5.3.3),并将它们部署到/android/sdk/tools/proguard。我更新了proguard-android.txt文件以包含以下行:

-dontwarn sun.misc.Unsafe
-keep public class com.google.android.gms.* { public *; }
-dontwarn com.google.android.gms.**
但是,当应用程序启动并尝试使用谷歌定位服务时,会导致应用程序崩溃:

Xamarin由以下原因引起:java.lang.NoSuchMethodError:无非静态方法 “Lcom/google/android/gms/internal/zzbym;.getLastLocation(Lcom/google/android/gms/common/api/GoogleApiClient;)Landroid/location/location;” 在 md5ecd6d76dd0054fab042915172720bf10.LocationService.n_未连接(本机) 方法)在 md5ecd6d76dd0054fab042915172720bf10.LocationService.onConnected(LocationService.java:35) 访问com.google.android.gms.common.internal.zzad.zzk(未知 资料来源:108)


我不确定我遗漏了什么,我认为上面的keep命令将确保这些类仍然包含在内。我错过了什么?

让它工作起来了。。。我在Xamarin项目的根目录中创建了一个proguard.cfg文件,将其构建操作更改为ProguardConfiguration,然后将其内容设置为:

-keep class com.google.android.gms.** { *; }
-dontwarn com.google.android.gms.**
我必须用UTF8编码将其保存在文本编辑中,否则无法解析


它仍然不能解释为什么多索引支持不起作用,但至少我们现在被解除了阻止…

让它起作用了。。。我在Xamarin项目的根目录中创建了一个proguard.cfg文件,将其构建操作更改为ProguardConfiguration,然后将其内容设置为:

-keep class com.google.android.gms.** { *; }
-dontwarn com.google.android.gms.**
我必须用UTF8编码将其保存在文本编辑中,否则无法解析


它仍然不能解释为什么multi-dex支持不起作用,但至少我们现在被解除了阻止…

但是我相信这种用法会使你的应用程序更大,因为你保留了所有的类和成员,而你不能在visual studio中简单地更改它?你必须像记事本一样使用吗?但我相信这种用法会使你的应用程序更大,因为你保留了所有的类和成员,而不是在visual studio中简单地更改它?你必须像记事本一样使用吗?