2016-03-23 21 views
10

Zastanawiam się, dlaczego moja biblioteka zawsze zgubiła dokumentację po utworzeniu jej w formacie AAR. Ponadto Android Studio zmniejsza kod, tzn. Kod przed wbudowaniem zawsze różni się kodem po wbudowaniu w format AAR, bez oryginałów. Chcę, aby moja biblioteka posiadała własną dokumentację i miała oryginalny kod. Można zobaczyć różne poniżej:Jak wyeksportować bibliotekę AAR wraz z dokumentacją?

Przed zbudowany

before

Po wbudowane w formacie AAR

after

Gdzie jest dokumentacja ?! Ponadto zauważysz, że cały kod jest naprawdę skurczony i inny.

Jak więc wyeksportować bibliotekę AAR wraz z jej dokumentacją bez zmniejszania kodu?

+0

Jak mogę polecić mój kod z innego z moich modułów? Mam na myśli 'moduleA', gdzie używam' moduleB' i 'moduleB' używa trzeciego' moduleC', ale kiedy odwołuję klasę z 'moduleC' w' moduleA' (control + click) pokazuje mi to skompilowane ' .class' zamiast mojej klasy '.java' z mojego' moduleC'. Czy masz jakiś pomysł, aby rozwiązać ten problem? Dzięki! – epool

Odpowiedz

2

Kod "kurczy się", ponieważ po utworzeniu AAR oryginalny kod źródłowy nie jest zawarty w AAR. To tylko kod bajtowy Java.

Następnie, gdy używasz biblioteki AAR w aplikacji. kod źródłowy jest przekształcany z kodu bajtowego. Oryginalne nazwy zmiennych nie są dostępne i mogą występować pewne różnice w stylu kodowania wynikające z optymalizacji kompilatora kodu bajtowego i inne. I oczywiście komentarze nie są zawarte w kodzie bajtowym, ponieważ są przeznaczone dla komputera, a komentarze są dla ludzi.

Tak więc, jeśli używasz biblioteki AAR, jeśli nie chcesz zobaczyć oryginalnego kodu źródłowego podczas debugowania itp., Musisz dostarczyć ją z rocznym rejestrem AAR jako oddzielnym źródłowym plikiem JAR i prawdopodobnie powiedzieć Androidowi Studio, aby używał źródłowego JAR, jeśli nie robi tego automatycznie.

Byłem w stanie zautomatyzować tworzenie źródła JAR w ramach procesu "przesyłania" wygenerowanego pliku AAR/JAR do lokalnego repozytorium Maven. Nie wiem, jaki masz system budowy, więc nie będę wchodził w szczegóły.

Zresztą można dodać do build.gradle moduły męska:

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

Następnie należy uruchomić go osobno, gdy chcesz utworzyć/zaktualizować JAR źródło:

Gradle -> Zadania -> Inne -> sourcesJar

Prawdopodobnie istnieje sposób zautomatyzowania zadania, które należy wykonać w ramach zadania assembleRelease, ale jeszcze nie znam się na programie Gradle.

Źródłowy plik JAR pojawi się w ... \ MyLibrary \ app \ build \ libs \ path.

+0

Jak mogę polecić mój kod z innego z moich modułów? Mam na myśli 'moduleA', gdzie używam' moduleB' i 'moduleB' używa trzeciego' moduleC', ale kiedy odwołuję klasę z 'moduleC' w' moduleA' (control + click) pokazuje mi to skompilowane ' .class' zamiast mojej klasy '.java' z mojego' moduleC'. Czy masz jakiś pomysł, aby rozwiązać ten problem? Dzięki! – epool

8

Zgadzam się z @MarkusKauppinen.

Głównym problemem po zbudowaniu słoju źródeł jest to, że nie możesz użyć tego słoika jako swoich zależności. Jest to tylko kod źródłowy, którego nie można użyć do napisania kodu, tzn. Nie można importować niczego, ponieważ pliki jar zawierają pliki *.java zamiast plików *.class.Wykonaj następujące czynności:

Krok # 1 Utwórz format AAR dla swojej biblioteki. Zwykle znajduje się on pod numerem [project]/[library-module]/build/outputs/aar/library-release.aar

Krok nr 2 Dodaj plik AAR jako moduł. Idź do Plik> Nowy> Nowy moduł ...> Importuj pakiet .JAR/.AAR> Dalej.

enter image description here

Następnie zlokalizuj plik AAR i kliknij Zakończ.

enter image description here

Krok # 3 idź do projektu konstrukcji poprzez kliknięcie tej ikony icon project structure i dodać moduł właśnie złożonej zależności aplikacji.

enter image description here

Krok # 4 Dodaj @ Gradle zadania MarkusKauppinen do biblioteki modułu build.gradle i zsynchronizować projekt z Gradle.

Krok # 5 idź do prawego panelu Android Studio> kliknij Gradle> odświeżyć Gradle zadanie klikając ikonę icon refresh gradle task.

Krok 6 odnaleźć i uruchomić (poprzez dwukrotne kliknięcie) sourcesJar w :library-module>Tasks>other.

sourcesJar task

Krok # 7 Po zakończeniu zadania, znajdziesz słoik źródeł w

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

Krok # 8 Importuj co najmniej jeden moduł klasy do aplikacji, np. w MainActivity. Następnie naciśnij Ctrl + kliknij klasę. Kliknij przycisk Choose sources i przejrzyj słoik źródeł, jak wspomniano w kroku 7.

browse sources jar

Wreszcie, można zobaczyć kod źródła z jego dokumentacją.

+0

Jak mogę polecić mój kod z innego z moich modułów? Mam na myśli 'moduleA', gdzie używam' moduleB' i 'moduleB' używa trzeciego' moduleC', ale kiedy odwołuję klasę z 'moduleC' w' moduleA' (control + click) pokazuje mi to skompilowane ' .class' zamiast mojej klasy '.java' z mojego' moduleC'.Czy masz jakiś pomysł, aby rozwiązać ten problem? Dzięki! – epool

Powiązane problemy