java.lang.NoClassDefFoundError: Failed resolution of: Lcom/facebook/R$style
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/facebook/R$style
我尝试将 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) "convert" 你的 .aar 到 .jar(解压,将 classes.jar 重命名为 facebook-android-sdk-4.25.1.jar,复制可以 link 访问的 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 的 link 显示了它们。)
我不确定您是否可以跳过第一步,因为这取决于您的 android 版本 (Link to the commit)。我使用的旧版本 LOCAL_STATIC_JAVA_AAR_LIBRARIES
不存在(但如果你仍然使用它,你不会收到错误)。
但是你的错误信息 Failed resolution of: Lcom/facebook/R$style
告诉我你也是这样。
我找到了这个问题的另一个解决方案:
LOCAL_STATIC_JAVA_AAR_LIBRARIES := facebook-android-sdk
LOCAL_AAPT_FLAGS :=\
--auto-add-overlay \
--extra-packages com.facebook
它就像一个魅力。
谢谢,
我尝试将 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) "convert" 你的 .aar 到 .jar(解压,将 classes.jar 重命名为 facebook-android-sdk-4.25.1.jar,复制可以 link 访问的 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 的 link 显示了它们。)
我不确定您是否可以跳过第一步,因为这取决于您的 android 版本 (Link to the commit)。我使用的旧版本 LOCAL_STATIC_JAVA_AAR_LIBRARIES
不存在(但如果你仍然使用它,你不会收到错误)。
但是你的错误信息 Failed resolution of: Lcom/facebook/R$style
告诉我你也是这样。
我找到了这个问题的另一个解决方案:
LOCAL_STATIC_JAVA_AAR_LIBRARIES := facebook-android-sdk
LOCAL_AAPT_FLAGS :=\
--auto-add-overlay \
--extra-packages com.facebook
它就像一个魅力。
谢谢,