Android Studio inline compiler showing red errors, but compilation with gradle works fine
I've set up my project in Android Studio to use the Square Wire library, as per this question.
Build
-> Compile Project
works fine.
2:03:10 PM Compilation completed successfully in 31 sec
However, if I open one of my generated Protocol Buffer files, then the Square package is not being recognized.
Another symptom is that methods inherited from the Square Message
class are showing as "Cannot resolve method" compile errors in the editor, even though they build and run fine.
Do I need to do something more than just adding the dependency in build.gradle
for my module in my project?
Solution 1:
The following steps helps
- Close your project, and in your project folder delete
project/.idea
- Delete
~/.gradle
folder.
Open the project again. Everything should be solved.
Solution 2:
Thanks to free3dom for getting me on the right track here.
Diagnosis
The Sync Project with Gradle Files
option in Android Studio seems to keep the Project Structure
libraries up to date.
However, in my case there were some errors:
Expanding the (not very obvious) link showed the detail. My wire-runtime library was showing in an incorrect location:
This seemed to be a hangover from my original configuration where I had imported the JAR into a libs folder.
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
}
I subsequently changed it to be imported directly from Maven Central (as per here), and it seems that the old setting was never overwritten with the new one.
The Fix
The fix is to delete the library dependency from the Project Structure
screen and then Sync Project with Gradle Files
again.
More Detail
You can also see what path is being used to the resource by opening the .idea/libraries/wire_runtime_1_2_0.xml
directly.
My broken one was:
<component name="libraryTable">
<library name="wire-runtime-1.2.0">
<CLASSES>
<root url="jar://$PROJECT_DIR$/MY_MODULE/libs/wire-runtime-1.2.0.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
After deleting and re-adding the library it changed the root url
to:
<root url="jar://$USER_HOME$/.gradle/caches/artifacts-26/filestore/com.squareup.wire/wire-runtime/1.2.0/jar/44e7acbd5eb6f29698181dc3d67a60acf7efee80/wire-runtime-1.2.0.jar!/" />
Update
Android Studio v0.4.4 apparently fixes other bugs which have the same symptoms, so if you have an older version you may wish to upgrade.
Solution 3:
Simple Solution
Go through the link and it worked for me.
- Choose
File
option from menu on left top side of android studio. - Select the option:
Invalidate Cache/Restart
It will open an dialog. - Click on the first button with option:
Invalidate and Restart
- It will close Android Studio and restart it. Also, it will start re-indexing the project.
It resolved my problem
Go to File > Invalidate Cache/Restart > Invalidate and Restart
Source here for youtube
Solution 4:
1) Click on the gradle icon (right side on the android studio)
2) Click on the refresh button and wait for the issue to be resolved :D
Solution 5:
I was still having the same problem with Android Studio v3.2.1 constantly, and sorted out the problem just removing these two sub-folders of the .idea
folder (no need to delete the whole .idea
folder) while a gradle sync didn't work:
./idea/caches
./idea/libraries