Android Studio未在编译时检测支持库

时间:2015-01-08 07:41:16

标签: java android eclipse android-studio

由于Android Studio将成为Android开发的默认IDE,我决定将现有项目迁移到Android-studio。项目结构似乎不同,我的项目中文件夹的层次结构如下:

Complete Project
 ->.idea
 -> build
 -> Facebook SDK
 -> MainProject
 -> ... (Other Libraries)
 build.gradle
 local.properties
 settings.gradle
 ...
External Libraries
 -> Android API 8 Platform
 -> Android API 18 Platform
 -> Android API 19 Platform
 -> 1.7 Java
 -> support-v4-19.1.0

我的MainProject有一个libs文件夹,其中包含项目中使用的不同jar。令人惊讶的是,它不包含我的eclipse项目中存在的android-support-v4 jar。因此,似乎根目录下的外部Libraries文件夹必须处理它。

但是在导入之后,当我尝试编译项目时,开始为所有与android支持库相关的某些类抛出“Symbol not found error”。

例如:Android Studio中的自动完成功能为我提供了来自android.support.v4.app.NotificationCompat的NotificaitonCompat的建议,但当我尝试编译我的项目模块时,它说

错误:(17,30)错误:找不到符号类NotificationCompat错误:任务':app:compileDebugJava'的执行失败。>编译失败;有关详细信息,请参阅编译器错误输出。

对于同一个支持库,在许多其他类中也会发生这种情况。我试图插入一个jar并在mainProject的build.gradle中更改了相同的内容,但错误仍然存​​在。

我甚至尝试重新启动并再次构建项目,但没有任何改变。

编辑: 我在MainProject中附加了Gradle文件

MainProject模块中的

build.gradle

apply plugin: 'com.android.application'

android {
compileSdkVersion 19
buildToolsVersion "21.1.2"

defaultConfig {
    applicationId "package.app"
    minSdkVersion 8
    targetSdkVersion 19
}

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    }
}
}

configurations {
all*.exclude group: 'com.android.support', module: 'support-v4'
}

dependencies {
compile project(':facebookSDK')
compile project(':library')
compile project(':volley')
compile 'com.google.android.gms:play-services:+'
compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'
compile 'com.android.support:support-v4:19.1.0'
compile files('libs/FlurryAnalytics_3.3.3.jar')
compile files('libs/universal-image-loader-1.8.4.jar')
....
}

2 个答案:

答案 0 :(得分:1)

构建文件的这一部分:

configurations {
all*.exclude group: 'com.android.support', module: 'support-v4'
}

告诉构建系统忽略support-v4,这就是它不编译的原因。删除它。

在您的构建文件中,您有这个,这是包含支持的正确方法:

compile 'com.android.support:support-v4:19.1.0'

如果您的任何模块的 libs 目录中有支持库jar文件,请将其删除并确保以这种方式引用它 - 如果您将库包含在jar中,你可能会遇到多次包含jar的问题,这会导致dex错误。

答案 1 :(得分:0)

如果你有一个' libs'目录,您可以在build.gradle文件中指定它:

dependencies{
    compile fileTree(dir: 'libs', include: ['*.jar']
    compile 'com.android.support:support-v4:21.0.3'  //to automatically add up-to-date support lib
}

希望这有帮助!