Android Studio не обнаруживает библиотеки поддержки при компиляции

Поскольку Android Studio будет IDE по умолчанию для разработки Android, я решил перенести существующий проект в Android-студию. Структура проекта выглядит иначе, и иерархия папок в моем проекте выглядит следующим образом:

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-файлы, используемые в проекте. Он на удивление не содержит jar android-support-v4, который присутствовал в моем проекте Eclipse. Таким образом, кажется, что внешняя папка библиотек в корне должна позаботиться об этом.

Но после импорта, когда я попытался скомпилировать, проект начал выдавать "Ошибка символов не найдена" для некоторых классов, связанных с библиотекой поддержки Android.

Например: автозаполнение в Android Studio дает мне предложение для NotificaitonCompat от android.support.v4.app.NotificationCompat, но когда я пытаюсь скомпилировать мой модуль Project, он говорит

Ошибка:(17, 30) ошибка: не удается найти класс символов NotificationCompat Ошибка: не удалось выполнить задачу ':app:compileDebugJava'.> Ошибка компиляции; см. вывод ошибки компилятора для деталей.

Это происходит и во многих других классах для той же библиотеки поддержки. Я попытался вставить банку и изменил то же самое в build.gradle для MainProject, но ошибка сохраняется.

Я даже попытался перезапустить и собрать проект снова, но ничего не изменилось.

РЕДАКТИРОВАТЬ: я прилагаю файл Gradle внутри MainProject

build.gradle в модуле MainProject

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 ответа

Эта часть вашего файла сборки:

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

говорит системе сборки игнорировать support-v4, поэтому она не компилируется. Удалить это.

В вашем файле сборки у вас есть это, что является правильным способом включить поддержку:

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

Если у вас есть jar-файл библиотеки поддержки в каталоге libs любого из ваших модулей, удалите его и убедитесь, что вы ссылаетесь на него таким образом - если вы включите библиотеку в качестве jar, вы, вероятно, столкнетесь с проблемой, когда банка включена несколько раз, что приведет к ошибке dex.

Если у вас есть jar-файлы в каталоге '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
}

Надеюсь это поможет!

Другие вопросы по тегам