Na tej stronie opisujemy właściwości i opcje potrzebne do przygotowania projektu z biblioteki Androida do publikacji przy użyciu wtyczki Androida do obsługi Gradle (AGP). Nawet jeśli ustawisz niektóre z tych właściwości na początku tworzenia biblioteki, zapoznaj się z tymi wskazówkami, aby zoptymalizować ustawienia.
Wybierz przestrzeń nazw
Biblioteki Androida muszą zadeklarować przestrzeń nazw, aby móc wygenerować unikalną klasę R
podczas skompilowania zasobów. Ta przestrzeń nazw powinna być bardzo podobna do pakietu klas głównych biblioteki, aby użytkownicy importowali zwykłe klasy z biblioteki i jej klasy R
.
W AGP 7.0 możesz ustawić przestrzeń nazw w pliku build.gradle
aplikacji, jak w tym przykładzie kodu:
Odlotowe
android { namespace = 'com.example.library' }
Kotlin
android { namespace = "com.example.library" }
Przestrzeń nazw jest właściwością biblioteki widoczną dla programistów. Nie jest on powiązany z tożsamością aplikacji ustawianą za pomocą właściwości applicationId
.
W poprzednich wersjach interfejsu AGP zarówno właściwość applicationId
(w przypadku aplikacji), jak i właściwości namespace
(w przypadku biblioteki) można było ustawić za pomocą atrybutu package
w pliku manifestu, co prowadziło do dezorientacji.
Wybierz wartość minSdkVersion
Wybór minSdkVersion
do biblioteki to ważny aspekt publikowania biblioteki. Pole minSdkVersion
powinno odzwierciedlać minimalną wersję Androida obsługiwaną przez Twój kod.
Wybierając minSdkVersion
, pamiętaj o tych kwestiach:
Wybranie niskiej wartości
minSdkVersion
zazwyczaj umożliwia szersze wykorzystanie biblioteki.Kod biblioteki zwykle nie jest wykonywany, chyba że aplikacja go wyraźnie wywoła. Aplikacja może nadal działać w wersji Androida, która jest niższa niż wymaga zależność biblioteki – jeśli biblioteka nie jest niezbędne do realizowania głównej funkcji aplikacji – przed jej wywołaniem można ją sprawdzić w czasie działania. Aby więc dotrzeć do większej liczby użytkowników, ustaw
minSdkVersion
na tyle niską, aby można było umieszczać ją w aplikacjach i wywołać, gdy będzie to możliwe.Ustawienie wysokiej wartości
minSdkVersion
może uniemożliwić aplikacjom uwzględnianie biblioteki.Połączenie plików manifestu, czyli etap AGP, który polega na scaleniu plików manifestu z aplikacji i z jej zależności, wymusza, aby żadne zależności nie miały wyższego parametru
minSdkVersion
niż aplikacja.Ustawienie wysokiej wartości
minSdkVersion
może spowodować, że deweloperzy aplikacji wyłączyli kontrole bezpieczeństwa dotyczące scalania kont, co doprowadzi do problemów na późniejszym etapie kompilacji.Ponieważ scalanie plików manifestu uniemożliwia projektom aplikacji uwzględnianie bibliotek z wartością
minSdkVersion
wyższą niż sama aplikacja, deweloperzy aplikacji mogą wyłączyć kontrole bezpieczeństwa scalania plików manifestu, aby zminimalizować błędy kompilacji. Ryzykuje to jednak w przyszłości problemy z niezgodnością.Wybór wysokiej wartości
minSdkVersion
może być konieczne w szczególnych przypadkach, gdy plik manifestu biblioteki zawiera odbiornik lub inny mechanizm, dzięki któremu jego kod jest aktywowany automatycznie.W takich przypadkach wybór wysokiej wartości
minSdkVersion
umożliwia uruchomienie kodu. Możesz też wyłączyć automatyczne zachowanie, aby aplikacja mogła wyrazić zgodę na uruchomienie biblioteki po przeprowadzeniu odpowiednich testów.
Aby zezwolić na umieszczanie w aplikacjach, użyj adnotacji RequiresApi
w swojej bibliotece, aby poinformować jej elementy wywołujące, że muszą przeprowadzić weryfikację w czasie działania. Android
Lint używa informacji RequiresApi
na potrzeby inspekcji. Więcej informacji o używaniu adnotacji do ulepszania kodu API i interfejsów API znajdziesz w artykule Ulepszanie inspekcji kodu za pomocą adnotacji.
Konfigurowanie metadanych AAR
Biblioteka Androida jest spakowana w postaci pliku Android Archive (AAR). Metadane AAR składają się z właściwości, które pomagają AGP korzystać z bibliotek. Jeśli biblioteka jest wykorzystywana przez niekompatybilną konfigurację, a metadane AAR są skonfigurowane, użytkownikom wyświetla się komunikat o błędzie, który pomaga w rozwiązaniu problemu.
Wybierz wartość minCompileSdk
Od wersji 4.1 AGP obsługuje minCompileSdk
.
Określa minimalną wartość compileSdk
, z której mogą korzystać projekty. Jeśli Twoja biblioteka zawiera wpisy lub zasoby pliku manifestu, które korzystają z nowszych atrybutów platformy, musisz ustawić tę wartość.
Wartość minCompileSdk
można ustawić w blokach defaultConfig{}
, productFlavors{}
i buildTypes{}
w pliku build.gradle
na poziomie modułu:
Odlotowe
android { defaultConfig { aarMetadata { minCompileSdk = 29 } } productFlavors { foo { ... aarMetadata { minCompileSdk = 30 } } } }
Kotlin
android { defaultConfig { aarMetadata { minCompileSdk = 29 } } productFlavors { register("foo") { ... aarMetadata { minCompileSdk = 30 } } } }
Jeśli skonfigurujesz minCompileSdk
w wielu miejscach, Gradle nadaje priorytety lokalizacji ustawień w taki sposób podczas procesu kompilacji:
buildTypes{}
productFlavors{}
defaultConfig{}
W poprzednim przykładzie, gdzie pole minCompileSdk
jest zdefiniowane zarówno w polach defaultConfig{}
, jak i w productFlavors{}
, priorytet ma productFlavors{}
, a pole minCompileSdk
ma wartość 30.
Więcej informacji o tym, jak Gradle nadaje priorytet ustawieniom podczas łączenia kodu i zasobów, znajdziesz w sekcji Tworzenie za pomocą zbiorów źródłowych.
Włącz urządzenia testowe
Sprzęt do testów jest zwykle używany do konfigurowania testowanego kodu lub ułatwiania testowania komponentu. Od wersji 7.1 AGP może tworzyć osprzęt testowe dla projektów bibliotecznych, a nie tylko dla projektów aplikacji i funkcji dynamicznych.
Publikując bibliotekę, aby inni mogli z niej korzystać, rozważ utworzenie osprzętu testowego do interfejsu API. Urządzenia testowe można włączyć w pliku build.gradle
na poziomie modułu:
Odlotowe
android { testFixtures { enable = true } }
Kotlin
android { testFixtures { enable = true } }
Gdy włączysz urządzenia testowe, Gradle automatycznie tworzy zbiór źródłowy src/testFixtures
, w którym możesz zapisywać urządzenia testowe.
Więcej informacji znajdziesz w dokumentacji Gradle na temat korzystania z urządzeń testowych.