R無法解析 - Android錯誤


Answers

每次我遇到R未生成或甚至消失的問題時,都是由於XML佈局文件中的某個問題導致應用程序無法生成。

Question

我剛剛下載並安裝了新的Android SDK。 我想創建一個簡單的應用程序來測試它。

該嚮導創建了此代碼:

package eu.mauriziopz.gps;

import android.app.Activity;
import android.os.Bundle;

public class ggps extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

Eclipse給我的錯誤

R無法解決

在線

setContentView(R.layout.main);

為什麼?

PS:我在res/layout/下有一個名為main.xml的XML文件。




嘗試使新的XML佈局文件名稱為小寫。 例如,使用my_file.xml而不是myFile.xml




檢查XML文件名稱。 確保它們都是小寫字母。

還要確保任何圖像資源名稱都在LOWER CASE中。 我用我的jpg文件的名字寫了一封大寫字母,並導致整個項目中的R未解決錯誤。




R.java是Android Eclipse插件在構建應用程序時創建的文件。 R.java在“gen”目錄下創建。 該文件是從“res”目錄中的信息生成的。 如果在Eclipse菜單上運行select“Project” - >“Clean ...”,它將刪除並重新生成R.java文件。

當您在AndroidManifest.xml文件中更改軟件包名稱時,會出現“R無法解決”的問題。 它使用您的Android包名稱在存儲R.java文件的“gen”目錄下創建一個子目錄。

Eclipse可能在執行清理時遇到問題,因為當您更改Android程序包名稱時,它會對R.java文件的位置感到困惑。 您可以重命名gen下的子目錄以匹配新的軟件包名稱,也可以將軟件包名稱更改為舊名稱。 做乾淨的,然後更改包名稱到你想要的新名稱。 如果您在更改軟件包名稱時停止Eclipse嘗試構建,此功能效果最佳。 在“項目”菜單下,取消選中“自動構建”選項,並在“清理...”對話框詢問是否應該“立即開始構建”時取消選中該框,以便在您更改時不嘗試構建包名稱。 在更改名稱後,您可以重新打開“自動構建”。

請注意,如果您的AndroidManifest.xml文件包名稱與您的Java包名稱不匹配,那麼Eclipse將自動添加一個“導入<您的Android包名稱> .R;” 在所有.java文件中有任何對R的引用。如果你改變你的AndroidManifest.xml包的名稱,有時Eclipse不會更新所有這些添加的導入。 如果發生這種情況,請使用Eclipse重構( ALT + Shift + R )將其中一個Java文件中的import語句更改為新的AndroidManifest.xml包名稱。 最好在禁用“自動構建”的情況下執行此操作。




在我的情況下,我在我的AndroidManifest.xml發生錯誤。 其他人則表示,您的XML文件必須沒有錯誤,但我只查看res /文件夾。 查找並修復盡可能多的錯誤,並且問題可能很好地解決。




只需轉到Android頂部菜單列表。 點擊Build菜單,在Build下點擊Rebuild Project




刪除main.out.xml 。 我是新手,不知道這個文件用於什麼,但刪除它清除了問題。




此錯誤也可能是由於將活動添加到與您的程序包的根名稱空間不同的名稱空間中引起的。

例如,如果com.example.myapp是您的包的根名稱空間,則可以將一個活動添加到com.example.myapp.activities名稱空間。

這將產生“R無法解決”的錯誤。

要修復導入,R在活動的默認命名空間中應該是:

import com.example.myapp.R;



R是一個自動生成的類,其中包含用於識別資源的常量。 如果你沒有一個R.java文件(它將在1.5 SDK中使用gen / eu.mauriziopz.gps / R.java),我會建議關閉並重新打開你的項目,或者去Project> Build all(和按照Josef的建議,選擇“自動構建”)。 如果這不起作用而不是嘗試製作一個新項目,如果重新創建問題不是再次發布,我們會詳細介紹。




不幸的是,現有的問題都沒有幫助。 由於我的問題似乎是特定於平台的,因此只有在Ubuntu 64位 (我目前使用的是Ubuntu 12)時才有效。 起初,我沒有看到“問題”窗口,它已經暗示了一個解決方案,即在64位環境中,您需要32位庫,這可能會丟失:

sudo apt-get install ia32-libs

我安裝了軟件包並重建了我的項目,這為我解決了這個問題。




值得在AndroidManifest.xml檢查。 屬性package具有正確的值。

那是:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="your.correct.package.name"
   ...

改變之後, R.java將被重新生成。




我也有這個問題。 事實證明,我無意中刪除了strings.xml文件中的“app_name”字符串資源,這導致了無聲錯誤。 一旦我將其添加回來,R類已成功生成,並且所有內容都已備份並正在運行。




我第一百萬次遇到了這個問題,並意識到導致它的原因:我在名稱中創建了一個大寫字母的XML文件。 您在/res所有XML文件名必須匹配[a-z0-9\\._]




這個錯誤在我的x64 Linux Mint安裝中突然出現。 事實證明,結果是ADB二進製文件失敗,因為沒有安裝ia32-libs軟件包。 只需運行apt-get install ia32-libs並重新啟動Eclipse即可修復該錯誤。

如果您的x64發行版不包含ia32-libs,則必須使用Multiarch。

在這篇文章中檢查#4和#5: http://crunchbang.org/forums/viewtopic.php?pid=277883#p277883 : http://crunchbang.org/forums/viewtopic.php?pid=277883#p277883 # http://crunchbang.org/forums/viewtopic.php?pid=277883#p277883

希望這可以幫助某人。




我的項目在開始時包含一個r.java.at,R.layout.main工作良好。但是,添加一些代碼後它不起作用,並且錯誤是R.layout.main無法解析。問題出在哪裡?

看看你的進口。 機會是這條線:

import android.R;

將在那裡。 如果是這種情況,請將其刪除,以便您的項目不會使用默認的Android資源類解析R,而是使用從/ res /文件夾自動生成的那個類。