如何导出 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。
最后,您可以看到源代码及其文档。
我想知道为什么我的库在构建为 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 步 任务完成后,您会在
中找到源 jarlibrary-module\build\libs\..-sources.jar
.
步骤 #8 导入至少一个 class 到应用模块,例如在 MainActivity
。然后,按 Ctrl + 单击 class。单击 Choose sources
并按照步骤 #7 中所述浏览源 jar。
最后,您可以看到源代码及其文档。