Как экспортировать библиотеку AAR с ее документацией?

Мне интересно, почему моя библиотека всегда теряла свою документацию, когда она была построена в формате AAR. Кроме того, Android Studio сжимает код, то есть код, который ранее был построен, всегда отличался от кода после встроенного формата AAR, никаких оригиналов. Я хочу, чтобы моя библиотека имела собственную документацию и имеет исходный код. Вы можете увидеть ниже:

Перед построением

before

После встроенного формата AAR

после

Где документация?! Кроме того, вы заметите, что весь код действительно сжат и отличается.

Итак, как мне экспортировать библиотеку AAR с ее документацией без сжатия кода?

Ответ 1

Код "сжимается", поскольку после создания AAR исходный исходный код не включен в AAR. Это всего лишь код байта Java.

Затем, когда вы используете свою библиотеку AAR в приложении. исходный код обращается в обратном порядке из байтового кода. Исходные имена переменных недоступны и могут быть некоторые различия в стиле кодирования из-за оптимизации компилятора байтового кода и еще чего-то. И, конечно, комментарии не включены в байтовый код, потому что это для компьютера и комментарии для людей.

Поэтому, когда вы используете библиотеку AAR, если вы не хотите видеть исходный код при отладке и т.д., вам необходимо доставить его с помощью AAR в качестве отдельного JAR источника и, возможно, сообщите Android Studio об использовании исходного JAR, если он 'делать это автоматически.

Мне удалось автоматизировать создание JAR-источника как часть процесса "загрузки" сгенерированного AAR/JAR в локальный репозиторий Maven. Я не знаю, какая у вас система сборки, поэтому я не буду вдаваться в эти детали.

В любом случае вы можете добавить это в свои модули build.gradle:

task sourcesJar(type: Jar) {
    classifier = 'sources'
    from android.sourceSets.main.java.srcDirs
}

Затем вам нужно будет запускать его отдельно, когда вы хотите создать/обновить исходный JAR:

Gradle → Задачи → Другое → sourcesJar

И, вероятно, есть способ автоматизировать задачу как часть задачи assembleRelease, но я не очень хорошо знаком с Gradle.

Исходный JAR появится в...\MyLibrary\app\build\libs\path.

Ответ 2

Я согласен с @MarkusKauppinen.

Основная проблема после сборки jar-источников заключается в том, что вы не можете использовать эту банку в качестве ваших зависимостей. Это только исходный код, который нельзя использовать для написания кода, т.е. Вы ничего не можете импортировать, потому что в jar содержатся файлы *.java вместо *.class файлов. Итак, сделайте следующее:

Шаг # 1 Создайте формат AAR для вашей библиотеки. Обычно он находится в [project]/[library-module]/build/outputs/aar/library-release.aar

Шаг # 2 Добавьте файл AAR в качестве модуля. Перейдите в меню "Файл" > "Создать" > "Создать модуль..." > "Импорт пакета .JAR/.AAR" > "Далее".

введите описание изображения здесь

Затем найдите файл AAR и нажмите "Готово".

введите описание изображения здесь

Шаг # 3 Перейдите к структуре проекта, нажав на этот значок icon project структура и добавьте модуль, который мы только что применили к зависимостям приложений.

введите описание изображения здесь

Шаг # 4 Добавить @MarkusKauppinen gradle задачу в библиотечный модуль build.gradle и синхронизировать проект с gradle.

Шаг # 5 Перейдите в правую область Android Studio > нажмите gradle > обновить gradle задачу, щелкнув этот значок icon refresh gradle task.

Шаг # 6 Найти и запустить (двойным щелчком) sourcesJar в :library-module > Tasks > other.

sourcesJar task

Шаг # 7. После завершения задачи вы найдете источники jar в

library-module\build\libs\..-sources.jar.

Шаг # 8 Импортируйте, по меньшей мере, один класс в модуль приложения, например. в MainActivity. Затем нажмите Ctrl + щелчок по классу. Нажмите Choose sources и просмотрите исходную банку, как указано в шаге 7.

просмотреть источники jar

Наконец, вы можете увидеть исходный код с его документацией.