Przygotowywanie biblioteki do publikacji

Na tej stronie opisujemy właściwości i opcje niezbędne do przygotowania Projekt biblioteki na Androida do publikacji za pomocą wtyczki Androida do obsługi Gradle (AGP). Nawet jeśli ustawisz niektóre z tych właściwości na początku tworzenia zapoznaj się z tymi wskazówkami ustawieniach.

Wybierz przestrzeń nazw

Biblioteki Androida muszą zadeklarować przestrzeń nazw, by móc wygenerować unikalny R podczas skompilowania zasobów. Ta przestrzeń nazw powinna być ściśle dopasowana pakietu klas głównych biblioteki, aby uniknąć nieporozumień, gdy użytkownicy importują zwykłe pliki. zajęcia z biblioteki i jej zajęć R.

Począwszy od AGP 7.0, można przestrzeń nazw w pliku build.gradle aplikacji, jak widać w tym przykładowym kodzie:

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 powiązane z tożsamością aplikacji, ustawianą za pomocą applicationId usłudze.

W poprzednich wersjach interfejsu AGP zarówno właściwość applicationId, jak aplikacji) i właściwości namespace (w przypadku biblioteki) można ustawić za pomocą package w pliku manifestu co prowadziło do dezorientacji.

Wybierz wartość minSdkVersion

Wybieranie minSdkVersion dla biblioteka jest ważnym aspektem jej publikowania. minSdkVersion powinna odzwierciedlać minimalną wersję Androida dostępną w przypadku Twojego kodu .

Wybierając minSdkVersion, pamiętaj o tych kwestiach:

  • Wybranie niskiej wartości minSdkVersion zazwyczaj umożliwia szerszą dystrybucję: w bibliotece.

    Kod biblioteki zwykle nie jest wykonywany, chyba że aplikacja w sposób jawny. Aplikacja może nadal działać na wersji Androida, która jest mniejsza niż wymagana przez zależność biblioteki – jeśli biblioteka niezbędne do działania głównej funkcji aplikacji – przez sprawdzenie jej w czasie działania przed wywołaniem do biblioteki. Ustaw minSdkVersion w bibliotece na tyle niskie, aby można go umieszczać w aplikacjach i wywołać, gdy jest to możliwe, użytkowników.

  • Ustawienie wysokiej wartości minSdkVersion może uniemożliwić aplikacjom uwzględnianie do biblioteki.

    Scalanie plików manifestu, czyli krok w AGP, który scala pliki manifestu z aplikacji i zależności, wymusza na nich zależność ma wartość minSdkVersion większą niż aplikacja.

  • Ustawienie wysokiej wartości minSdkVersion może spowodować, że deweloperzy będą musieli wyłączyć aplikację kontrole bezpieczeństwa scalania plików manifestu, które powodują problemy na późniejszym etapie procesu kompilacji.

    Ponieważ scalanie plików manifestu uniemożliwia projektom aplikacji uwzględnianie biblioteki o wartości minSdkVersion wyższą niż sama aplikacja, deweloperzy aplikacji może wyłączyć kontrole bezpieczeństwa scalania pliku manifestu, aby zminimalizować kompilację . Ryzykuje to jednak w przyszłości problemy z niezgodnością.

  • Wybranie wysokiej wartości minSdkVersion może być konieczne w szczególnych przypadkach, gdy Plik manifestu biblioteki zawiera odbiornik lub inny mechanizm, a jego kod jest uruchamiany 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 z niej korzystać które jest niezbędne do uruchomienia biblioteki po przeprowadzeniu odpowiednich testów.

Aby zezwolić na umieszczanie w aplikacjach, użyj atrybutu Adnotacja RequiresApi w w celu wskazania aplikacji wywołujących, że muszą przeprowadzić weryfikację w czasie działania. Android, Lint używa informacji z narzędzia RequiresApi na potrzeby inspekcji. Więcej materiałów na temat korzystania z adnotacji w celu ulepszenia kodu API i interfejsów API, zapoznaj się z artykułem Ulepszanie kodu i przeglądanie danych za pomocą adnotacji.

Konfigurowanie metadanych AAR

Biblioteka Androida jest spakowana w formacie pliku Android Archive (AAR). Metadane AAR składają się z właściwości, które pomagają Biblioteki wykorzystywane przez AGP. Jeśli Twoją bibliotekę zajmuje niezgodny i metadanych AAR, użytkownikom wyświetla się komunikat o błędzie, i pomóc w rozwiązaniu problemu.

Wybierz wartość minCompileSdk

Począwszy od wersji 4.1, AGP obsługuje minCompileSdk Ta wartość określa minimalną compileSdk których mogą używać projekty. Jeśli biblioteka zawiera wpisy manifestu lub zasobów, które korzystają z nowszych atrybutów platformy, musisz ustaw tę wartość.

Wartość minCompileSdk można ustawić w parametrach defaultConfig{}, productFlavors{} i buildTypes{} bloki na poziomie modułu (build.gradle) plik:

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 priorytet tym ustawieniom lokalizacji w taki sposób:

  1. buildTypes{}

  2. productFlavors{}

  3. defaultConfig{}

W poprzednim przykładzie, gdzie minCompileSdk jest zdefiniowane w obu tych miejscach defaultConfig{} i productFlavors{}, productFlavors{} mają priorytet a minCompileSdk ma wartość 30.

Aby dowiedzieć się więcej o tym, jak Gradle nadaje priorytet ustawieniom podczas łączenia kodu i zasobów, zobacz Build with source .

Włącz urządzenia testowe

Sprzęt testowy są często używane do konfigurowania testowanego kodu lub ułatwiania testowania . Począwszy od wersji 7.1, AGP może tworzyć osprzęt testowy dla biblioteki projekty, jak również projekty aplikacji i funkcji dynamicznych.

Publikując bibliotekę, by inni mogli z niej korzystać, rozważ utworzenie testu dla Twojego interfejsu API. Urządzenia testowe można włączyć na poziomie modułu Plik build.gradle:

Odlotowe

android {
  testFixtures {
    enable = true
  }
}

Kotlin

android {
  testFixtures {
    enable = true
  }
}

Gdy włączysz osprzęt testowy, Gradle automatycznie utworzy Zbiór źródłowy src/testFixtures, w którym można zapisywać urządzenia testowe.

Więcej informacji znajdziesz w dokumentacji Gradle na temat korzystania urządzenia testowe.