java.lang.NoClassDefFoundError:解析失败:Lcom / facebook / R $ style

时间:2017-08-16 20:31:18

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

我尝试将Facebook Android SDK(4.25.0)整合到我的应用中。如果我在Android Studio中使用Gradle build,那么一切正常。

如果我与我的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

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

2 个答案:

答案 0 :(得分:1)

在大多数情况下,我都会遇到此错误,我将第三方库添加到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表明我也是如此。

答案 1 :(得分:0)

我找到了另一个解决此问题的方法:

LOCAL_STATIC_JAVA_AAR_LIBRARIES := facebook-android-sdk
LOCAL_AAPT_FLAGS :=\
      --auto-add-overlay \
      --extra-packages com.facebook

它就像一个魅力。

谢谢,