Android Studio cannot resolve symbols from importe

2019-01-15 19:03发布

问题:

All of the answers in similar questions talk about manunally editting gradle files. But I've used Android Studio to import the AAR file and checked the build.gradle files and they all seem correct.

My problem is this:

I've imported ShowCaseView v5.0.0 AAR but when I try to import the classes in my Tutorial.java file (you can see in red) Android Studio doesn't recognise the classes. The only import that Android Studio recognises is com.github.amlcurran.showcaseview.R.

I've also tried to clean & rebuild the project, and close & reopen Android Studio but it doesn't help.

P.S. please ignore the missing XML files as that was before I copied them into the project.

Gradle files

ShowCaseView-5.0.0 > build.gradle:

configurations.create("default")
artifacts.add("default", file('ShowCaseView-5.0.0.aar'))

My app's build.gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    defaultConfig {
        applicationId "com.giraffeweather"
        minSdkVersion 19
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:21.0.3'
    compile project(':ShowCaseView-5.0.0')
}

The Android Studio project's build.gradle:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.1.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

The gradle settings file settings.gradle:

include ':app', ':ShowCaseView-5.0.0'

回答1:

I know of approximately zero people who import AAR files this way, and I have no idea if it even works properly. Your results suggests that it does not.

To switch to pulling the library from Bintray's JCenter:

Step #1: Replace compile project(':ShowCaseView-5.0.0') with compile 'com.github.amlcurran.showcaseview:library:5.0.0'

Step #2: Delete , ':ShowCaseView-5.0.0' from settings.gradle

Step #3: Delete the ShowCaseView-5.0.0 directory



回答2:

Recently, I encountered this very same issue. I had an AAR to import into my project. The library was distributed only as AAR. I resolved it by putting my AAR file inside libs/ folder and added the following line in my app module's gradle:

dependencies {
    ...
    compile files('libs/theFirstLib.aar')
}

You can also add multiple AARs like so:

dependencies {
    ...
    compile files('libs/theFirstLib.aar', 'libs/theSecondLib.aar')
}

If you are using Gradle 3.0.0 or higher, you may need to substitue compile with implementation:

implementation files('libs/theFirstLib.aar')

Worked like a charm!

NOTE: Importing an AAR sometimes results to another "cannot resolve symbol" error, which I resolved here when Android Studio and Gradle don't agree.



回答3:

You need to specify the location of "ShowCaseView-5.0.0.aar" in project's build.gradle file. E.G, the ShowCaseView-5.0.0.aar file is in a folder named "libs" under project's root directory, update you build.gradle file to add following

allprojects {
    repositories {
        flatDir {
            dirs 'libs'
        }
    }
}