Fat AAR Android
Решение для объединения AAR работает с плагином Android Gradle, версия разработки плагина Android — 3.0.1 и выше. (Протестировано в Gradle Plugin 3.0.1–4.0.0 и Gradle 4.6–6.1.1)
Добавьте фрагмент ниже в корневой файл сценария сборки:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:xxx'
classpath 'com.kezong:fat-aar:1.2.16'
}
}
Добавьте фрагмент ниже в build.gradle вашей библиотеки Android:
apply plugin: 'com.kezong.fat-aar'
Измените реализацию или api на embed, если вы хотите встроить зависимость в библиотеку. Вот так:
dependencies {
implementation fileTree(dir: 'libs', include: '*.jar')
// java dependency
embed project(path: ':lib-java', configuration:'default')
// aar dependency
embed project(path: ':lib-aar', configuration:'default')
// aar зависимость
embed project(path: ':lib-aar2', configuration:'default')
// локальная полная зависимость aar, просто сборка во вкусе1
flavor1Embed project(path: ':lib-aar-local', configuration:'default')
// локальная полная зависимость aar, только сборка в отладке
debugEmbed (name:'lib-aar-local2',ext:'aar')
// удаленная jar зависимость
embed 'com.google.guava:guava:20.0'
// удалённая зависимость aar
embed 'com.facebook.fresco:fresco:1.11.0'
// не хотим встраивать
// реализация не рекомендуется, потому что зависимость может отличаться от версии в приложении, что приводит к тому, что класс R не найден.
compileOnly 'com.android.support:appcompat-v7:27.1.1'
}
Если вы хотите включить локальные транзитивные зависимости в конечный артефакт, вы должны добавить embed для транзитивных зависимостей в свою основную библиотеку.
Например, mainLib зависит от subLib1, subLib1 зависит от subLib2. Если вы хотите включить все зависимости в конечный артефакт, вам необходимо добавить embed для subLib1 и subLib2 в mainLib build.gradle.
Если вы хотите включить все удалённые транзитивные зависимости из файла pom, вам нужно изменить значение embed's transitive на true в вашем build.gradle, вот так:
// значение по умолчанию — false
// недействительно для локальной зависимости aar
configurations.embed.transitive = true
Если вы измените транзитивное значение на true и хотите игнорировать зависимость в её файле POM, вы можете добавить ключевые слова exclude, вот так:
embed('com.facebook.fresco:fresco:1.11.0') {
exclude(group:'com.facebook.soloader', module:'soloader')
}
Более подробное использование см. в примере.
AAR — это формат файлов для библиотек Android. Сам файл представляет собой zip-файл, содержащий полезные данные для Android. Смотрите анатомию файла AAR здесь.
Поддержка списка на данный момент:
Версия | Gradle Plugin | Gradle |
---|---|---|
1.0.1 | 3.1.0 - 3.2.1 | 4.4-6.0 |
1.1.6 | 3.1.0 - 3.4.1 | 4.4-6.0 |
1.1.10 | 3.0.1 - 3.4.1 | 4.1-6.0 |
1.2.6 | 3.0.1 - 3.5.0 | 4.1-6.0 |
1.2.8 | 3.0.1+ | 4.1+ |
1.2.11+ | 3.6.0+ | 5.4.1+ |
1.2.15+ | 4.0.0+ | 6.1.1+ |
В следующей ссылке указано, какая версия Gradle требуется для каждой версии Android Gradle Plugin. Для лучшей производительности следует использовать самую последнюю возможную версию как Gradle, так и плагина. Version Log
1.2.16 — поиск плагина для сборки Android в полном пути к классам (#172); исправлена ошибка, из-за которой ресурсы могли не находиться при сборке в Gradle версии 4.0 (#163).
1.2.15 — адаптация плагина Gradle 4.0.0 (#147); поддержка индексации модуля в AS 4.0.0 (#148); исправление ошибки lint (#152).
1.2.12 — добавлена поддержка зависимостей для конкретных типов сборки и вариантов продукта, таких как debugEmbed или flavorEmbed (#135, #137); исправлены некоторые предупреждения сборки.
1.2.11 — исправлены ошибки вариантов сборки в плагине Gradle 3.6+ (#126); исправлена ошибка с символами удалённых ресурсов, которые не находились в R.class при сборке с плагином Gradle 3.6.0+.
1.2.9 — адаптация плагина Gradle 3.6.1 (#120).
1.2.8 — адаптация Gradle 6.0.0+ (#97).
1.2.7 — исправление ошибок слияния манифеста в Gradle 3.5.0 (#62, #65).
1.2.6 — адаптация плагина Gradle 3.5.0 (#53, #58).
1.2.5 — исправление повторяющихся ошибок имени задачи (#48); если minifyEnabled, файлы jar будут собираться в classes.jar.
1.2.4 — исправление проблем с встраиванием jni и активов на платформе Windows (#37).
1.2.3 — исправление проблемы с поиском R, который не является зависимостью (#11, #35); больше не нужно добавлять compileOnly для зависимостей; значение по умолчанию для транзитивного изменения — false.
1.1.11 — исправление проблемы, когда версия плагина Gradle могла быть неправильно оценена (#28); исправление предупреждений о сборке LibraryManifestMerger.java (#29); оптимизация правил слияния ресурсов, активов, jni... (#27).
1.1.10 — исправление ошибки слияния jar при использовании плагина Gradle 3.0.1 (#24); исправление ошибки перестройки (./gradlew clean assemble) (#24).
1.1.8 — адаптация нового интерфейса для избежания предупреждений (#10); оптимизация правил слияния AndroidManifest (#21, #23). Поддержка встраивания R-файла при загрузке Maven (#7)
v1.1.6:
v1.0.3:
v1.0.1:
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )