Przygotowywanie biblioteki do publikacji

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:

  1. buildTypes{}

  2. productFlavors{}

  3. 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.