Proguard打包Release APK后Facebook与Google+集成登录失效问题
解决Proguard打包后Facebook和Google+登录失效的问题
嗨,我太懂这个坑了!用Proguard混淆打包后,Facebook和Google+登录突然失效,大概率是关键类被混淆得认不出来了——这俩SDK都大量依赖反射、回调接口,混淆后类名/方法名被篡改,SDK就找不到对应的调用入口了。咱们来把你的proguard-rules.pro补全:
针对Facebook登录的规则补充
你现有的规则只保留了com.facebook.android.*,但远远不够,得把整个Facebook SDK的核心类、接口、回调都保护起来:
# Facebook SDK 完整混淆规则 -keep class com.facebook.** { *; } -keep interface com.facebook.** { *; } -keep enum com.facebook.** { *; } # 确保登录回调类的方法不被混淆 -keepclassmembers class * implements com.facebook.login.LoginCallback { <methods>; } # 保留Graph API响应类,避免数据解析失败 -keep class com.facebook.GraphResponse { *; } # 保留SDK依赖的注解、签名属性(反射调用必须) -keepattributes Signature, Annotation, InnerClasses
针对Google+登录的规则补充
Google+登录现在大多和Google Sign-In整合了,得把登录核心类、任务回调、API客户端相关的类都保护起来:
# Google Sign-In/Google+ 完整混淆规则 -keep class com.google.android.gms.auth.api.signin.** { *; } -keep class com.google.android.gms.common.api.** { *; } -keep class com.google.android.gms.tasks.** { *; } # 保留登录回调接口的实现方法 -keepclassmembers class * implements com.google.android.gms.auth.api.signin.GoogleSignInCallback { <methods>; } # 保留API可用性检查、连接结果相关类,避免初始化失败 -keep class com.google.android.gms.common.GoogleApiAvailability { *; } -keep class com.google.android.gms.common.ConnectionResult { *; }
最后一步
把这些规则添加到你现有的proguard-rules.pro文件里,替换掉原来零散的相关规则,然后重新打包Release版本测试就行啦!
内容的提问来源于stack exchange,提问作者Krishna android
相关产品推荐
相关产品推荐

