2014-11-09 35 views
9

Вот моя структура проекта развития:Как выпустить AAR с другой зависимостью проекта библиотеки Android?

 
projectFolder 
    | 
    +--App 
    | 
    +--MyLib 
    | 
    +--Libraries 
     | 
     +--LibA 

MyLib зависит от Либа, я упакована MyLib как AAR и выпустить его в репозиторий Maven, но когда я включаю MyLib в другом проекте (TestProj) в качестве удаленной зависимости AAR, я получаю ошибку построения (не может разрешить зависимость Lība, Lība не входит с выпуском MyLib), Это build.gradel в папке приложения TestProj:

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile ('xxx.xxxxxx:yyyyy:[email protected]'){ 
     transitive = true 
    } 
} 

А вот build.gradle из MyLib:

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile project(':Libraries:LibA') 
} 

Как я могу освободить MyLib с LibA уже упакован в AAR?

+0

В этой же проблеме. При удаче? – lostintranslation

+0

@ lostintranslation, я отправляю ответ, надеюсь, что это поможет. – FlyingHorse

ответ

4

Ответьте на вопрос самостоятельно. в конце концов я изменил build.gradle в MyLib к:

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    provided project(':Libraries:LibA') 
} 

так Lība будет использоваться только в процессе сборки MyLib, TestProj не будет просить Lība больше во время компиляции. ПРИМЕЧАНИЕ. Это может вызвать NoClassDefFoundError во время выполнения, поэтому вы должны сообщить ребятам, которые использовали вашу библиотеку, чтобы включить сами LibA в build.gradle своего проекта.

Сначала я искал метод для упаковки Lība с MyLib, но это, кажется, вольно сложном.

См. Этот вопрос: Android Studio how to package single AAR from multiple library projects?

+0

POM MyLib должен иметь LibA, объявленный как зависимость, которая должна решить проблему. –

+0

LibA - это проект библиотеки, и он не находится на центральном уровне, если другие люди хотят использовать MyLib, как можно автоматически разрешить зависимость? – FlyingHorse

+0

Он должен быть опубликован в каком-либо публичном или внутреннем хранилище Maven. Если это проект OSS, Bintray предлагает личный репозиторий Maven бесплатно. –

Смежные вопросы