proguard是否支持GCM?

时间:2016-07-13 10:04:41

标签: xamarin google-cloud-messaging proguard

当我尝试使用proguard重建应用程序时收到此错误:(我尝试了所有为错误MSB6006建议的解决方案:" java.exe"退出代码1,但在我的情况下,似乎与GCM有一些冲突)

  

19> PROGUARD:警告:   com.google.android.gms.common.GooglePlayServicesUtil:无法找到   引用的方法'无效   setLatestEventInfo(android.content.Context,java.lang.CharSequence中,java.lang.CharSequence中,android.app.PendingIntent)'   在类android.app.Notification 19> PROGUARD:警告:   com.google.android.gms.gcm.zza:无法找到引用的方法'无效   setLatestEventInfo(android.content.Context,java.lang.CharSequence中,java.lang.CharSequence中,android.app.PendingIntent)'   在类android.app.Notification 19>中你应该检查一下   需要指定其他程序罐。 19> PROGUARD:警告:那里   是程序类成员的两个未解决的引用。 19基
  您的输入类似乎不一致。 19基你可以   需要重新编译它们并再试一次。 19基或者,你   可能必须指定选项19>
  ' -dontskipnonpubliclibraryclassmembers&#39 ;. 19基java.io.IOException异常:   请先纠正上述警告。 19基在   proguard.Initializer.execute(Initializer.java:321)19>在   proguard.ProGuard.initialize(ProGuard.java:211)19>在   proguard.ProGuard.execute(ProGuard.java:86)19>在   proguard.ProGuard.main(ProGuard.java:492)19>已接   JAVA_TOOL_OPTIONS:-Dfile.encoding = UTF8 19> C:\ Program Files   (86)\的MSBuild \ Xamarin \的Android \ Xamarin.Android.Common.targets(2118,3):   错误MSB6006:" java.exe"退出代码1.

2 个答案:

答案 0 :(得分:2)

Google GMS库有时会尝试访问不适用于给定目标SDK版本的库方法,并在运行时优雅地处理错误。因此,通常需要并且安全地添加类似这样的内容来忽略此类警告:

-dontwarn com.google.android.gms.**
-dontnote com.google.android.gms.**

这些规则将忽略gms库中的所有警告和注释。

答案 1 :(得分:0)

我用Xamarin论坛的解决方案解决了这个问题:

在解决方案中的Android项目中创建名为proguard.cfg的文件。右键单击并将Build Action设置为ProguardConfig。 添加以下行:

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
while true:
    a = s.accept()
    try:
        data = a[0].recv(1024)
    except socket.error:
        a[0].close()
        print 'cought the error'

根据您获得的错误类型对上述内容进行修改 确保将文件保存为UTF-8而不是UTF-8 BOM

编译版本:6.0 最低目标:5.1 目标版本:6.0