我想知道爲什麼我的圖書館一旦建成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