2013-10-17 49 views
1

我正在嘗試將Facebook SDK集成到已完成並正在運行的應用程序中。來自Facebook SDK的R.Java與應用程序R.java碰撞

Facebook登錄活動嵌入在Facebook SDK中,並且需要示例中提供的生成的R.java。

的問題是,有我的應用程序R.java和Facebook的R.java從我的應用程序的圖像出現在Facebook的窗口的關閉按鈕,而不是之間的碰撞:

在com.facebook

。安卓/ R.java

public static final int com_facebook_close = 0x7f02000a; 

在我的應用程序/ R.java

public static final int hm2x=0x7f02000a; 

,你可以看到,這兩個文件具有相同的ID,並使用了錯誤的Facebook登錄窗口ID。

我試圖在登錄活動中導入com.facebook.android.R,但它不起作用,因爲facebook登錄窗口在Facebook sdk上。

任何想法?

感謝

編輯

我終於找到了!我花了很多測試才發現。

在項目屬性的SDK被引用爲

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

這是對Eclipse工作區的一個項目,但不是在SDK中存儲的真實目錄。

事實上,Facebook開發指南說:

You must unselect the 'Copy projects into workspace' option so that each of the sample projects retains a correct reference to the neighboring SDK. However, this means that Eclipse creates a link to the project in the SDK installation, rather than making a copy of it.

(This is useful if you expect to update the SDK in-place in the future and have your workspace's library project update accordingly. However, if you choose to edit the SDK samples in the future, you may wish to subsequently re-import them with a copy so as not to affect the original versions.)

現在,這不起作用,因爲它似乎是重定向產生了一些問題和應用程序沒有找到它應該在所有的SDK組件。

一切開始工作的時候手動硬編碼在project.properties鏈接到真正的SKD:

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

+0

您是否嘗試清理該項目? –

+0

@MrSuS是的,我已經完全清理了這個項目。然後我複製了Facebook示例中的R.java,最後我重新生成了重新生成R.java的應用程序。它仍然會產生相同的Ids和碰撞。 – user1778857

回答

0

您應該清理和重建項目。這樣就可以創建新的R.java而不會產生衝突的ID號碼。

+0

它不起作用。我已經完全清理了這個項目。然後我複製了Facebook示例中的R.java,最後我重新生成了重新生成R.java的應用程序。它仍然會產生相同的Ids和碰撞。 – user1778857

+0

@ user1778857你根本不應該複製R.java。當您構建應用程序時,編譯器會創建R.java。如果你有它們,刪除build /,gen /和bin /文件夾,然後在不復制R.java文件的情況下重建你的項目。 –

+0

嗨瓦萊里奧,臉譜R.java必須被複制(這是因爲它在Facebook上的例子)。如果我不復制它,我有一個運行時異常:java.lang.NoClassDefFoundError:com.facebook.android。R $佈局在com.facebook.LoginActivity.OnCreate – user1778857