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 added the following dependency to to build.gradle file in Android Studio and resync-ed the project successfully:
compile 'se.emilsjolander:stickylistheaders:2.1.3'
However I was unable to use any of the class in this library. Feeling strange I opened the source tree and see if there's anything wrong. I noticed the following:
You can see Android Studio can found the available classes for other downloaded archives, but not the one I mentioned in this question. The classes.jar file is reported empty.
I tried adding an older version of the stickylistheaders library (2.1.3). Still an empty classes.jar.
When I start this question I found a similar post here. But the author of that post tried to include the downloaded project in settings.gradle, and he finally managed to include the library through the "compile" directive. My problem is that I AM using the "compile" directive, but the downloaded archive has a "empty" classes.jar. I also tried adding the library mentioned in that question (i.e. 'se.emilsjolander:StickyScrollViewItems:1.0.0'). Also an empty classes.jar.
Some notes:
The actual classes.jar file found in build/exploded-bundles is not empty.
I tried cleaning the project. I suppose this will cause all dependencies be removed and re-downloaded. However, after that, Android Studio still cannot spot any class in stickylistheaders' classes.jar.
So far, this problem only exists for se.emilsjolander's libraries. Strangely, the answerer of this post1 posted a screenshot showing that he does see a non-empty classes.jar.
Update:
I also tried deleting .gradle's cache directory in my profile directory, clean the project and rebuild again. No luck.
I can unzip the classes.jar in question. Looks like the file isn't corrupt.
Anyone knows what's wrong here? Thanks.
I think I have found the cause: it should be a bug in Android Studio.
https://code.google.com/p/android/issues/detail?id=64008
In fact, the code can build and run despite seeing errors in Android Studio. So it is obviously an issue with Android Studio.
Update 27 Jan: It should have been resolved in Android 0.4.3. As from the release notes:
Fixed a bug around library syncing (where library dependency classes
and resources could suddenly not be found by the IDE)
Have you tried syncing your project with Gradle?
Tools -> Android -> Sync project with Gradle Files.
That should reload the build.gradle file and download the (missing) dependencies.
Try this once and make sure you are not getting any error in project Structure saying that "your_lib_name not used/added"
Open File > Project Structure
and check for erros. If error is shown click on it , it will expend the errors and will show some options on right, click on the Red bulb and choose "Add to dependency".
This seems be a bug in Studio which will be fixed in next release(Android Studio 0.4.3).
I have a project in Android Studio which compiles with Gradle.
The general file structure is
MyProject
- MyProjectSource
- Libraries
- ActionBarSherlock
My project is built with Gradle and will compile without issue. However in the lines within my activity where I include a component from ActionBarSherlock, Android Studio marks it as an error.
I have noticed that Android Studio has also generated .iml files. So my question: Does Android Studio ignore the gradle build when assessing whether something is valid syntax or not?
Obviously this is not a project blocking problem but it does slow velocity not being able to take advantage of the full set of tools Android Studio has to offer.
Thanks in advance for any help.
These are not errors actually, this a bug in Android studio( 0.4.2 ) for resolving the symbol and fixed for the next release( 0.4.3 ).
To get Rid of these until the release do the following
Clean your project using Build > Clean Project
Close your Android Studio
Take Backup of your project
Delete all .iml files inside your project
Delete content of .idea directory
Open Studio and wait until it completes the sync with gradle
Also verify if you are seeing any error in File > Project Structure . If there is any error saying "Dependency Not Added "click on that and using red bulb on right side Add them to dependency.
UPDATE
Android Studio 0.4.3 is available on Canary Channel Now.
UPDATE: #laochiv, I have found that cleaning manually the folder .idea/libraries and clicking afterward on "Sync Project with Gradle Files" solves the problem. Apparently this Sync does not remove elements, but keep the old ones and add the current ones. Probably a bug to report :)
I am having the same problem. However, I am using ABS directly from Maven.
dependencies {
compile 'com.actionbarsherlock:actionbarsherlock:4.4.0#aar'
compile 'com.android.support:support-v4:18.0.+'
}
Even the ABS Gradle Sample application marks a syntax error, although it compiles.
However, in another computer everything is working perfectly. I can not think of different conditions in each scenario.
"Does Android Studio ignore the gradle build when assessing whether something is valid syntax or not?" Yes. Android Studio imports the project configuration but runs its own compiler as you are editing and saving (you can even change it to the Eclipse ECJ compiler). The true authority on the build is Gradle, and AS is still in beta. You can try to run the gradle resync or close and reimport the project. I have had to manipulate AS like this many times, especially after making edits to build.gradle.
Edit: I have found it better to use ActionBarSherlock as a gradle dependency rather than a library directory.
compile 'com.actionbarsherlock:actionbarsherlock:4.4.0#aar'
You will need to use the SDK manager and install the local maven repository.
But it is possible to eventually get rid of these compile errors, as long as your build.gradle doesn't create any extra sourceSets that AS doesn't understand; try not to deviate too much from the android gradle plugin examples.
Also, I've been running the Canary updates of AS for the latest and greatest.
I don't know how to add a library using MavenCentral. I follow these steps to include a library
Add library in App_Name/App_Name/libs folder.
In App_Name/build.gradle add this
dependencies {
compile ---
compile files('libs/fileName.jar') }
./gradlew clean
Make sure your Android studio is updated.
Go through the link and it worked for me.
1.) Choose File option from menu on left top side of android studio.
2.) Select the option : "Invalidate Cache/ Restart.." It will open an dialog.
3.) Click on the first button with option : "Invalidate and Restart"
4.) It will close the studio and restart it. Start indexing of the project.
It resolved my problem
Go to File -> Invalidate Cache/ Restart -> Invalidate and Restart
Source
https://www.youtube.com/watch?v=FX_gCTpqhwM
I had this problem in Android Studio 4.2, it might be fixed on 4.3
I have noticed that adding some dependencies did not attach the classes.jar to the dependency, so Gradle recognises everything but the IDE doesn't. To fix it:
Open Module Settings of your project
Select the dependency that has the error
Click Add (+) for that dependency (bottom of the pop up)
Navigate to your-project/build/exploded-bundles/your-dependency/classes.jar
The IDE should recognise the files now
Hope it helps
I had this today and gradle update/sync didn't solve. But updating to latest version of Android Studio 2.2 update 5 fixed (was on 2.1).
Here i'm talking about android studio version v3.1.2 where this same issue happened.In later android studio version(above 3.0.1) this issue again rises. So, I solved this by going through few things and here is how
Close android studio first
Navigate to your Project Folder
Delete .gradle and .idea folder (.gradle and .idea is hidden files. so make sure you tick Show Hidden Files in your File Explorer option to see these files
Open your project in android studio now
This Time another issue (unsupported module) will arise, but don't worry. I got you
Goto File in android studio and hit Sync Project with Gradle Files
Tada..! you're done now!
Simplest Solution
Comment/Remove the dependency which is showing syntax error & Sync Project.
Uncomment/Add again & Sync Project.
Yeah! error gone...
Before
After
I am newbie in the world of android app development. I was creating a project Example on Android Studio. I have my LunchList.java file in src/main/java/apt.tutorial.lunchlist .Till yesterday Everything was working fine. But when I open android Studio today I got an error saying
"The modules below have been removed from Gradle structure. Check
those to be removed from the project too:"
☑ LunchList
☑ LunchList-LunchList
And there is OK and Cancel Button. I don't want to remove them. So I click cancel and proceed.
Then when I tried to run the application in emulator the emulator runs but nothing happens. And I got this error
Waiting for device.
Target device: emulator-5554 (Android)
ERROR: APK path is not specified for module "LunchList-LunchList"
I don't know what went wrong. Please help me.
[Edit: I tried unchecking both of them and click OK. But after that I'm not getting the first error but still getting the second error ]
Exit Android studio. Launch it with Administrator Privilege.
This solved the problem with Android Studio v0.1 in Windows 7.
I had the same issue, I unselected the 2 files and then received the error
"ERROR: APK path is not specified for module"
I just restarted Android Studio and reopened the project and then it worked normal again.
It is indeed a bug but there's a simple work around.
Here's what worked for me: delete .idea/ and *.iml files, then open a project again (as gradle project) - all the idea files will be recreated - and everything works fine
I had the same error with IntelliJ CE.
I fixed it by choosing "Inherit project compile output path" in the strong text imodule settings (Paths tab > Compiler output)
In my case, I imported the same project over again. Android Studio overrode the old settings. Then this error went away!
this happened when i update to 2.0. i had to change the dependencies in the build.gradle file under src dir not gradle dir. change from
dependencies {
classpath 'com.android.tools.build:gradle:0.4.0'
}
to
dependencies {
classpath 'com.android.tools.build:gradle:0.5.+'
}
Not sure how much help this will be, but I saw that same error this morning after updating to Android Studio 0.2.0. First, I needed to modifying my build.gradle file to indicate that the correct gradle plugin to use with my project was version 0.5.0 (rather than 0.4). After modifying build.gradle, I saw the "APK path is not specified for module .." error when attempting to build. I solved this by simply quitting and restarting Android Studio.
I had the same issue and found the solution.
Stackoverflow Question
this is the same way to fix the error
Also lower down in there is "SDKs" i also had to make them match.
Name and Build Target.
Hope it helps it did me. apparently the IntelliJ is what Android Studio is.
I've found that the issue is usually if you've changed or moved the folder to a different location.
If you open up the .idea folder in AndroidStudio, have a search for any reference to the old location. If you find some, just replace with the new location. It would seem some of the lines are hardcoded.
There is a manual "how to move project" here
I moved progect, got your problem, followed this manual, got window like you and choose "OK".
And now it works very well.
It helped me to set the right SDK...
I used the one in Program Files, what did not work!
Then i found out to use the following SDK (set in local.properties):
sdk.dir=C:/Program Files (x86)/Android/android-studio/sdk
Hope this helps...
I find this:
http://www.chrisdew.com/blog/2013/07/17/android-studio-nosuchmethoderror-lazystringarraylist/
it is realy help for me.
Thus, in my case, the problem was to have two libraries:
protobuf-2.4.1.jar
and new protobuf-2.5.0.jar
it resulted error:
APK path is not specified for module “Example-Example”
To correct this, rename file protobuf-2.4.1.jar to protobuf-2.4.1.jar.disabled
mv protobuf-2.4.1.jar protobuf-2.4.1.jar.disabled
Finally! Updated solution found here:
Android APK path is not specified for module
Open Project structure
Click on Modules tab
Expand your project and click on Android
On right side click on Compiler tab
Looking for "APK path" field
Enter your project root folder, i.e. /Users/bla/project/my.apk
Click Apply and Ok