我想知道为什么我的图书馆一旦建成AAR格式后总是丢失它的文档。此外,Android Studio会缩小代码,即构建之前的代码与内置AAR格式后的代码始终不同,不含原始代码。我希望我的图书馆拥有自己的文档并拥有原始代码。你可以看到下面的不同:内置AAR格式如何导出AAR库及其文档?
哪里文档后
以前建造
?另外,你会注意到整个代码真的缩小了,不同。
那么,如何在不收缩代码的情况下将AAR库与其文档一起导出?
我想知道为什么我的图书馆一旦建成AAR格式后总是丢失它的文档。此外,Android Studio会缩小代码,即构建之前的代码与内置AAR格式后的代码始终不同,不含原始代码。我希望我的图书馆拥有自己的文档并拥有原始代码。你可以看到下面的不同:内置AAR格式如何导出AAR库及其文档?
哪里文档后
以前建造
?另外,你会注意到整个代码真的缩小了,不同。
那么,如何在不收缩代码的情况下将AAR库与其文档一起导出?
代码“缩小”,因为一旦创建AAR 原始源代码不包含在AAR中。它只是Java字节码。
然后,当您在应用程序中使用AAR库时。 源代码是从字节代码反向设计的。原始变量名称不可用,由于字节码编译器的优化以及其他原因,可能会有一些编码样式差异。当然,这些注释并不包含在字节码中,因为它是用于计算机的,评论是针对人们的。
因此,如果您在调试时不想看到原始源代码,那么当使用AAR库时,您需要将它作为单独的源JAR提供给AAR,并且可能会告诉Android Studio使用源JAR不会自动执行。
我已经能够自动化源JAR创建,作为将生成的AAR/JAR“上传”到本地Maven存储库的过程的一部分。我不知道你有什么样的构建系统,所以我不会详细讨论这些细节。
反正你可以添加到您的模块的的build.gradle:
task sourcesJar(type: Jar) {
classifier = 'sources'
from android.sourceSets.main.java.srcDirs
}
然后您就需要单独运行它时,你要创建/更新源JAR:
摇篮 - >任务 - >其他 - >源码Jar
并且可能有一些方法可以将任务自动化为assembleRelease
任务的一部分,但我对Gradle还不是很熟悉。
源JAR将出现在... \ MyLibrary \ app \ build \ libs \ path中。
如何从另一个模块中引用我的代码?我的意思是我有一个'moduleA',我使用'moduleB','moduleB'使用第三个'moduleC',但是当我从'moduleA'中的moduleC'引用一个类(control + click)时, .class'而不是我的'moduleC'中的'.java'类。你有解决这个问题的一些想法吗?谢谢! – epool
我同意@MarkusKauppinen。
构建源代码jar后的主要问题是你不能使用这个jar作为你的依赖关系。这只是一个不能用于编写代码的源代码,即不能导入任何东西,因为该jar包含*.java
文件而不是*.class
文件。因此,请执行以下操作:
步骤#1为您的库构建AAR格式。通常,它位于[project]/[library-module]/build/outputs/aar/library-release.aar
步骤#2将AAR文件添加为模块。转到文件>新建>新建模块...>导入.JAR/.AAR软件包>下一步。
然后,找到AAR文件并单击Finish。
步骤#3转到单击此图标到项目结构,并增加我们只是应用程序的依赖关系所作的模块。
步骤#4添加@ MarkusKauppinen的gradle这个任务库模块的build.gradle
和同步与gradle这个项目。
步骤#5转到Android Studio的右窗格>单击Gradle>刷新gradle任务,点击此图标。
步骤#6查找和运行(通过双击)sourcesJar
在:library-module
>Tasks
>other
。
步骤#7的任务完成后,你会发现在
library-module\build\libs\..-sources.jar
来源罐子。
步骤#8将至少一个类导入到应用的模块,例如,在MainActivity
。然后按Ctrl +点击课程。点击Choose sources
,然后浏览第7步中提到的源代码jar文件。
最后,你可以看到它的文档的源代码。
如何从另一个模块中引用我的代码?我的意思是我有一个'moduleA',我使用'moduleB','moduleB'使用第三个'moduleC',但是当我从'moduleA'中的moduleC'引用一个类(control + click)时, .class'而不是我的'moduleC'中的'.java'类。你有解决这个问题的一些想法吗?谢谢! – epool
如何从另一个模块中引用我的代码?我的意思是我有一个'moduleA',我使用'moduleB','moduleB'使用第三个'moduleC',但是当我从'moduleA'中的moduleC'引用一个类(control + click)时, .class'而不是我的'moduleC'中的'.java'类。你有解决这个问题的一些想法吗?谢谢! – epool