Related
Want to improve this post? Provide detailed answers to this question, including citations and an explanation of why your answer is correct. Answers without enough detail may be edited or deleted.
In every instance in all of my classes where I reference R.id.something, the R is in red and it says "cannot resolve symbol R". Also every time there is R.layout.something it is underlined in red and says "cannot resolve method setContentView(?)". The project always builds fine. It is annoying to see this all the time. I have read many other questions on here about something similar but most involved importing projects from Eclipse. I am using what I believe to be the most recent version of Android Studio and the project was created with Android Studio and worked without any "cannot resolve R" problems. I would like to know what causes this if anyone knows.
I had this this issue too. A simple 'gradlew clean' and 'gradlew build' did the trick.
Click on Build->Clean Project and that will perform a gradle clean
In the latest versions of Android Studio, at least for me, the following works:
"Tools" -> "Android" -> "Sync Project with Gradle Files"
In latest Android Studio 3.1.3 (July 2018), "Sync Project with Gradle Files" is available in main menu bar.
I was using gradle 3.3.0. It was the main culprit. Wasted 6.50 hours from my life. Gradle 3.2.1 removed the error.
classpath 'com.android.tools.build:gradle:3.2.1'
Problem resolved after changing the gradle version. Details history can be found here.
I have a similar problem and here is what I did:
Clean Project and Sync Project with Gradle ,
check buildTools version in my sdk
From build gradle (module ) change minSdkVersion from 8 to 9
defaultConfig {
applicationId "PackageName"
minSdkVersion 9
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
But all this didn't help.
Finally I found the answer (this worked in my case)
Change from build.gradle(module:app)
android {
compileSdkVersion 21
buildToolsVersion '21.0.1'
......
....
}
Or
Select File | Project Structure change Build Tools Version to 21.1.1
Check your xml files.
Clean Project.
This is it.
For example I had an entry in my strings.xml:
<string name="A">Some text</string>
And in activity_main.xml I used this string entry
<TextView
android:id="#+id/textViewA"
android:text="#string/A"/>
While'd been working with project, I deleted that
<string name="A">Some text</string>
And consequently activity_main.xml became not valid. As the result: cannot resolve R.
So, check your *.xml files and clean project.
If you see this error after moving java files or directories to other locations, then you can guarantee that Android Studio has gotten confused. And guess what? undo-ing those actions doesn't fix the problem.
So you try a clean, but that doesn't work.
And restarting doesn't work either.
But try File -> Invalidate Caches / Restart... -> Invalidate and Restart
Android Studio maintains information about which files are dependent on which other files. And since moving files around is not implemented correctly, moving files causes errors. And that's not all: caches of these dependencies are used in an attempt to speed up the build.
This means you not only have to restart, but you need to invalidate those caches to restore (or more accurately, rebuild) sanity.
I think if you put your Activities files to another folder than the default one. You need to import the com.example.yourproject.R (this is your project R file NOT Android.R file) to ALL activities using R. For example, in MainActivity file insert this line:
import com.example.yourproject.R;
There seems to be many causes for this issue. Recently, I added an activity to test with called NewActivity. This created a file called res/menu/new.xml and gradle did not like that name because new is a reserved word.
gradlew clean
or
"Tools" -> "Android" -> "Sync Project with Gradle Files"
Those are definitely good things to try, but you may have some other issues you need to resolve before you run those commands.
You should do two things, first clean the project (in build menu) - it deletes the build directory which may be the culprit:
Next, Sync project with Gradle files (under file):
This is the placement for the items in Android Studio 3.6.1 on Windows 10.
If all else fails, Invalidate Caches and Restart (under file) usually does the trick. This closes down the whole program and takes the most amount of time, in my opinion.
To clarify, I am running this on windows 10, but it should work on MacOS and Linux as well.
R.java file contains the link between xml and java page. "R cannot be resolved" arise only if there is a problem with some of your resource files. So the best and effective way is delete the last done xml or drawable in res file. and then again start from there according to android coding norms. This is the only way. The effective and right way.
Also use Git for proper tracking of code. ..
Your code is just scrambled. The answer is fairly simple.
Just go to Build --> Clean Project.
That should do the trick.
Check also your version of Android Studio.
I'm currently using Android Studio 3.0.1.
Have you updated your SDK tools recently? Launch the android SDK manager and make sure you have the latest SDK tools, which is now separate from the platform tools. I had this same issue when I first updated my SDK manager, the SDK build tools package did not show up for install/update until I closed and reopened the SDK manager.
I had to import my R package in android studio. For ex: import com.example.<package name>.R
Just clean your project and Sync Project with Gradle File.
And the problem will be resolved.
I recently had this issue and the clean/build etc. didn't resolve it. I guessed I had an issue somewhere but wasn't sure where to look to find it (was it in the manifest, resource xml files etc?).
When something is wrong, you can find out what it is by doing a code analysis run.
From the menu at the top choose:
Analyze -> Inspect code, scan the whole project using the 'Default' profile.
Your inspection results will contain an element called 'Android'. In here you will get a list of anything that is causing issues in your resources and manifest file. The errors will open up the generated xml files from your build which will show any errors in red.
My exact issue was caused because I was using flavour based manifest files and I copied some permissions inside the <application> tag in the flavour by accident.
UPDATE: I did have an issue after where Android Studio still showed the error after the fix, even though I could now build and run perfectly fine while the error was still there. (I am running a canary build so putting it down to that for now)
I have had this with
An uppercase letter in my drawable resources.
Import Android.R being added by Android Studio (or Eclipse)
Error in xml file
I faced this issue when I manually renamed the domain folder of my app. To fix this issue, I had to
Set the proper package folder structure of <manifest> in AndroidManifest.xml.
Set the new package location for android:name of <activity> in AndroidManifest.xml.
Clear cache by
File Menu -> Invalidate Caches / Restart ...
The issue will be gone, once the Android studio restarts and builds the fresh index.
I had the same issue:
Android Studio 3.2
The project compiles and runs fine, but I am getting "Cannot resolve symbol "R" on-screen warnings
Does not help:
Build->Clean Project
Build->Rebuild Project
File->Invalidate Caches/Restart
Helps:
either
in build.gradle
dependencies {
classpath 'com.android.tools.build:gradle:3.3.0'
...
}
replace with
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
...
}
or
Update Android Studio to 3.3
This is a very old question, but it still happens a lot and there is no truly comprehensive answer here.
I have had this problem more times than I want to admit. It can be caused by a wide variety of issues that mostly all have to do with your project structure not matching what's expected. Here's a list of all the problems I've had:
Importing from Eclipse to Android Studio does not always work smoothly, especially with older versions of Android Studio. Make sure you're using the correct directory tree. It should look like this for a moderately mature app:
AppName/ // AppName is your app's name, obviously
.gradle/ // This is a compiler created directory. You should normally leave it alone
.idea/ // Ditto
build/ // This too
gradle/ // And this
app/
build/
libs/
src/
androidTest/ // Tests based on the Android instrumentation runner should go here
main/
java/
fully/ // Typically com
qualified/ // the domain name. Longer package
// names may have deeper folder trees
AppName/ // All your java files go here
res/
drawable-*/ // One of these for each resolution you support
layout/ // All of your general layouts
menu/ // All of your menu layouts
values/ // All of your resource xml files
xml/ // PreferenceScreen layouts go here
AndroidManifest.xml
debug/
test/ // Pure jUnit tests should go here
.gitignore
app.iml
build.gradle // This is the gradle file you should be making most changes to
proguard-rules.pro
.gitignore
build.gradle // This gradle file should mostly be left alone
gradle.properties
gradlew
local.properties
AppName.iml
settings.gradle
It may not look like this in your IDE. There is a drop-down above the file tree that displays your files in different ways, and it defaults on my system to one called Android that breaks your files out into their different types. It's easier to fix this kind of problem from the one called Project, and even easier directly from your OS's file system, because Android Studio collapses folders that only contain another folder onto a single line.
Especially if you ever change the name of your app, you need to make sure that the source tree main/java/com/domain/AppName is updated. Also make sure that the package tag in your AndroidManifest.xml is correct.
If there are errors in either your Gradle files or your AndroidManifest.xml, this will prevent Android Studio from properly building your resource files. Gradle files can be broken by upgrading Android Studio sometimes, especially from the pre-1.0 versions. Sometimes this is because it stops supporting older versions of the Gradle plugin, so you need to update your version numbers. It can sometimes be hard to find what the current versions are. As of today, 7/17/15, my apps are compiling fine with com.android.tools.build:gradle:1.2.3. This is in the dependencies block in the outermost gradle file,
If your AndroidManifest references a non-existent drawable or string resource or activity, it will break and cause this error. Sometimes if anything references a nonexistent drawable or string resource you will get this error.
If you have a file in your resources that is corrupted, or an invalid xml file, you will get this error.
In my experience, sometimes Android Studio just hiccups for no reason, and you need to restart it and/or your PC. I don't know why, but sometimes it works.
If you have two xml resources with the same name, in directories that do not override each other, you can have this problem. For instance, you can have the same name in drawable-mhdpi and drawable-xhdpi because they override each other depending on the target device, but if you have the same name in layout and in menu, it will cause a problem. Rename or delete one of the files.
If only some resources are having this problem, those resources are most likely in the wrong directory.
In one case I had to completely reinstall Android Studio. I don't know what was wrong, but it worked.
In one case I moved my entire project to a different directory and re-imported it as a new project. I don't know what was wrong, but it worked.
Xml files with reserved words for names can cause this problem. Rename or delete them.
There are a few ways your Gradle file can end up referencing a version of the build-tools that you do not have installed. Correct this by changing Gradle or downloading the appropriate build-tools.
Finally, after you've fixed whatever is wrong, you need to clean your Gradle project. You do this by going to the Build menu at the top and selecting Clean Project.
Just go to Android Top menu list. click on Build Menu, in under Build click on Rebuild Project.
I have a special case for this problem.
In my project, every thing goes well, it can compile and build successfully, but in my Android Studio IDE(and I also tried Intelligent IDEA, they are in the same situation) the R.java file can not be resolved well and always be drop in red line.
Just like this:
This almost made me crazy, I can't bear the read color when I am programing.
At last I found this tricky problem is cause by my R.java's file size.
My project is very a huge one, it supports many multi-languages and multi screen sizes. There are so many resources that my R.java's file size is about 2.5M.
The max size of a file in Android Studio is 2.5M in default settings, so files bigger than this limit can't not be resolved well. And you can change the default settings in "AndroidStudio-root/bin/idea.properties".
change this line:
idea.max.intellisense.filesize=2500
to :
idea.max.intellisense.filesize=5000
Then restart Android studio, the red color dismissed, I can program happily again.
Build > Clean Project
This worked for me. Had the same problem a few times, and this seems to set it right. Unless you have changed something or called a variable R. This issue usually happens out of nowhere, when it happens to me, so I imagine its just Android studios freaking out. haha
Have a good one, and good luck with your projects.
Do: Build > Clean Project
IMPORTANT: Make sure you don't have any Errors after Clean Project in Message Pane (Alt+0). If you find any red circles with exclamation mark, than you must remove those errors in your code.
Mostly these errors are related to #string/ or #array/. Clean Project again and done!
I had the same problem and most times it is resolved by
Sync project with gradle files
Doing Build -> Clean Project
Doing File -> Invalidate Caches
But this time the error persisted even after doing all these things and at last i found the culprit.
The problem was in an xml file, where i have given ordinary string value for an android:id instead of an id resource type.
MISTAKE
android:id="username"
CORRECTION
android:id="#id/username"
Messing up things related to resources in xml files is a major
reason for this error.Beware of the fact that it may not be shown as an error in the xml layout file.
NOTE
In most cases the compiler shows you the source of error in the Message.
Try to check it first before attempting other solutions
I had the same problem, and it happens when I create a new project.
What I do is:
check for SDK updates
then android studio updates,
then reopen the project
open the andoridmanifest.xml
erase a space between a "_>" in the android:label and save.
That works for me.
I had a hard time fixing this myself.
Make sure you have no errors in your layout.xml files.
Go to Build > Clean project
It worked for me, hope it works for you too.
`I had same problem and it solved by :
1) Sync Project with gradle files
2) Build -> Clean Project
3) Build -> Rebuild Project
4) File -> Invalidate caches
//imp step
5) Check your xml files properly.`
This notation seems to work fine.
android:id="#+id/viewID"
Android Studio's design panel doesn't seem to work well.
Same problem. Started when I added a few images in my drawable folder and tried to access them. Also the images added were having the extension with capital letters. That seems to have crashed the build, since even if I renamed them, the message was the same and R was inaccessible. What I did is, in the .iml file I looked for the excludeFolder and removed them (like bellow):
<excludeFolder url="file://$MODULE_DIR$/build/apk" />
<excludeFolder url="file://$MODULE_DIR$/build/assets" />
<excludeFolder url="file://$MODULE_DIR$/build/bundles" />
<excludeFolder url="file://$MODULE_DIR$/build/classes" />
<excludeFolder url="file://$MODULE_DIR$/build/dependency-cache" />
<excludeFolder url="file://$MODULE_DIR$/build/incremental" />
<excludeFolder url="file://$MODULE_DIR$/build/libs" />
<excludeFolder url="file://$MODULE_DIR$/build/manifests" />
<excludeFolder url="file://$MODULE_DIR$/build/res" />
<excludeFolder url="file://$MODULE_DIR$/build/symbols" />
<excludeFolder url="file://$MODULE_DIR$/build/tmp" />
After that I rebuilt the project and R magically re-appeared.
There are many causes for this error.
Sometimes it occurs for replacing an image file keeping same name.
Suppose you deleted an item from your layout .xml say a <Button/> but it is still declared in any Activity or Fragment .java.
Many more.
Best way to track the error is Rebuild it rather clean or sync doing some intentional error.
If it doesn't solve your problem then there must have to be some flaw or runtime error or error occurred due to improper use of resources in may be both java or xml file in your code or design which is forcing gradle to stop because (R)esource file can't index your resources properly and you have to admit that.
If your project ran before you made the changes then comment out the changes you have made and try to rebuild the project.
It will surely work since there will be no changes.
To track down the exact error, check the changes by breaking the changes into smaller module.
For example - If you are making a list visible with a button click and inserting list values in the adapter, first check if you are able to make it visible or not then check for adapter errors.
I am working on one android application. Don't know why but i am not able to regenerate R.java file.
i also searched a lot about it. and also tried all the solutions i got from various place. but R.java is not generated.
if i import my project in another computer, then it is working fine. only have problem in my eclipse. :(
i also solved all the lint errors, warnings and also tried to clean and build project. i also checked my all .xml files as well as all images. all is perfect not any special symbols or uppercase. and and tried all the tricks which i got. but now able to generate R.java file.
please help me.. Thank in advance...
Edit :
right now i am getting one error like
Description Resource Path Location Type Error executing aapt: Cannot
run program "..\Android_SDK\build-tools\18.0.1\aapt.exe":
CreateProcess error=5, Access is denied: CreateProcess error=5, Access
is denied TestProject line 1 Android ADT Problem
Occassionally I am also fighting with this issue. Sometimes it's tough, but it's usually that something is wrong with your /res/ files. Usually XMLs.
First try to Clean your build, but you did that already.
Look for malformed XMLs, they do not have to be marked in red at first, but try to open them all if you don't see them popup in red. Check that you don't reference ids to another views in styles.xml, check for invalid characters in keys, check for invalid/unescaped characters in content of xml entities.
Also check properties of your project and make sure that all Java Build Path components are checked (Order and Export). Mainly Android one. Sometimes it happens to me, that it's unchecked making my project unbuildable.
If it works on another computer, it seems the code is fine. The problem seems to be either your toolchain or your Eclipse workspace.
Try the following:
If you use Android SDK Tools 17 or higher, make sure you install the corresponding Android SDK Build-tools in Android SDK Manager.
If the above doesn't help, create a new workspace and import your existing code into it.
This is common problem, which can be caused by many different situations.
What always worked for me:
If your R.java is not generated, your project is flooded with errors saying that class R is not recognized (obviously). Usually, somewhere between all those R.java errors, there was one other error (with different that all others) which is often overlooked because of hundredths R.java related errors. If i fixed this other error, R.java is generated after clean/build...
Edit: the "other error" i am talking about that is preventing your R.java to regenerate, is often found somewhere inside resource XML files...
The problem is in your installation path of Eclipse. Just check that your path doesn't have any spaces where you have installed Eclipse. And name should be proper for the Eclipse directory.
I also had the same problem because my Eclipse installation path got spaces in it, and my Eclipse directory name got changed to some symbolic name. When i renamed it to Eclipse and make the installation which contains no space, it got worked.
For example if Eclipse directory path is like
D:/New Folder/Android/Eclipse
Then it may got problem because of space between "New Folder".
Check your path and directory name and if it worked then check my answer please.
I was struggling with this issue for past one hour. I just solve it by
Remove the ".metadata" file from the workplace directory.
Then start the Eclipse.
Import the project from the workplace by File -> Import -> Existing project into workplace under General tab.
The R.java file will be generated. You need to import all other project that were in your workplace the same way.
Hope this will help someone
I recently downloaded the Android Support Package and have been using it trying to get my application, running at SDK 10, to use a GridLayout.
Anyway, I cleaned my project a few times working on this error in my XML files, and then when I went back to my classes in /src, every single reference to R.* was an error.
This has happened to me before, but it usually fixes itself, and it has not yet. Does anyone know what to do?
The R.java file is no longer in my /gen folder.
It sometimes happens when you import another project First i suggest you to build it, it will create automatically .
If it's not working then try to create new project from existing source and specify the downloaded project . It worked for me
Hope this works for you let me know..
Sometimes if there is an error in your XML files R.java won't build. Go through your XML files to make sure that everything is in order (typo, forgetting to close a bracket, etc). When you fix that it should build itself again.
You can also try Adnroid Tools>Fix Project. That may help you to create gen/R.java file
Follow following steps :
In Eclipse,
=> Right Click on Project > Android Tools > Fix Project
By this way, you can fix many common problems which can help generate R.java in gen/R.java file.
There can be several reasons why this occurs. The following I have found happen to me and I have included the steps I took to resolve them.
First step is to try and clean the project (from the Project menu option I believe)
Check there are no errors with your XML files. Sometimes this is obvious from the red 'x' that appears next to an XML filename in the Project exlporer window and sometimes it is not. If it is not obvious check the 'Errors' window (whic is founf in the 'Windows' Menu option
Failing that I have found that by disabling the automatic build option, adding some arbitrary comment to an arbitrary source file, saving the source file, clean the project, remove the comment and then re-selcting automatic build can work too.
Apologies for the approximate locations for some of the Eclipse functions but I am not currently in front of Eclipse to check.
This happens when you have an error in the res folder.
Fix the error first, then do :
Project --> Clean --> Ok
Et voila !
I just imported the Android tutorial solution Notepadv3. I wanted to see it run.
As usual, I'm greeted with the inability to resolve R.
I searched for an import R line and see none.
I edited a line and saved. I closed and opened the application.
What do I do??
This seems to happen on every project.
(I have tried this with Eclipse Ganymede under Ubuntu 9.1 and Eclipse Helios under Windows 7.)
I searched for an import R line and see none.
R.java will be generated in the same package that is declared in the manifest. Usually, your code resides in that same package, and therefore a manual import of R is not needed.
What do I do??
R.java will be created as part of the build process, in your project's gen/ directory.
If you have automatic builds enabled, and R.java is not being built, check your Eclipse console for error messages, such as bad or missing resources.
If you do not have automatic builds enabled, do a build.
Every now and then, you will need to do a Project|Clean to clear out erroneous errors and force Eclipse and Android to rebuild your project from scratch.
In addition to what #CommonsWare said, if after you do a Project > Clean and R is still not resolved, make sure you are importing your project's R.java and not android.R.*.
check for errors in .xml files.Build may be failing because of these.
I've found out that my R.java is never updated, so it doesn't contain information about my new resources, so I decided to delete it and thought that Eclipse would generate a new one. But that didn't happen, and I don't have R.java now. How can I regenerate one?
I'm using Windows 7.
From one of the comments: "Doing Project -> Clean is what caused the problem for me. Cleaning deletes R.java...and for whatever reason the plugin is not regenerating the file."
I found this happening to me with a broken layout and everything blows up. Relax, it's like that old mistake when you first learned programming C where you forget one semicolon and it generates a hundred errors. Many panic, press all the buttons, and makes things worse.
Solution
Make sure that anything the R. links to is not broken. Fix all errors in your XML files. If anything in the ADKs are broken, R will not regenerate.
If you somehow hit something and created import android.R in your activity, remove it.
Run Project -> Clean. This will delete and regenerate R and BuildConfig.
Make sure Project -> Build Automatically is ticked. If not, build it manually via Menu -> Project -> Build Project .
Wait a few seconds for the errors to disappear.
If it doesn't work, delete everything inside the /gen/ folder
If it still doesn't work, try right-clicking your project -> Android Tools -> Fix Project Properties.
Check your *.properties files (in the root folder of your app folder) and make sure that the links in there are not broken.
Right-click your project > properties > Android. Look at the Project Build Target and Library sections on the right side of the page. Your Build Target should match the target in your AndroidManifest.xml. So if it's set to target 17 in AndroidManifest, make sure that the Target Name is Android 4.2. If your Library has an X under the reference, remove and re-add the library until there's a green tick. This might happen if you've moved a few files and folders around.
What to do if R doesn't regenerate
This usually happens when you have a broken XML file.
Check errors inside your XML files, mainly within the /res/ folder
Common places are /layout/ and /values/, especially if you've changed one of them recently
Check AndroidManifest.xml. I find that often I change a string and forget to change the string name from AndroidManifest.xml.
Check that Android SDK Build-tools is installed. Window -> Android SDK Manager -> Tools -> Android SDK Build-tools
Make sure when you update the Android SDK Tools, you also update the Android SDK Platform-tools and Android ADK Build-tools. Build fails silently if they don't match.
If you can't find the issue, right click /gen/ -> Restore from local history... -> tick R.java -> click Restore. Even if it doesn't solve the problem, it will clear out the extra errors to make the problem easier to find.
This site suggests:
if you run a clean on the project it should regenerate all the generated Java files, namely R.
...and...
In Eclipse, under the Project menu, is an option build automatically.
That would help you build the R.java file everytime modifications are
made. The Clean... option is also there under Project.
This site suggests another solution.
I had the same issue. When I checked it out I found that the name of the XML resource under layout was not having the correct naming convention. It had some capital letters. So I renamed it to make all letters lowercase and the magic worked.
One reason the R.class can go missing suddenly is when there are errors in you XML files. For instance, when you add an XML file with uppercase letters in the name like myCoolLayout.xml which is not allowed. Or when you have references that don't point to existing files, etc.
In Eclipse, simply use Project --> clean to clean the project. The
R.java is going to be automaticly (re)-created.
If for some reason that dosn't work: Make sure your layout.xml files don't contains errors. Eclipse seems to be a bit buggy here: sometimes it doesn't mark the errors within the XML nor the package explorer. In such a case: Take a look at the "console" or "problems" view after using "clean". All errors should be displayed there. Fix them and redo a clean.
NOTE: It is NOT neccessary to fix the errors you get because of a missing R file! Just fix the XML files and other project errors and use clean!
Quick fix:
The package name in the manifest needs to be the same as the one in the /src folder, the /gen folder package will be automatically reproduced.
Detailed observation:
Observe the name of package in the /gen folder. In my case it was different than the one in the /src folder.
The package referenced in the manifest was that of the /gen folder.
I attempted to add a package with the name of the /src folder to the /gen folder too see what would've happened, but this did not solve the issue. I proceeded then to remove the package name that was not the same as the package name of the /src folder. This package with the name that did not correspond to the /src folder was recreated as soon as I removed it.
Since the package reference in the manifest corresponded to the one that was being senselessly recreated and that did not correspond with the package in the /src folder, this prompted to rename package = "oldPackage" with the package = "srcFolderPackage".
I had the same issue, and I finally found the problem: In the strings.xml, I did not keep the line <string name="app_name">program-name</string> which is present by default when creating a new Android project. I thought it was only used for the program HelloWord, which is the original program.
However, the AndroidManifest.xml refers to this value, hence:
=> A compile error;
=> the R.java isn't updated;
=> ID are not recognized...
Android has added in SDK build tool ADT 22 for the building mechanism. You just need to do the following steps.
Update Android SDK Tool
Update Android SDK Platform Tool
Update Android SDK Build Tool
Add the path of your build tool to the path variable. (path up to---- YOUR DIRECTORY-PATH\android-sdk\build-tools)
This will solve the issue.
If your R.java isn't getting generated, one of the solutions is to delete the layout file named "blabla.out.xml".
After deleting this file, try cleaning the project from menu Project -> Clean.
As a generalization of Glaux's answer, if you have any errors in the res directory, then R.java may not generate - even if you clean and rebuild. Resolve those errors first.
As an example: when you add an image file of say, "myimage-2.jpg", the system will consider this an error, since file names are limited to alphanumeric values. Do a refresh on your 'res' directory after adding any files and watch the output in your console window for any file name warnings.
If your OS is Ubuntu, I can provide some suggestion:
Install or upgrade ia32-lib:
sudo apt-get upgrade ia32-libs
Check if you have the right permission on the aapt folder:
cd ANDROID/adt-bundle-linux-x86_64-20130522/sdk/build-tools/android-4.2.2
chmod 777 aapt
Start Eclipse:
sudo eclipse
Run Project -> Clean in Eclipse
You 100% have an error in an XML-file, but the XML verification does not show you the error. This is the reason why you need to check your XML files first!
It is ALWAYS helpful to take a look at the Problems Tab in Eclipse. In my case, I was getting a "android unable to resolve target 'android-8'" error message that kept the R.java from being generated. So, I corrected the imported target to the one I was using in the default.properties file, then I performed a clean via Projects->Clean and voila! R.java is automatically generated! Hope it helps!
Cleaning project, closing Eclipse, re-opening it and launching my project finally made my R.java to reappear... Hope it helps
Make sure you are not importing
android.R;
R.java will never be generated if there are any errors in the res folder. For example, in the drawable subfolder there are two files which have the same name, one is icon.png and the other is icon.html.
You can see some error in the Eclipse console log window which is saying "Resource entry icon is already defined.". After deleting icon.html, you can clean or just delete the gen folder. You will find that R.java is created.
I've found that any file that has capital letters in the res folder will create this error. This happened to me with a PNG file I added and forgot about.
After reading through many posts and YouTube videos, I found that each of us have R.java missing for different reasons.
Here's how I fixed this in Eclipse:
Create R.java in gen folder manually and save.
After that go to Project and click "Clean"
The following message will display and your file will automatically be rewritten:
R.java was modified manually! Reverting to generated version!
For me, I had linked v7 appcompat twice. Anyhow, in Eclipse, right click the project name in Package Explorer or Navigator, go to Properties, Android, and uncheck any duplicates in the Library section. You may need to Build --> Clean afterwards.
There's obviously no one final answer to this, but here's another one I don't see here already:
I've had R.java disappear after (attempting) a Team Synchronize, and there were conflict resolution files in the project (i.e., thingy.xml.mine,thingy.xml.r35, etc.). Deleting them/resolving the conflicts regenerated R.
I had this problem. Accidentally I deleted this
xmlns:tools="http://schemas.android.com/tools"
which started causing build errors all over the project in my XML files as well as my Java files. As soon as I retyped what I deleted, it worked again :)
OK so it's clear that there can be a lot of causes for this problem. If you're on a 64 bit linux machine and you are just setting up the ADT for the first time, you may get this problem where R is not automatically generating. Check the console tab and you may see an error similar to:
'No such file or directory' while attempting to get adb version from '/home/patrick/code/android-sdks/platform-tools/adb'
If that's the case you need to install ia32-libs, using something like:
sudo apt-get install ia32-libs
See here for details: Android adb not found
I've came across this problem a few times. I found that if I didn't import the package R through my application's name, for example, if my application had the package name example.test then I found that I had to import example.test.R in order to access any of the resources.
If this wasn't imported then the resources that where getting returned were the default resources with none of my own included.
With that said if you find that you are only getting a list of default resources then just check to make sure that you're importing application_package_name.R and not android.R.
My problem was that appcompat was not in the same directory as my project.
I found this out when compiling my app with Ant.
Also make sure that you have the latest version of the ADT plugin, and open the Android SDK manager to update all SDK tools to the latest version. Check for updates in Eclipse itself as well. Non-matching versions caused the problem for me.
My problem was inside a menu file.
The compiler doesn't seem to warn you if strings which do not exist inside strings.xml are referenced in menu files. Check if your items in your menu XML files reference any strings which do not exist in your strings.xml. Usually in android:title.
For me, this error was caused when I tried to duplicate an existing res/menu instead of creating one with the wizard.
All of these answers could not work if you use Maven. The solution for me was to add
<genDirectory>${project.basedir}/gen</genDirectory>
to the configuration section of android-maven-plugin.
I found a solution why R.class is not made by Eclipse after making it again - 2 clean, build, etc.
The problem is here in strings.xml:
<string name="hello">Hello World, HelloAutoComplete!</string>
<string name="app_name">HelloAutoComplete</string>
These are by default created by Eclipse when you create projects.
Definitely you are changing the strings.xml for your own requirement. Sometimes you clear the string.xmls these two lines from your code:
It is making a problem in the AndroidManifest.xml file:
<application android:icon="#drawable/icon" android:label="#string/app_name">
<activity android:name=".HelloAutoComplete" android:label="#string/app_name">
So it can't communicate with strings.xml.
I changed my layout XML file name and found out later that of the XML file (widget provider in this case) still refers to the old layout XML which doesn't exist, and that prevented the auto generation/correction of R class.