Android Studio无法解析导入的AAR模块中的符号

时间:2015-03-16 16:01:40

标签: android android-studio gradle showcaseview aar

类似问题中的所有答案都谈到了manderally编辑gradle文件。但是我已经使用Android Studio导入AAR文件并检查了build.gradle文件,它们看起来都是正确的。

我的问题是:

failed imports

我已导入ShowCaseView v5.0.0 AAR,但是当我尝试导入Tutorial.java文件中的类时(您可以看到红色),Android Studio无法识别这些类。 Android Studio识别的唯一导入是com.github.amlcurran.showcaseview.R

我也尝试过清洁&重建项目,并关闭&重新打开Android Studio,但它没有帮助。

P.S。请忽略丢失的XML文件,就像我将它们复制到项目之前一样。

Gradle文件

ShowCaseView-5.0.0>的build.gradle:

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

我的应用的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')
}

Android Studio项目的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()
    }
}

gradle设置文件settings.gradle:

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

3 个答案:

答案 0 :(得分:3)

最近,我遇到了同样的问题。我有一个AAR导入我的项目。该库仅作为AAR分发 。我通过将我的AAR文件放在libs/文件夹中并在我的应用程序模块的gradle中添加了以下行来解决它:

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

您还可以添加多个AAR:

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

如果您使用的是Gradle 3.0.0或更高版本,则可能需要使用compile替换implementation

implementation files('libs/theFirstLib.aar')

像魅力一样工作!

注意:导入AAR有时会导致另一个"无法解析符号"错误,我在Android Studio和Gradle不同意时解决here

答案 1 :(得分:1)

您需要在项目的build.gradle文件中指定“ShowCaseView-5.0.0.aar”的位置。 E.G,ShowCaseView-5.0.0.aar文件位于项目根目录下名为“libs”的文件夹中,更新build.gradle文件以添加以下内容

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

答案 2 :(得分:-1)

我知道以这种方式导入AAR文件的人几乎为零,我不知道它是否正常工作。你的结果表明它没有。

切换到从Bintray的JCenter中拉出图书馆:

步骤1:将compile project(':ShowCaseView-5.0.0')替换为compile 'com.github.amlcurran.showcaseview:library:5.0.0'

第2步:从, ':ShowCaseView-5.0.0'

中删除settings.gradle

步骤3:删除ShowCaseView-5.0.0目录