2010-01-12 48 views
18

最近我一直有R.java文件的一些問題。現在我決定做一個備份並刪除文件,看看會發生什麼。R.java文件背後的魔力

什麼都沒有發生,所以我創建了一個空的R.java文件,並希望最好。現在,Eclipse的似乎要弄清楚的是,文件被篡改,甚至發出警告:

R.java was modified manually! Reverting to generated version! 

這是所有有。我嘗試手動構建它,但沒有得到任何結果。

所以,我有兩個問題:

  1. 我應該做的,迫使Eclipse來重新生成該文件
  2. 這裏發生了什麼呢?文件是如何創建的,生成文件的代碼在哪裏?

我將不勝感激任何幫助。像往常一樣,問題發生在截止日期前幾天:)

回答

3

我發現了問題 - 我已經創建了補丁區9patch圖像僅在Y軸上定義(我試圖阻止在另一個上調整大小)。

問題依然存在:爲什麼沒有關於錯誤的警告?或者如果有 - 埋在哪裏?

+0

有關9-patch的錯誤應該顯示在'Problems'窗口中。 – 2010-01-13 02:57:48

+2

它可能在某處存在,但是當我將它添加到項目中時,它會使R.java崩潰,並且所有內容都變成紅色,所以它很難被注意到。 – LambergaR 2010-01-13 08:05:02

2

對不起,但嘗試檢查Eclipse中的輸出。可能你有一些錯誤會阻止Eclipse完成構建過程(檢查你的AndroidManifest.xml,是否正確?)。我的意思是,你應該檢查所有的資源文件(string.xml,layouts,...)和接口(* .aidl),可能會有一些問題(語法不一致,或者是某些東西),它們會阻止eclipse生成R.java。

+0

是的,我有。在我的問題中有很多問題,希望你不要指望我刪除所有類中對R.java的每一個引用...... – LambergaR 2010-01-12 12:32:34

+0

2LambergaR:我的意思是你應該首先檢查你的xml/aidl/AndroidManifest.xml 。可能會有一些問題,這就是爲什麼日食不能生成R.java。 – ponkin 2010-01-12 12:47:28

+0

我已經檢查過了...這是好的 – LambergaR 2010-01-12 13:04:19

7

R.java在構建時自動生成。它的內容基於資源文件(包括佈局和首選項)。

當你刪除它時,它被重新創建,但是如果你創建自己的,你將會因爲構建系統不會替代它而陷入困境。

您可以簡單地刪除它(手動或通過選擇項目 - >清潔)並重建您的程序。

+0

這正是我所做的 - 首先我刪除了文件,但是eclipse甚至沒有檢測到它已經消失。只有在我創建了一個空的R.java類之後,它才發現有錯誤,但它不會重新創建或以任何方式修改該文件。 – LambergaR 2010-01-12 12:30:58

1

正如ponkin所說 - 你可能有一個單一的問題,導致R不會重新生成自己,因爲你現在有一百萬和一個問題。

不要試圖自己創建R類。試想想,你已經搞亂了最後一個XML,並檢查錯誤

我有同樣的問題here

1

正如其他人所說,遠離創建自己的R.java文件。當我第一次使用Android時遇到了同樣的問題,並且花費了一些時間來弄清楚編譯錯誤導致的問題。

你想用R.java文件做什麼?

+1

創建我自己的(空的!)R.java文件是我所做的最後一件事。當我完全失敗時,我首先嚐試清理項目,手動重建它,然後刪除文件並重建項目(沒有任何事情發生)。所以最後我創建了一個新類,命名爲R.java - 首先是一個空類,然後添加了基本類(數組,attr,drawable,id,佈局和字符串),此時系統實現了R. java被改變並試圖重建它 - 在這個過程中失敗了。 – LambergaR 2010-01-13 08:10:27

1

確保沒有錯誤是您的Manifest文件。 如果刪除/res/values/strings.xml中的資源字符串app_name,它不知道如何生成R.java權限。 我在做HelloSpinner教程時發現這是一個問題。

1

