При условии Gradle Зависимость AAR не JAR
У меня проблема, когда я пытаюсь включить библиотеку в мой проект под названием ParseLoginUI
.
Проблема заключается в том, что вместо компиляции используется предоставленный тег. Я считаю, что предоставленный тег означает, что проект должен предоставить эту зависимость, чтобы библиотека работала, а не эта библиотека, компилируя сами библиотеки.
Итак, в моей Android-библиотеке он ссылается на SDK для Facebook.
provided 'com.facebook.android:facebook-android-sdk:4.0.1'
Затем в моем мобильном /build.gradle, который является моим основным модулем, я компилирую файлы sdks Facebook так.
compile 'com.facebook.android:facebook-android-sdk:4.0.1'
Я слежу за руководством по установке этой библиотеки, и именно так вы собираетесь это делать. Вот предупреждение, которое я получаю, что мешает мне скомпилировать файл ParseLoginUI/build.gradle
(тот, который его предоставляет).
Warning:Project ParseLoginUI: provided dependencies can only be jars. com.facebook.android:facebook-android-sdk:aar:4.0.1 is an Android Library.
Документация для этой библиотеки имеет исправление, которое:
Если вы используете gradle 1.1.0 или выше, вы можете столкнуться "Предупреждение: Project ParseLoginUI: при условии, что зависимости могут быть только баночками. com.facebook.android:facebook-android-sdk:aar:4.0.1 - это Android Library". Это открытая проблема для инструмента сборки android gradle. рабочая область использует gradle 1.0.0.
Достаточно честный, но я не хочу понижать мою версию gradle (в настоящее время v1.2.3) только для решения этой проблемы. Должен быть способ обойти этот или лучший способ сделать это.
Мой вопрос
Как включить SDK Facebook в библиотечный модуль и мой основной модуль?
Ответы
Ответ 1
вы уже упоминали, что это открытая проблема в Gradle.
Если вы используете ParseLoginUI как библиотечный модуль.
Просто измените файл build.gradle в самом ParseLoginUI.
provided 'com.facebook.android:facebook-android-sdk:4.0.1'
to
compile 'com.facebook.android:facebook-android-sdk:4.0.1'
Ответ 2
Попробуйте следующее: http://www.labouisse.com/how-to/2014/07/28/gradle-provided-scope-and-intellij/
Он в основном имитирует предоставленную реализацию.
Ответ 3
В соответствии с этот вопрос, это должно быть возможно с Gradle плагином 1.3.0-beta3
. Возможно, вам придется обновить свои инструменты сборки до версии 23.0.0 rc1
или выше.
Ответ 4
После попытки и ошибки я нашел решение...
Прежде всего, AAR означает библиотеку архивов Android, которая не является JAR.
Я искал что-то под названием facebook-android-sdk-4.0.1.jar
, но не повезло.
Трюк - это скачать код facebook и добавить его в качестве модуля. Выполняя это, отлично работает, и вы можете использовать gradle 1.2.3 с ParseLoginUI.
Перейдите сюда:
https://developers.facebook.com/docs/android/downloads
Скачать:
https://developers.facebook.com/resources/facebook-android-sdk-4.0.1.zip
Декомпрессируйте его.
Перейдите к своему проекту.
-Удалить в ParseLoginUI gradle ссылку на Parse
Нажмите кнопку FILE, NEW, IMPORT MODULE.
Выберите папку под названием facebook, которая находится внутри сжатого zip файла.
Вызовите этот модуль facebook-android-sdk-4.0.1.
Теперь добавьте в свой parseloginui зависимость от этого модуля, используя:
compile project(':facebook-android-sdk-4.0.1’)
Вам также нужно скопировать файл из загруженного вами почтового индекса в новую папку модуля, файл gradle.properties. Тот, который имеет:
ANDROID_BUILD_MIN_SDK_VERSION=9
ANDROID_BUILD_TARGET_SDK_VERSION=21
ANDROID_BUILD_TOOLS_VERSION=21.1.2
ANDROID_BUILD_SDK_VERSION=21
Вот и все.
Нажмите SYNCHRONIZE и скрестите пальцы.
Я работал в своем случае через несколько часов, играя с gradle и андроид-студией.
Дай мне знать, если получишь.
Если у вас есть проблемы с ссылкой (у меня было), используйте FILE, PROJECT STRUCTURE, чтобы правильно добавить ссылки на ваши модули.
(Я написал их вручную, и, похоже, это была ошибка в моих ссылках на синтаксический анализ, возможно, один путь или символ, не знаю. Сделайте это, используя пользовательский интерфейс android studio, устраните проблему).
BTW, вы можете использовать версию parse в ParseLoginUI и еще одну более новую в своем проекте (я не тестировал ее для версии для facebook).
Это то, что у меня есть в файле ParseLoginUI gradle:
compile 'com.parse.bolts:bolts-android:1.2.0'
compile 'com.android.support:support-v4:22.0.0'
compile project(':facebook-android-sdk-4.0.1')
compile files('libs/Parse-1.9.1.jar')
compile files('libs/ParseFacebookUtilsV4-1.9.1.jar')
И это то, что у меня есть в приложении gradle:
compile 'com.google.android.gms:play-services:7.5.0'
compile project(':facebook-android-sdk-4.0.1')
compile 'com.parse.bolts:bolts-android:1.2.0'
compile files('libs/Parse-1.9.2/Parse-1.9.2.jar')
compile files('libs/Parse-1.9.2/ParseFacebookUtilsV4-1.9.2.jar')
compile project(':ParseLoginUI’)
Примечание. Я использую gradle версию 2.4 и версию Android 2.3.3 для Android. Selct, что в FILE, ПРОЕКТНАЯ СТРУКТУРА, ПРОЕКТ.
Удачи.
Ответ 5
Вы можете попробовать этот синтаксис:
(name: "", ext: 'aar')
Убедитесь, что ваш основной файл build.gradle имеет путь или maven repo для пакета aar, который вы хотите предоставить.
Ответ 6
вместо этого
-
Clone ParseLoginUI от здесь
-
Импортируйте ParseLoginUI в качестве модуля и включите их в gradle
compile project(':ParseLoginUI')
compile 'com.facebook.android:facebook-android-sdk:4.0.1'
Надеюсь, что это поможет
Ответ 7
У меня была эта проблема с каллиграфией (github.com/chrisjenx/Calligraphy) и gradle 2.3.3.
Я изменил репозиторий от jcenter() до mavenCentral(), и теперь это нормально!