【问题标题】:R.Java from Facebook SDK collides with application R.javaFacebook SDK 中的 R.Java 与应用程序 R.java 发生冲突
【发布时间】:2013-10-17 16:47:49
【问题描述】:

我正在尝试将 Facebook SDK 集成到已完成并正在运行的应用程序中。

Facebook 登录活动嵌入在 Facebook SDK 中,需要示例中提供的生成的 R.java。

问题是我的应用程序 R.java 和 Facebook R.java 之间存在冲突,并且出现了来自我的应用程序的图像,而不是 facebook 窗口的关闭按钮:

在 com.facebook.android/R.java

    public static final int com_facebook_close = 0x7f02000a;

在我的应用程序/R.java 中

    public static final int hm2x=0x7f02000a;

如您所见,两个文件的 id 相同,而 facebook 登录窗口 id 使用了错误的 ID。

我尝试在登录活动中导入 com.facebook.android.R 但它不起作用,因为 facebook 登录窗口位于 facebook sdk 上。

有什么想法吗?

谢谢

编辑

终于找到了!!!我经过大量测试才意识到。

在项目属性中,SDK 被引用为

android.library.reference.1=../../facebook

这是 Eclipse 工作区上的一个项目,但不是存储 SDK 的真实目录。

确实,facebook 开发者指南说:

您必须取消选择“将项目复制到工作区”选项,以便 每个示例项目都保留了对 相邻的 SDK。但是,这意味着 Eclipse 会创建一个指向 SDK 安装中的项目,而不是对其进行复制。

(如果您希望将来就地更新 SDK,这很有用 并相应地更新您的工作区的库项目。然而, 如果您选择将来编辑 SDK 示例,您可能希望 随后用副本重新导入它们,以免影响 原始版本。)

现在,这不起作用,因为重定向似乎产生了一些问题,并且应用程序没有找到它应该找到的所有 sdk 组件。

当我在 project.properties 中手动硬编码指向真实 SKD 的链接时,一切都开始工作了:

android.library.reference.1=../../facebook-android-sdk-3.5.2/facebook

【问题讨论】:

  • 你尝试清理项目了吗?
  • @MrSuS 是的,我已经彻底清理了项目。然后我从 Facebook 示例中复制了 R.java,最后我重建了重新生成 R.java 的应用程序。它仍然会生成相同的 Id 并发生冲突。

标签: java android facebook facebook-login r.java-file


【解决方案1】:

您应该清理并重建您的项目。这样就可以创建新的 R.java 而不会出现 ID 号冲突。

【讨论】:

  • 它不起作用。我已经彻底清理了这个项目。然后我从 Facebook 示例中复制了 R.java,最后我重建了重新生成 R.java 的应用程序。它仍然会生成相同的 Id 并发生冲突。
  • @user1778857 你根本不应该复制 R.java。 R.java 是在您构建应用程序时由编译器创建的。删除 build/、gen/ 和 bin/ 文件夹(如果有),然后在不复制 R.java 文件的情况下重新构建项目。
  • 嗨 Valerio,facebook R.java 必须被复制(这就是它在 facebook 示例中的工作方式)。如果我不复制它,我会遇到运行时异常:java.lang.NoClassDefFoundError: com.facebook.android.R$Layout at com.facebook.LoginActivity.OnCreate
  • 如果您使用的是官方的 Facebook SDK(现在我正在查看我的应用程序上的 3.5.0),您必须将 Facebook SDK 作为库包含在您的项目中。这样你就不必到处复制文件了。使用 SDK 附带的任何示例,打开它,您会看到 SDK 被称为库(在 project.properties 中,您会找到这样的一行:android.library.reference.1=../. ./facebook)
  • 嗨 Valerio,是的,我正在使用官方的 Facebook SDK 3.5.2。我已经将该库作为一个项目包含在内,并且几乎复制了 Facebook 登录示例中的所有内容。在该示例中,除了从示例源自动生成的标准 Facebook_SessionLoginSample.R.java(没有图像)之外,“按原样”包含 com.facebook.android.R.java 没有源。我已经从示例中复制了所有项目属性。我发现的唯一区别是,在示例中,facebookSDK.jar 位于 Android 依赖项上,当我添加它时,它出现在引用的库中
猜你喜欢
  • 2011-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-07
  • 2019-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多