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
}
Надеюсь это поможет!