【问题标题】:Android Facebook SDK Eclipse ProguardAndroid Facebook SDK Eclipse Proguard
【发布时间】:2017-02-03 00:18:54
【问题描述】:

我已经安装了 Facebook SDK 并且没有任何错误,但我似乎无法将它作为我的 android 项目的一部分导出。启用 ProGuard 时出现以下错误:

Warning: com.facebook.applinks.FacebookAppLinkResolver$2: can't find referenced class bolts.Task$TaskCompletionSource
Warning: com.facebook.applinks.FacebookAppLinkResolver$2: can't find referenced class bolts.AppLink$Target
Warning: com.facebook.applinks.FacebookAppLinkResolver$2: can't find referenced class bolts.AppLink
Warning: com.facebook.applinks.FacebookAppLinkResolver$2: can't find referenced class bolts.AppLink$Target
Warning: com.facebook.messenger.MessengerUtils: can't find referenced class bolts.AppLinks
Warning: com.facebook.messenger.MessengerUtils: can't find referenced class bolts.AppLinks
   You should check if you need to specify additional program jars.
Warning: there were 62 unresolved references to classes or interfaces.
      You may need to specify additional library jars (using '-libraryjars').
java.io.IOException: Please correct the above warnings first.
at proguard.Initializer.execute(Initializer.java:321)
at proguard.ProGuard.initialize(ProGuard.java:211)
at proguard.ProGuard.execute(ProGuard.java:86)
at proguard.ProGuard.main(ProGuard.java:492)

我将以下内容添加到我的 ProGuard 文件中,但仍然出现错误:

-keep class com.facebook.** {
   *;
}

我应该如何配置 ProGuard 以使用 Facebook SDK?

【问题讨论】:

    标签: java android eclipse facebook proguard


    【解决方案1】:

    我在我的 proguard-project.txt 中使用这些设置:

    # Facebook Audience Network
    -keep class com.facebook.ads.** { *; }
    -keep class com.facebook.ads.internal.** { *; }
    -keep class com.google.ads.mediation.facebook.FacebookAdapter {*;}
    -keep class com.google.android.exoplayer.** {*;}
    
    -dontwarn com.facebook.ads.**
    -dontwarn com.google.android.exoplayer.**
    

    【讨论】:

      【解决方案2】:

      ProGuard 告诉您 Facebook SDK 引用了 bolts 包中的类,但 ProGuard 找不到这些类,因为很可能您的应用程序中没有包含 Bolts。

      要解决此问题,您可以:

      1. 通过添加行告诉 ProGuard 忽略缺少的依赖项

        -dontwarn bolts.**
        

        到 ProGuard 配置文件。这样做不会造成问题,因为 Facebook SDK 可以在内部检测 Bolts 是否存在,并且只在这种情况下尝试使用它。

      2. 通过将这些行放入 Gradle 文件中,将 Bolts 添加为项目的依赖项:

        dependencies {
           compile 'com.parse.bolts:bolts-tasks:1.4.0'
           compile 'com.parse.bolts:bolts-applinks:1.4.0'
        }
        

      除非您确实需要螺栓,否则选项 1 可能是最佳选择。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-12
        • 1970-01-01
        • 2017-08-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多