Chcę zbudować pojedynczą bibliotekę z mojego projektu, projekt wykorzystuje wiele zależności i zasobów. Jeśli widok kart jest zaimportowany jako słoik, nie będzie miał przy sobie zasobów, ale gdy zostanie dodany jako aar, zostanie dodany jako inny moduł. Więc nie mogę połączyć go w jedną bibliotekę. Nie chcę przesyłać mojego projektu do repozytorium. Jak mogę zbudować bibliotekę, dziękuję z góry!Jak stworzyć pojedynczą bibliotekę, łącząc różne moduły?
Odpowiedz
android-fat-aar powinien zająć się tym problemem.
Trzeba
apply from: 'fat-aar.gradle'
z repozytorium GitHub a następnie zastąpić kompilacji zależności z wbudowanego uzależnienia. Więc zamiast definining modułu otherModule
zależność jako
dependencies {
compile project(':otherModule')
}
że trzeba tylko określić go jako
dependencies {
embedded project(':otherModule')
}
skompilować konfiguracja zależy od konfiguracji osadzone, więc musiałbyś takie samo zachowanie, jak wcześniej.
Ostatecznie jest to problematyczna konfiguracja, szczególnie jeśli chcesz korzystać z niektórych bibliotek obsługi Androida. Najprawdopodobniej napotkasz problemy z duplikacją.
Jeśli tworzysz tę konfigurację w trybie offline pracy, lepiej rozważyć użycie Local Maven repository
repositories {
mavenLocal()
}
z kopią artefaktów bibliotecznych trzeba użyć. A może nawet osobiście zarządzane repozytorium dla siebie i każdego, kto tego potrzebuje.
Czy wiesz, że możesz używać modułu jako biblioteki (źródła, bez kompilowania AAR)? Będzie to oznaczać, że twoja biblioteka-projekt może korzystać ze wszystkich zależności gradle. Oto przykład z projektem biblioteki o nazwie "MyApiLibrary", który będzie samodzielnym modułem o nazwie "api"
Najpierw utwórz swoją bibliotekę jako nowy projekt (z nazwą modułu "api" dla tego przykładu, ale nazwa może bądź tym, co lubisz). W pliku Gradle dla tego modułu biblioteki użyć wtyczki biblioteki gdzie zazwyczaj użycie wtyczki aplikacji za
apply plugin: 'com.android.library' //not apply plugin: 'com.android.application'
także upewnić się, że moduł biblioteki nie zadeklarować applicationId
w defaultConfig
jego Gradle pliku. Następnie zadeklaruj wszystkie zależności bibliotek, tak jak zwykle.
Następnie w projekcie konsumującym należy zaimportować bibliotekę, wprowadzając następujące ustawienia w ustawieniach .Gradle:
//this first line declares a pseudonym to refer to the library module
include ':api'
//this second line explains where the pseudonym links to
//(the path to the module directory of the library project, relative to the root dir of the current project)
project(':api').projectDir = new File('../MyApiLibrary/api/')
W Gradle plik modułu spożywania, odwołanie projektu jako zależność:
dependencies {
...
compile project(':api')
}
Teraz wszystko wewnątrz głównym projekt może uzyskać dostęp do wszystkich klas i importowane zależności od projektu biblioteki
Jeśli dobrze to rozumiem, masz projekt złożony z wielu modułów, który ma kilka projektów bibliotecznych, i chcesz skompilować pojedynczy plik, który obejmuje twoje moduły i ich zależności. Jeśli tak, to:
-Install maven. -Aplikuj wtyczkę gradle maven (https://github.com/dcendents/android-maven-gradle-plugin) do swoich modułów. użyj zadania instalacji, aby zainstalować moduły jako pojedyncze biblioteki.
-Utwórz nowy moduł, który importuje wszystkie zainstalowane wersje pojedynczych bibliotek i ich zależności. Zastosuj wtyczkę z Androidem (https://github.com/zawn/android-shade-plugin, dokumentacja tutaj: http://imperceptiblethoughts.com/shadow/) do tego modułu. Wynikiem tego będzie uber-aar i aar zawierający twoje moduły biblioteczne i ich zależności. Możesz zainstalować to w lokalnej instancji maven lub upuścić aar do katalogu libs w swoich aplikacjach.
Czy umieścisz swoje bieżące pliki konfiguracyjne? – Adonis
Dlaczego nie możesz "skompilować" pliku com.android.support: cardview-v7: 25.2.0'' bez użycia Jar lub Aar? –