Импорт Urban Airship в Android Studio вызывает проблемы с компиляцией?

Я новичок в Android Studio и хочу реализовать Urban Airship в одном из своих проектов. Я последовал примеру на их веб-сайте с файлом .aar и в итоге получил эту ошибку.

Error: [/Users/AndroidstudioProjects/MyApplication/app/build/intermediates/exploded-aar/com.urbanairship/urbanairship-lib/5.1.0/AndroidManifest.xml:8]
Invalid instruction 'overrideLibrary', valid instructions are : REMOVE,REPLACE,STRICT

Поправьте меня, если я ошибаюсь, но разве это не означает, что у них есть проблемы в их файле манифеста? Или я совсем не в теме? Если да, то есть ли у кого-нибудь хороший пример того, как это реализовать?


person soulkito    schedule 10.11.2014    source источник
comment
Может быть, версии Android меняются так быстро. Вместо этого попробуйте вариант REPLACE? Я уверен, что сам код, вероятно, в порядке.   -  person G_V    schedule 10.11.2014
comment
Да, конечно, но файл, упомянутый в этом журнале, является частью библиотеки urbanairship, а не моим манифестом. Внесение изменений в файл в /build/ перезаписывается при следующей сборке, верно?   -  person soulkito    schedule 10.11.2014
comment
Ах да, в этом случае вы, вероятно, можете только либо подать заявку на них, либо получить исходный код и скомпилировать его самостоятельно.   -  person G_V    schedule 10.11.2014
comment
Отправил им билет. И перекомпиляция кода кажется ненужной для того, что должно работать из коробки. Я предполагаю, что это мое единственное решение их поддержки, не дает мне лучшего варианта. Спасибо, в любом случае!   -  person soulkito    schedule 10.11.2014
comment
У меня такая же проблема. Они ответили на ваш тикет?   -  person jul    schedule 10.11.2014
comment
Да, мне сегодня ответили! Очевидно, вам нужно использовать плагин Gradle версии 13.3 или выше, чтобы он скомпилировался, как указано в других ответах. Это точно исправило мои проблемы.   -  person soulkito    schedule 14.11.2014


Ответы (3)


SDK Urban Airship создан для сервисов Google Play, для которых требуется Android API 9, а Urban Airship совместим с 6+. Вот почему нам нужна версия библиотеки переопределения. Какую версию плагина Android Gradle вы используете? Вам нужно использовать 13.3 или выше. См. http://tools.android.com/tech-docs/new-build-system. .

В файле build.gradle проектов:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.13.+'
    }
}
person ralepinski    schedule 13.11.2014
comment
Это исправило это для меня, я все еще был на 0.12. - person Gabriel; 14.11.2014
comment
Ага! Ответ на вопрос! Большое спасибо, ребята! - person soulkito; 14.11.2014

У меня была такая же проблема, и я смог ее исправить и построить свой проект:

Ошибочная строка — это строка 8 файла AndroidManifest.xml. Я просто удалил эту строку и изменил некоторые версии SDK.

Вы можете открыть файл urbanairship-lib-5.1.0.aar с помощью WinRar. Перейдите к манифесту. Откройте его и отредактируйте в своем любимом текстовом редакторе. Сохраните и закройте манифест. WinRar спросит, хотите ли вы обновить архив. Выберите Да!

Согласно этой странице, overrideLibrary используется, когда у вас есть версия minSDK в библиотеке > версия minSDK в вашем проекте. Таким образом, вместо этого можно скомпилировать другую версию без ошибок.

http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger#TOC-tools:overrideLibrary-marker

Удалить, заменить и т. д. сделать что-то немного другое (также описано на этой странице — прокрутите вверх).

Затем в файле build.gradle моих проектов я изменил номера версий, чтобы они соответствовали моему проекту:

Из этого

compile 'com.android.support:support-v4:21.+'

К этому

compile 'com.android.support:support-v4:19.+'

Было бы неплохо узнать, каков результат обращения в службу поддержки ОП. Пожалуйста, держите нас в курсе!

person RudebwaiG    schedule 11.11.2014
comment
Как бы вы сделали это в OS X? - person Matthew Reilly; 13.11.2014
comment
Попробуйте изменить расширение .aar на .zip. Затем откройте и измените файл, как указано выше, сохраните новый zip, а затем переименуйте обратно в aar. Кроме того, пожалуйста, НЕ делайте последний шаг в моем посте выше. Это поможет сборке проекта, но затем он рухнет каждый раз, когда будет получен толчок. Вместо этого используйте v4:21.0.0, а не v:21.+, которая может получить пакет поддержки RC и запретить более низкие цели сборки. Я не понял этого в то время :с - person RudebwaiG; 13.11.2014
comment
Фантастика, не могли бы вы обновить свой ответ, чтобы изменить его, чтобы показать это? Я почти проигнорировал это, потому что я полагаюсь на некоторые функции v4:21, поэтому я не думал, что смогу реализовать ваше решение. - person Gabriel; 13.11.2014
comment
Для UA Android SDK 5.1 требуется v21, вы получите сбой при получении push-уведомления, если принудительно установите более старую версию. Это необходимо для поддержки новейших функций Android Lollipop. Распаковка и исправление манифеста для удаления битов библиотеки переопределения в основном должны работать, но я бы не рекомендовал это делать. 'overrideLibrary' был представлен в плагине Android gradle 0.13.3, и теперь это единственный способ разрешить более старый min sdk, чем одну из зависимостей. - person ralepinski; 14.11.2014

Я также столкнулся с этой проблемой при оценке версии 5.1.0 SDK Urban Airship. Я использую бета-версию Android Studio 0.8.14. Я связался со службой поддержки Urban Airship, и они сказали мне увеличить версию gradle до 0.13.3. Android Studio 0.8.14 по умолчанию имеет версию 0.13.2. После изменения версии gradle на 0.13.3 в файле проекта build.gradle мне удалось успешно скомпилировать и импортировать новый SDK.

person llopisdon    schedule 14.11.2014