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()