Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Как включить зависимости в мою библиотеку Android

Автор вопроса: glogicОтветов: 2

Я пишу Android SDK, и теперь я хочу его распространять, но у меня проблемы с его зависимостями. Я использую Gradle и Android Studio.

Мой sdk зависит от volley и gson, и я добавляю их как банки в свой sdk. Всякий раз, когда я пытаюсь создать aar или jar для использования в отдельном клиентском приложении, я всегда получаю сбой, когда мой SDK пытается сослаться на залп, поскольку он не был включен ни в aar, ни в jar. Любые идеи о том, как я должен это делать? Я без особого успеха пытался создать толстые банки.

Я также пытался использовать удаленные зависимости, как показано ниже, но даже после сборки gradle в клиентском приложении ни volley, ни gson по-прежнему не включены. В настоящее время это то, что у меня есть в моем sdk build.gradle.

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.mcxiaoke.volley:library-aar:1.0.0'
    compile 'com.google.code.gson:gson:2.3'
}

затем в клиентской сборке gradle у меня есть

repositories {
    flatDir {
        dirs 'libs'
    }
}


dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile(name:'mysdk-1.0.0', ext:'aar')
}

Я использую ./gradlew clean build для создания aar и jar моего sdk. Может ли кто-нибудь сказать мне, как правильно включить зависимости в мою собственную библиотеку?

  • Это очень краткий и ясный вопрос. Он отражает именно то, что я хотел спросить, но не пришлось, потому что я нашел ваш! Престижность. Michael Krause 08.01.2016
  • Как вы это решили? Принятый ответ не сработал для меня. gaurav jain 26.02.2016

androidjavaandroid-gradle-plugin

Ответы

Ответ 1 · рейтинг 1 · joeblubaugh

В вашем клиенте измените блок зависимостей следующим образом:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile(name:'mysdk-1.0.0', ext:'aar') {
        transitive = true
    }
}

Это также должно подтянуть ваши транзитивные зависимости.

Ответ 2 · рейтинг 2 · Balazs Banyai

Если вы хотите включить транзитивные зависимости вашей библиотеки в клиентское приложение, вам необходимо создать соответствующий пакет, совместимый с maven, который содержит файл pom.xml. Этот pom будет описывать зависимости вашей библиотеки, чтобы клиент мог транзитивно извлекать эти зависимости, когда они включают вашу библиотеку.

См. это руководство: http://blog.blundell-apps.com/locally-release-an-android-library-for-jcenter-or-maven-central-inclusion/

Вам не нужно никуда загружать артефакт во время разработки, просто используйте локальный репозиторий maven в качестве цели и используйте mavenLocal() в качестве репозитория для своего клиентского приложения. Таким образом, вы сможете ссылаться на свою библиотеку как на стандартную зависимость maven, используя
compile 'com.mysdk:mysdk:1.0.0'

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы