Gradle ошибка с проектом Android, добавленным в виде библиотеки (SlidingMenu) [пакет не существует]
Я никогда не использовал Gradle, прежде чем я полностью потерялся!
Я добавил SlidingMenu в качестве библиотеки, и у меня есть доступ из моего проекта ко всему материалу SlindingMenu, но попытка скомпилировать даст мне эту ошибку:
Gradle: package com.jeremyfeinstein.slidingmenu.lib does not exist
Я использую Android Studio (так IntelliJ), и это мой gradle.build
buildscript {
repositories {
maven { url 'http://repo1.maven.org/maven2' }
}
dependencies {
classpath 'com.android.tools.build:gradle:0.4'
}
}
apply plugin: 'android'
dependencies {
compile files('libs/android-support-v4.jar')
}
android {
compileSdkVersion 17
buildToolsVersion "17.0.0"
defaultConfig {
minSdkVersion 8
targetSdkVersion 17
}
}
Заранее спасибо
Ответы
Ответ 1
Предполагая, что вы добавили SlidingMenu.jar в папку libs, щелкните по нему правой кнопкой мыши → Добавить как библиотеку. Затем измените значение gradle.build:
До:
dependencies {
compile files('libs/android-support-v4.jar')
}
После:
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
}
Это будет включать все ваши файлы jar.
Ответ 2
У меня была та же проблема. Добавление скользящего меню-lib с помощью gradle -build в качестве библиотеки Android помогло мне.
Моя структура проекта такова:
-MyDemoProject
-build.gradle
-settings.gradle
--MyDemo
--build.gradle
--libs
---sliding-menu-lib
----res
----src
----AndroidManifest.xml
----build.gradle
--src
Чтобы все файлы, работающие с вашими настройками, должны иметь следующее содержимое:
include ':MyDemo' ':MyDemo:libs:sliding-menu-lib'
Здесь есть трюк, который позволяет избежать ошибок при построении проекта с помощью gradle с помощью Android Studio, так как согласно Руководство по Android-инструментам вы должны использовать ':libs:sliding-menu-lib'
, но это не работает из-за проблемы с относительными путями projectDir.
Ваш MyDemo/build.gradle
должен содержать зависимости типа:
dependencies {
compile 'com.android.support:support-v4:18.0.0'
...
compile fileTree(dir: 'libs', include: '*.jar')
compile project(':MyDemo:libs:sliding-menu-lib')
}
И ваш sliding-menu-lib/build.gradle
должен выглядеть следующим образом:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.5.+'
}
}
apply plugin: 'android-library'
android {
compileSdkVersion 14
buildToolsVersion "18.0.1"
defaultConfig {
minSdkVersion 9
targetSdkVersion 14
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
}
}
dependencies {
compile 'com.android.support:support-v4:18.0.0'
}
Наиболее важная часть относится к разделу sourceSets
, так как вам может не потребоваться изменение структуры файла sliding-menu-lib
(не по умолчанию для текущего gradle)
Ответ 3
Я добавил все свои предыдущие библиотеки, используя инструмент импорта по умолчанию из исходного инструмента. Для SlidingMenu я использовал импорт с Maven, затем удалил все зависимости от Maven из Project Settings для SlidingMenu и повторно импортировал библиотеки поддержки. Мне показалось, что для меня это очень важно.
Ответ 4
Если модуль является только библиотекой, а не автономным, она gradle должна содержать
apply plugin: 'android-library'
вместо
apply plugin: 'android'
Ответ 5
Вы можете синхронизировать проект с Gradle файлами:
Инструменты → Android → проект синхронизации с Gradle файлами
Ответ 6
Недавно найдено лучшее решение для SlidingMenu отдельно:
Вы можете добавить SlidingMenu как сгенерированный файл @aar, если вам не нужно вносить какие-либо изменения в него. Просто используйте https://github.com/jzaccone/SlidingMenu-aar и внесите изменения, как в файле Readme.
Будьте осторожны с порядком репо. Это должно быть выше mavenCentral()