Android Studio - синхронизация зависимостей MavenCentral в порядке, но символ не может быть разрешен

Итак, мне удалось создать компонент библиотеки Android и опубликовать его на Maven Central. Но когда я пытаюсь использовать его как зависимость в новом проекте, Android Studio не может найти классы.

build.gradle для модуля приложения:

repositories {
    mavenCentral()
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:21.0.3'
    compile 'no.hyper:libdateintervalpicker:1.0.0' //this is the one I want to use
}

Эта часть, кажется, работает, по крайней мере, я не получаю ошибок синхронизации. Однако при попытке получить доступ к пакету и классам из моей MainActivity Android Studio не может их найти и выдает сообщение «не удается разрешить символ».

Я попытался загрузить class.jar из архива прямо из Maven Central, и они действительно есть в пакете.

Другие зависимости появляются в папке /build/intermediates/exploded-aar после синхронизации, но этого не происходит с моей библиотекой.

Я использую Android Studio 1.0.2 на OSX 10.9.5 (Mavericks).

Какие-либо предложения?


person SirMarino    schedule 04.02.2015    source источник


Ответы (2)


Глядя в свой помпон, там указано <packaging>aar.asc</packaging>. Вместо этого должно быть aar.

person JBaruch    schedule 04.02.2015
comment
Кстати, почему вы ввязались во все эти страдания с Maven Central, когда вы могли просто использовать Bintray jcenter? - person JBaruch; 04.02.2015
comment
Потому что еще пару часов назад я думал, что Maven Central - это то место, куда можно пойти, но теперь я также посмотрю на jCenter. - person SirMarino; 04.02.2015
comment
Круто :) Мое решение помогло? Re jcenter, также взгляните на здесь вы можете легко получить и то, и другое. - person JBaruch; 04.02.2015
comment
Ну, ваше решение поставило меня на путь, который привел меня к этот поток, который, похоже, является той же проблемой, и я также нашел других, указывающих, что это либо Android Studio, либо Maven Central/Sonatype, которые испортили процесс. - person SirMarino; 04.02.2015

О, и ответом на фактическую возможность использования библиотеки было добавление @aar к зависимости, чтобы теперь она читалась

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:21.0.3'
    compile 'no.hyper:libdateintervalpicker:1.0.0@aar' //note the magic @aar
}

Изменить: удаление блока

configurations {
    archives {
        extendsFrom configurations.default
    }
}

заставляет Gradle генерировать pom с правильной записью упаковки и, таким образом, позволяет ссылаться на зависимость без суффикса @aar

person SirMarino    schedule 04.02.2015
comment
Это не решение, это обходной путь. Если вы не добавите тип, Gradle попытается получить тип, указанный в pom.xml, что неверно (см. мой ответ). Вы можете заставить Gradle игнорировать тип в pom, явно добавив его, как вы это сделали, но реальным решением будет исправление pom. - person JBaruch; 08.02.2015
comment
Ну тогда вопрос зачем?. На самом деле я не трогал pom, но указал упаковку «aar» моего блока pom.project в build.gradle. Я предполагаю, что это означает, что система упаковки Gradle сломана? - person SirMarino; 09.02.2015
comment
Хм. Вы указываете aar, а он генерирует aar.asc в сгенерированном pom.xml? Вы позитивны? Если это так, это ошибка в Gradle. Возможно, вам следует сообщить об этом и использовать обходной путь, пока он не будет исправлен. - person JBaruch; 09.02.2015
comment
Да, я уверен, это похоже на ошибку в Gradle. Смотрите мой отредактированный ответ для другого решения/обходного пути. - person SirMarino; 13.02.2015