的東西,可以是很好的知道的是,如果一個XML文件中包含一個?,然後R.java不會再生,在XML文件中沒有顯示錯誤(有時是一段時間後顯示出來) 我你有一個類似於行:

< string name="questionmark"\>?< /string> <br>

嘗試改變?到其他東西,看看會發生什麼R.java文件 - 爲我工作

15

我有一個問題讓我的Android應用程序編譯,看似無法解釋的生成R.java失敗的錯誤。

這個問題是由我之前在構建期間殺死Android模擬器造成的。不要這樣做!一個線索是幾個留在* .out.xml文件的外觀。

解決方案是選擇項目,點擊Project-> Clean,然後手動刪除所有* .out.xml文件。只有這樣,我才能點擊Run-> Run併成功構建。

還有一件事:我使用Eclipse。我必須確保項目在Package Explorer中被選中,並且不是只是一些隨機源文件。容易不通知!

+0

這實際上解決了我遇到的類似問題。謝謝 – prolink007 2010-12-20 17:13:15

1

我發現不需要的資源導致了問題。只要我刪除了R.java生成的資源。

+0

這有很多原因。在我的情況下,刪除資源(XML)文件做了工作。這不是我不需要這個XML文件,我不得不再次創建它。奇怪的! – 2012-06-05 11:31:01

4

我有這個問題幾次,大多數時候它是由一些錯誤的「水庫」的文件引起的,檢查一切都在你所有的資源文件,主要是XML OK,你可以建立之後。

例如,這個問題的兩個常見的原因可能是:

  • 在一個XML文件中的樣式沒有正確拼寫的屬性的名稱。

  • 在一個區域文件的XML沒有正確關閉一個字符串。

2

我有同樣的問題,這是我當時命名爲使用大寫字母的資源文件(PNG圖片)。 (ImageButton001.png而不是imagebutton001.png)。

更改文件名稱後,我的R.java返回。

Rgards, 胡安

1

我有一個類似的問題,我在用大寫字母的RAW文件夾改名爲.wav文件。當我更改爲全部小寫時,清理該項目並將其重建爲R.java罰款。

0

我讀到這在其他網站上,它幫助我:

「如果不解決您的問題,請嘗試修改您的AndroidManifest.xml(只需添加一個空格和保存)我聽說將強制。 R.java重建。「

所以纔在清單文件中添加一個空格,然後重建!

0

我與的IntelliJ同樣的問題,但問題是,我已經在APP_NAME定義strings.xml兩次出於某種原因,IDEA檢查沒

1

我有這個問題,要重建R.java我在xml文件中剪切了我剛剛處理的代碼(或者嘗試其他方法,如果這樣做不起作用),那麼刪除文件,然後創建另一個具有相同的名稱並粘貼代碼。希望這可以幫助。

2

如果可用內存不足,構建工具將自動失敗(Eclipse不會在錯誤日誌中顯示任何錯誤或報告任何內容)。關閉其他打開的應用程序(例如模擬器和瀏覽器),然後爲應用程序清單文件添加一個空間並保存。

1

我有同樣的問題。我只是去了:

Project -> Properties -> Android 

並選擇了正確的模擬器爲我的項目,我有3個不同的選擇在那一刻。我意識到我在某個特定時刻更改了仿真器。所以嘗試更改模擬器,這可能會有所幫助!

好運

+2

你能回答這個答案嗎?它有效地是一個長句。 – 2012-10-24 15:28:34

+1

是的,你是對的,我會這樣做的! – Oliver 2012-10-30 13:41:24

0

作爲一個側面說明,通常是那些* .out.xml文件,試圖建立自己的項目,而XML文件的重點是在

0

我有類似的problem.Cleaning編輯器生成項目沒有解決問題,代碼或文件名中的大寫或空格沒有錯誤。

解決方案是當您選擇PROJECT - > CLEAN時出現的彈出窗口,然後取消選中「立即開始構建」選項。清理項目。關閉並重新打開Eclipse,然後構建項目(PROJECT - > BUILD)。

問題仍然是爲什麼簡單的清理和構建而不關閉Eclipse沒有工作。