android - java.lang.NoClassDefFoundError : Failed resolution of: Lcom/facebook/R$style 错误

标签 android makefile facebook-android-sdk android-source

我尝试整合 Facebook Android SDK (4.25.0) 进入我的应用程序。如果我在 Android Studio 中使用 Gradle 构建,一切都运行良好。

如果我与我的 AOSP(Android 开源项目)源代码集成,它不起作用。没有编译错误。但是当我调用

 FacebookSdk.sdkInitialize(this.getApplicationContext());
 //if I didn't call this method, it gave me another exception said 
 'The SDK has not been initialized, make sure to call 
  FacebookSdk.sdkInitialize() first.'

我遇到以下异常:

 java.lang.NoClassDefFoundError: Failed resolution of: Lcom/facebook/R$style;
 at com.facebook.FacebookSdk.<clinit>(FacebookSdk.java:84)

我的 mk 文件如下所示:

LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
LOCAL_RESOURCE_DIR += prebuilts/sdk/current/support/v7/appcompat/res
LOCAL_RESOURCE_DIR += prebuilts/sdk/current/support/v7/gridlayout/res
LOCAL_RESOURCE_DIR += prebuilts/sdk/current/support/design/res
LOCAL_RESOURCE_DIR += prebuilts/sdk/current/support/v7/cardview/res

LOCAL_STATIC_JAVA_AAR_LIBRARIES := facebook-android-sdk

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := \
         facebook-android-sdk:libs/facebook-android-sdk-4.25.1.aar \
         bolts-android:libs/bolts-android-1.4.0.jar

有什么建议吗?提前致谢。

最佳答案

我在将第 3 方库添加到 AOSP 应用构建时也经常遇到此错误。通常有效的是以下内容:

1) “转换”您的 .aar 为 .jar(解压它,将 classes.jar 重命名为 facebook-android-sdk-4.25.1.jar,将 res 文件夹复制到您可以链接到的位置。)

2) 将以下内容添加到您的 .mk 文件中:

LOCAL_STATIC_JAVA_LIBRARIES += facebook-android
...
LOCAL_AAPT_FLAGS := --auto-add-overlay
LOCAL_AAPT_FLAGS := --extra-packages com.facebook
...
LOCAL_RESOURCE_DIR += /path/to/facebook-android-sdk-RES/
...
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES += facebook-android:/path/to/the/facebook-android-sdk-4.25.1.jar

3) 将所有依赖项添加到构建中(appcompat、gridlayout、customtabs 等。您发布的 facebook-sdk 的链接显示了它们。)


我不确定您是否可以跳过第一步,因为这取决于您的 Android 版本 (Link to the commit)。我使用的是 LOCAL_STATIC_JAVA_AAR_LIBRARIES 不存在的旧版本(但如果您仍然使用它,则不会收到错误)。

但是您的错误消息 Failed resolution of: Lcom/facebook/R$style 表明您也是这种情况。

关于android - java.lang.NoClassDefFoundError : Failed resolution of: Lcom/facebook/R$style 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45722492/

相关文章:

android - 如何在 Android 中使用 TextView 显示循环文本

android - 如何将 android 项目从 API 18 升级到 21

android - 是否可以通过 Android Facebook API 发送好友请求?

android - 如何从 Facebook 获取用户的 friend 头像(头像)

awk - 这个 awk 脚本有什么作用?

android - Session.StatusCallback 无法解析为类型 - Facebook API

android - 两个按钮的动画交换位置

java - Android Google Maps v2 多边形性能问题?

python - 使用 Boost.python 构建 Hello World

Makefile 条件错误