I want to publish some sources so that consumers of our closed-source library can see the documentation in their IDEs. I have this working so far:
def listOfPublicApiFiles = [
'/com/example/app/MyClass.java',
'/com/example/app/MyOtherClass.java',
]
task androidSourcesJar(type: Jar) {
archiveClassifier.set('sources')
include(listOfPublicApiFiles)
includeEmptyDirs = false
from android.sourceSets.main.java.srcDirs
}
publishing {
publications {
standardRelease(MavenPublication) {
afterEvaluate {
from components.standardRelease
artifact androidSourcesJar
}
groupId = 'com.company'
artifactId = "myartifact"
}
}
}
This works perfectly if minifyEnabled false
is set, but as soon as I set minifyEnabled true
, then no documentation at all appears in the IDE (by pressing F1, etc). Is this an IDE bug? The sources.jar is still there and appears to be linked properly. I don't see why it shouldn't work. I've tried making sure that these public API files are not minified at all by setting keep in proguard-rules, but it doesn't help, documentation in IDE is blank.
I'm using Android Studio Dolphin | 2021.3.1 Patch 1 Build #AI-213.7172.25.2113.9123335, built on September 30, 2022 Runtime version: 11.0.13+0-b1751.21-8125866 aarch64
but I have also tried on Electric Eel and Dolphin Android Studio.
After looking into this problem for about a week, I finally found a reasonably simple solution:
Convert the files you want to publish documentation for to Kotlin. That way the documentation still is visible when
minifyEnabled true
is set, with the above publishing script.I tried everything else that I could think of, but I'm not sure which part of the toolchain is breaking when the classes are Java. I assume it's either Gradle or IntelliJ.