How to export AAR library with its documentation?

I agree with @MarkusKauppinen.

The main problem after you build the sources jar is you cannot use this jar as your dependencies. This is only a source code that can't be used for writing code, i.e. you can't import anything, because the jar contains *.java files instead of *.class files. So that, do the following:

Step #1 Build an AAR format for your library. Usually, it located in [project]/[library-module]/build/outputs/aar/library-release.aar

Step #2 Add the AAR file as module. Go to File > New > New module... > Import .JAR/.AAR package > Next.

enter image description here

Then, locate the AAR file and click Finish.

enter image description here

Step #3 Go to Project Structure by clicking this icon icon project structure, and add the module we just made to app's dependencies.

enter image description here

Step #4 Add @MarkusKauppinen's gradle task to library module's build.gradle and sync the project with gradle.

Step #5 Go to right pane of Android Studio > click Gradle > refresh gradle task by clicking this icon icon refresh gradle task.

Step #6 Find and run (by double click) sourcesJar in :library-module > Tasks > other.

sourcesJar task

Step #7 After the task is completed, you'll find the sources jar in

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

Step #8 Import at least one class to app's module, e.g. in MainActivity. Then, press Ctrl + click on the class. Click Choose sources and browse the sources jar as mentioned in step #7.

browse sources jar

Finally, you can see the sources code with its documentation.


The code "shrinks" because once you create the AAR the original source code isn't included in the AAR. It's just the Java byte code.

Then when you use your AAR library in an app. the source code is reverse engineered from the byte code. The original variable names are not available and there can be some coding style differences due to byte code compiler's optimizations and whatnot. And of course the comments are not included in the byte code because it's for the computer and the comments are for the people.

So when using the AAR library if you wan't to see the original source code when debugging etc. you need to deliver it with the AAR as a separate source JAR and probably tell Android Studio to use the source JAR if it doesn't do it automatically.

I've been able to automate the source JAR creation as part of a process of "uploading" the generated AAR/JAR to a local Maven repository. I don't know what kind of a build system you have so I won't go into those details.

Anyway you can add this to your modules's build.gradle:

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

You'll then need to run it separately whenever you want to create/update the source JAR:

Gradle -> Tasks -> Other -> sourcesJar

And probably there's some way to automate the task to be part of the assembleRelease task but I'm not very much familiar with Gradle yet.

The source JAR will appear in the ...\MyLibrary\app\build\libs\ path.