如何导出 AAR 库及其文档?

How to export AAR library with its documentation?

我想知道为什么我的库在构建为 AAR 格式后总是丢失其文档。此外,Android Studio 压缩了代码,即构建前的代码与构建后的代码总是不同的 AAR 格式,none 原始代码。我希望我的图书馆有自己的文档和原始代码。您可以在下面看到不同之处:

建成前

内置AAR格式后

文档在哪里?!此外,您会注意到整个代码确实缩小了并且不同了。

那么,如何在不压缩代码的情况下导出 AAR 库及其文档?

代码 "shrinks" 因为一旦您创建了 AAR 原始源代码就不会包含在 AAR 中。这只是 Java 字节码。

然后当您在应用程序中使用 AAR 库时。 源代码是从字节码逆向工程得到的。原始变量名称不可用,并且由于字节码编译器的优化等原因,可能存在一些编码风格差异。当然,注释不包含在字节码中,因为它是给计算机的,注释是给人的。

因此,在使用 AAR 库时,如果您不想在调试时看到原始源代码等,您需要将其作为单独的源 JAR 与 AAR 一起交付,并可能告诉 Android Studio 使用源 JAR(如果它没有自动执行)。

作为 "uploading" 生成的 AAR/JAR 到本地 Maven 存储库的过程的一部分,我已经能够自动创建源 JAR。我不知道你有什么样的构建系统,所以我不会详细介绍这些细节。

无论如何你都可以将它添加到你的模块的 build.gradle:

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

然后,您需要 运行 单独 create/update 源 JAR:

Gradle -> 任务 -> 其他 -> sourcesJar

可能有一些方法可以使任务自动化成为 assembleRelease 任务的一部分,但我对 Gradle 还不是很熟悉。

源 JAR 将出现在 ...\MyLibrary\app\build\libs\ 路径中。

我同意@MarkusKauppinen 的观点。

构建源 jar 后的主要问题是您不能将此 jar 用作依赖项。这只是一个不能用于编写代码的源代码,即您不能导入任何东西,因为 jar 包含 *.java 个文件而不是 *.class 个文件。因此,请执行以下操作:

步骤 #1 为您的图书馆构建 AAR 格式。通常,它位于 [project]/[library-module]/build/outputs/aar/library-release.aar

步骤 #2 添加 AAR 文件作为模块。转到文件 > 新建 > 新建模块... > 导入 .JAR/.AAR 包 > 下一步。

然后,找到 AAR 文件并单击完成。

第 3 步 单击此图标 转到项目结构,并将我们刚刚创建的模块添加到应用程序的依赖项中。

步骤 #4 将@MarkusKauppinen 的 gradle 任务添加到库模块的 build.gradle 并将项目与 gradle.[=28= 同步]

第 5 步 转到 Android Studio 的右侧面板 > 单击 Gradle > 通过单击此图标刷新 gradle 任务 .

步骤 #6:library-module > Tasks > other.

第 7 步 任务完成后,您会在

中找到源 jar

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

步骤 #8 导入至少一个 class 到应用模块,例如在 MainActivity。然后,按 Ctrl + 单击 class。单击 Choose sources 并按照步骤 #7 中所述浏览源 jar。

最后,您可以看到源代码及其文档。