2016-03-23 89 views
10

我想知道爲什麼我的圖書館一旦建成AAR格式後總是丟失它的文檔。此外,Android Studio會縮小代碼,即構建之前的代碼與內置AAR格式後的代碼始終不同,不含原始代碼。我希望我的圖書館擁有自己的文檔並擁有原始代碼。你可以看到下面的不同:內置AAR格式如何導出AAR庫及其文檔?

after

哪裏文檔後

以前建造

before

?另外,你會注意到整個代碼真的縮小了,不同。

那麼,如何在不收縮代碼的情況下將AAR庫與其文檔一起導出?

+0

如何從另一個模塊中引用我的代碼?我的意思是我有一個'moduleA',我使用'moduleB','moduleB'使用第三個'moduleC',但是當我從'moduleA'中的moduleC'引用一個類(control + click)時, .class'而不是我的'moduleC'中的'.java'類。你有解決這個問題的一些想法嗎?謝謝! – epool

回答

2

代碼「縮小」,因爲一旦創建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中。

+0

如何從另一個模塊中引用我的代碼?我的意思是我有一個'moduleA',我使用'moduleB','moduleB'使用第三個'moduleC',但是當我從'moduleA'中的moduleC'引用一個類(control + click)時, .class'而不是我的'moduleC'中的'.java'類。你有解決這個問題的一些想法嗎?謝謝! – epool

8

我同意@MarkusKauppinen。

構建源代碼jar後的主要問題是你不能使用這個jar作爲你的依賴關係。這只是一個不能用於編寫代碼的源代碼,即不能導入任何東西,因爲該jar包含*.java文件而不是*.class文件。因此,請執行以下操作:

步驟#1爲您的庫構建AAR格式。通常,它位於[project]/[library-module]/build/outputs/aar/library-release.aar

步驟#2將AAR文件添加爲模塊。轉到文件>新建>新建模塊...>導入.JAR/.AAR軟件包>下一步。

enter image description here

然後,找到AAR文件並單擊Finish。

enter image description here

步驟#3轉到單擊此圖標icon project structure到項目結構,並增加我們只是應用程序的依賴關係所作的模塊。

enter image description here

步驟#4添加@ MarkusKauppinen的gradle這個任務庫模塊的build.gradle和同步與gradle這個項目。

步驟#5轉到Android Studio的右窗格>單擊Gradle>刷新gradle任務,點擊此圖標icon refresh gradle task

步驟#6查找和運行(通過雙擊)sourcesJar:library-module>Tasks>other

sourcesJar task

步驟#7的任務完成後,你會發現在

library-module\build\libs\..-sources.jar來源罐子。

步驟#8將至少一個類導入到應用的模塊,例如,在MainActivity。然後按Ctrl +點擊課程。點擊Choose sources,然後瀏覽第7步中提到的源代碼jar文件。

browse sources jar

最後,你可以看到它的文檔的源代碼。

+0

如何從另一個模塊中引用我的代碼?我的意思是我有一個'moduleA',我使用'moduleB','moduleB'使用第三個'moduleC',但是當我從'moduleA'中的moduleC'引用一個類(control + click)時, .class'而不是我的'moduleC'中的'.java'類。你有解決這個問題的一些想法嗎?謝謝! – epool