narzędzie do pakietu

bundletool to podstawowe narzędzie, z którego korzysta Android Studio, czyli Android Gradle. i Google Play do utworzenia pakietu Android App Bundle. bundletool może przekonwertować pakiet aplikacji na różne pliki APK wdrażane na urządzeniach.

Pakiety Android SDK (ASB) i ich pliki APK są tworzone za pomocą bundletool. Jest są także dostępne jako narzędzie wiersza poleceń, dzięki czemu możesz tworzyć pakiety aplikacji Pakiet SDK tworzy pakiet SDK i odtwarza kompilację po stronie serwera aplikacji Google Play Pliki APK lub plik Pliki APK pakietu SDK z obsługą środowiska wykonawczego.

Pobierz język bundletool

Jeśli jeszcze nie masz tego za sobą, pobierz bundletool z Repozytorium GitHub.

Tworzenie i testowanie pakietu aplikacji

Możesz użyć Android Studio lub narzędzia wiersza poleceń bundletool, aby utworzyć Android App Bundle, a następnie przetestuj generowanie plików APK z tego pakietu.

Utwórz pakiet aplikacji

Użyj Android Studio i wtyczki Android do obsługi Gradle, aby skompiluj i podpisz pakiet Android App Bundle. Jeśli jednak użycie IDE nie jest możliwe – na przykład używasz lub ciągły serwer kompilacji. stworzenie pakietu aplikacji z poziomu wiersza poleceń i podpisz ją za pomocą jarsigner.

Więcej informacji o tworzeniu pakietów aplikacji za pomocą bundletool: zobacz Utwórz pakiet aplikacji za pomocą narzędzia bundletool

Generowanie zestawu plików APK z pakietu aplikacji

Po utworzeniu pakietu Android App Bundle sprawdź, jak Google Play używa go do generowania plików APK i określania ich działania po wdrożeniu na urządzeniu.

Pakiet aplikacji możesz przetestować na 2 sposoby:

Z tej sekcji dowiesz się, jak za pomocą bundletool przetestować pakiet aplikacji lokalnie.

Gdy bundletool generuje pliki APK z pakietu aplikacji, zawiera wygenerowany plik APK pliki APK w kontenerze nazywanym archiwum zestawu plików APK, który korzysta z pliku .apks . Aby wygenerować plik APK ustawiony dla wszystkich konfiguracji urządzeń, Twoja aplikacja z pakietu aplikacji, użyj polecenia bundletool build-apks jako wyświetlono:

bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks

Jeśli chcesz wdrożyć pliki APK na urządzeniu, musisz też dołączyć do pliku zgodnie z poniższym poleceniem. Jeśli nie określisz informacje o podpisywaniu, bundletool próbuje podpisać Twoje pliki APK przy użyciu klucza debugowania dla Ciebie.

bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
--ks=/MyApp/keystore.jks
--ks-pass=file:/MyApp/keystore.pwd
--ks-key-alias=MyKeyAlias
--key-pass=file:/MyApp/key.pwd

W tabeli poniżej opisujemy różne flagi i opcje, które możesz ustawić podczas używając polecenia bundletool build-apks:

Tabela 1. Opcje Polecenie bundletool build-apks

Zgłoś Opis
--bundle=path (Wymagane) Określa ścieżkę do pakietu aplikacji. które udało Ci się utworzyć w Android Studio. Więcej informacji: Utwórz projekt.
--output=path (Wymagane) Określa nazwę danych wyjściowych. .apks, który zawiera wszystkie artefakty pakietu APK . Aby przetestować artefakty w tym pliku na urządzeniu, wykonaj czynności opisane w sekcję z informacjami o wdrażaniu plików APK z połączonym urządzeniem.
--overwrite Zastępuje dowolny istniejący plik wyjściowy kodem ścieżkę określoną za pomocą opcji --output. Jeśli nie uwzględnia tej flagi, a plik wyjściowy już istnieje, otrzymasz błąd kompilacji.
--aapt2=path Określa niestandardową ścieżkę do AAPT2. Domyślnie bundletool zawiera własną wersję AAPT2.
--ks=path (Opcjonalnie) Określa ścieżkę do magazynu kluczy wdrożenia, który jest używany do i podpisać pliki APK. Jeśli nie podasz tej flagi, bundletool próbuje podpisać Twoje pliki APK za pomocą podpisywania debugowania .
--ks-pass=pass:password
lub
--ks-pass=file:/path/to/file
Określa hasło do magazynu kluczy. Jeśli wpisz hasło zwykłym tekstem, zastosuj je za pomocą funkcji pass:. Jeśli przekazujesz ścieżkę do pliku zawierającego hasło, zostaną sklasyfikowane go w usłudze file:. Jeśli określisz magazyn kluczy za pomocą atrybutu flagę --ks bez określania --ks-pass, bundletool prosi o podanie hasła przy użyciu wiersza poleceń.
--ks-key-alias=alias Określa alias klucza podpisywania, który chcesz stosować i ich używanie.
--key-pass=pass:password
lub
--key-pass=file:/path/to/file
Określa hasło klucza podpisywania. Jeśli wpisz hasło zwykłym tekstem, zastosuj je za pomocą funkcji pass:. Jeśli przekazujesz ścieżkę do pliku zawierającego hasło, zostaną sklasyfikowane go w usłudze file:.

Jeśli to hasło jest identyczne z tym hasłem dla magazynu kluczy, możesz pominąć tę flagę.

--connected-device Instruuje bundletool do utworzenia plików APK kierowanych na konfiguracji połączonego urządzenia. Jeśli nie podasz tej flagi, bundletool generuje pliki APK dla wszystkich konfiguracji urządzeń obsługiwanych przez aplikacje.
--device-id=serial-number Jeśli masz więcej niż 1 połączone urządzenie, za pomocą tej flagi określ identyfikator seryjny urządzenia, na którym chcesz wdrożyć aplikację.
--device-spec=spec_json Dostarcza ścieżkę do Plik .json określający żądaną konfigurację urządzenia na które mają być kierowane reklamy. Więcej informacji znajdziesz w sekcji Generowanie i używanie pliku JSON specyfikacji urządzenia .
--mode=universal Ustawia tryb na universal. Użyj tej opcji, jeśli chcesz, bundletool, aby utworzyć jeden plik APK zawierający wszystkie kod i zasoby aplikacji w taki sposób, aby pakiet APK był zgodny ze wszystkimi konfiguracji urządzeń obsługiwanych przez aplikację.

Uwaga: bundletool zawiera tylko moduły funkcji z wartością <dist:fusing dist:include="true"/> w z pliku manifestu w uniwersalnym pliku APK. Aby dowiedzieć się więcej, przeczytaj o pliku manifestu modułu funkcji.

Pamiętaj, że te pliki APK są większe niż pliki zoptymalizowane dla konkretnej konfiguracji urządzenia. Są one jednak można udostępniać testerom wewnętrznym, którzy na przykład chcesz przetestować aplikację na różnych konfiguracjach urządzeń.

--local-testing Umożliwia testowanie pakietu aplikacji lokalnie. Testy lokalne umożliwiają przeprowadzanie szybkich, iteracyjnych cykli testowania bez konieczności aby przesłać je na serwery Google Play.

Oto przykład, jak przetestować instalację modułu za pomocą flaga --local-testing, patrz Przetestuj instalacje modułów lokalnie.

Wdrażanie plików APK na połączonym urządzeniu

Gdy wygenerujesz zestaw plików APK, bundletool może wdrożyć odpowiednie kombinacji plików APK z tego zestawu na połączone urządzenie.

Na przykład jeśli masz połączone urządzenie z Androidem 5.0 (poziom interfejsu API 21) lub nowszy, bundletool przekazuje podstawowy plik APK, pliki APK modułu funkcji i plików APK konfiguracji wymaganych do uruchomienia aplikacji na danym urządzeniu. Ewentualnie, jeśli na połączonym urządzeniu jest zainstalowany Android 4.4 (poziom interfejsu API 20) lub niższy; bundletool szuka zgodnego wielu plików APK, które można wdrożyć na urządzeniu.

Aby wdrożyć aplikację z zestawu plików APK, użyj polecenia install-apks i podaj ścieżki pliku APK ustawionej za pomocą parametru flagę --apks=/path/to/apks jako w tym poleceniu. Jeśli masz podłączonych kilka urządzeń, określ urządzenie docelowe, dodając flaga --device-id=serial-id.

bundletool install-apks --apks=/MyApp/my_app.apks

Generowanie zestawu plików APK przeznaczonych na konkretne urządzenia

Jeśli nie chcesz tworzyć zestawu plików APK dla wszystkich konfiguracji urządzeń, możesz tworzyć pliki APK kierowane wyłącznie na konfigurację przy użyciu opcji --connected-device, jak pokazano w poniższym poleceniu. Jeśli masz podłączonych kilka urządzeń, określ urządzenie docelowe, dodając parametr flaga --device-id=serial-id.

bundletool build-apks --connected-device
--bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks

Generowanie i używanie plików JSON specyfikacji urządzenia

bundletool może wygenerować zestaw plików APK przeznaczony na urządzenie konfiguracji określonej w pliku JSON. Aby najpierw wygenerować plik JSON dla podłączonego urządzenia, uruchom to polecenie:

bundletool get-device-spec --output=/tmp/device-spec.json

bundletool utworzy w katalogu narzędzia plik JSON dla Twojego urządzenia. Ty można przekazać plik do bundletool, by wygenerować zestaw plików APK, kierować wyłącznie na konfigurację opisaną w tym pliku JSON w następujący sposób:

bundletool build-apks --device-spec=/MyApp/pixel2.json
--bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks

Ręczne tworzenie pliku JSON specyfikacji urządzenia

Jeśli nie masz dostępu do urządzenia, na które chcesz utworzyć ustawiony plik APK – na przykład jeśli chcesz wypróbować aplikację na urządzeniu, na którym nie masz dostępu. możesz ręcznie utworzyć plik JSON w następującym formacie:

{
  "supportedAbis": ["arm64-v8a", "armeabi-v7a"],
  "supportedLocales": ["en", "fr"],
  "screenDensity": 640,
  "sdkVersion": 27
}

Następnie możesz przekazać ten plik JSON do polecenia bundle extract-apks zgodnie z opisem w poprzedniej sekcji.

Wyodrębnianie plików APK przeznaczonych na konkretne urządzenie z istniejącego zestawu plików APK

Jeśli masz już zestaw plików APK i chcesz z niego wyodrębnić podzbiór plików APK kierowane na określoną konfigurację urządzenia, możesz użyć extract-apks i określ specyfikację urządzenia w formacie JSON w następujący sposób:

bundletool extract-apks
--apks=/MyApp/my_existing_APK_set.apks
--output-dir=/MyApp/my_pixel2_APK_set.apks
--device-spec=/MyApp/bundletool/pixel2.json

Pomiar szacowanych rozmiarów plików APK do pobrania w zestawie APK

Do pomiaru szacunkowych rozmiarów pobieranych plików APK w ustawionym pliku APK ma być skompresowana po sieci, użyj polecenia get-size total:

bundletool get-size total --apks=/MyApp/my_app.apks

Działanie polecenia get-size total możesz zmienić za pomocą następujące flagi:

Tabela 2. Opcje Polecenie get-size total

Zgłoś Opis
--apks=path (Wymagane) Określa ścieżkę do istniejącego pliku zestawu APK. których rozmiar pobierania jest mierzony.
--device-spec=path Określa ścieżkę do pliku specyfikacji urządzenia (z get-device-spec lub utworzonego ręcznie). Aby ocenić zbiór konfiguracji, możesz podać częściową ścieżkę.
--dimensions=dimensions Określa wymiary używane do obliczania szacunkowych rozmiarów. Akceptuje rozdzielana przecinkami lista: SDK, ABI, SCREEN_DENSITY i LANGUAGE. Aby mierzyć wszystkich wymiarów, wybierz ALL.
--instant Mierzy rozmiar pobieranych plików APK z obsługą wersji błyskawicznej, a nie plików APK z możliwością zainstalowania. Domyślnie bundletool mierzy: rozmiar pobieranych plików APK z możliwością zainstalowania.
--modules=modules Określa rozdzieloną przecinkami listę modułów w zestawie APK do rozważenia. w pomiarze. Polecenie bundletool automatycznie obejmuje wszystkie moduły zależne dla określonego zbioru, Domyślnie atrybut mierzy rozmiar pobierania wszystkich modułów zainstalowanych podczas po pierwszym pobraniu.

Tworzenie pakietu aplikacji za pomocą zależności pakietu SDK (funkcja eksperymentalna)

Możesz utworzyć pakiet Android App Bundle, korzystając z zależności Android SDK Bundle (ASB) z wiersza poleceń i podpisz go jarsigner.

Każdy moduł pakietu aplikacji zawiera plik Module Protocol Buffer (.pb): runtime_enabled_sdk_config.pb Ten plik zawiera listę pakietów SDK od modułu pakietu aplikacji. Aby zobaczyć pełną definicję tego pliku, zobacz runtime_enabled_sdk_config.proto.

Aby utworzyć pakiet aplikacji o zależności pakietu SDK, wykonaj czynności z sekcji dotyczącej utwórz pakiet aplikacji za pomocą narzędzia bundletool i dodaj polecenie runtime_enabled_sdk_config.pb do pliku ZIP każdego modułu aplikacji ze skompilowanym kodem i zasobami.

Niektóre ważne pola w pliku runtime_enabled_sdk_config.pb:

  • Skrót certyfikatu: skrót SHA-256 certyfikatu dla klucza. używany do podpisywania plików APK pakietu SDK. Odpowiada to certyfikatowi w SdkMetadata.pb w formacie archiwum Android SDK.

  • Resources Package ID (Identyfikator pakietu zasobów): identyfikator wszystkich zasobów w tym pakiecie SDK. są zmapowane podczas generowania plików APK na potrzeby umieszczenia pakietu SDK w aplikacji. Zapewnia to zgodność wsteczną.

Pakiet SDK może występować tylko w jednym module. Jeśli wiele modułów jest zależnych od tego samego SDK, należy usunąć duplikaty tej zależności i przenieść ją do modułu podstawowego. Poszczególne moduły nie mogą zależeć od różnych wersji pakietu SDK.

Generowanie plików APK z pakietu aplikacji o zależności pakietu SDK (funkcja eksperymentalna)

Aby wygenerować pliki APK z pakietu aplikacji, wykonaj czynności opisane w sekcji dotyczącej generując zestaw plików APK z pakietu aplikacji albo w sekcji na temat generowanie zestawu plików APK przeznaczonych na konkretne urządzenia i udostępnić polecenie bundletool build-apks w pakietach SDK, w zależności od aplikacji. Te pakiety SDK można udostępniać w formacie SDK lub jako pakiet SDK. Format archiwum.

Możesz dostarczać pakiety SDK jako pakiety SDK, dodając flagę --sdk-bundles jako następujące:

bundletool build-apks --bundle=app.aab --sdk-bundles=sdk1.asb,sdk2.asb \
    --output=app.apks

Pakiety SDK możesz przesyłać jako archiwa SDK, dodając flagę --sdk-archives, w następujący sposób:

bundletool build-apks --bundle=app.aab --sdk-archives=sdk1.asar,sdk2.asar \
    --output=app.apks
Generuj pliki APK z pakietu aplikacji zależnego od pakietu SDK w przypadku urządzeń nieobsługujących biblioteki SDK

Urządzenia starsze niż Android 13 nie obsługują instalowania ani uruchamiania bibliotek SDK w środowisku wykonawczym pakietu SDK. Pakiet Bundletool ukrywa złożoność wsteczną i generuje wiele wariantów pakietu APK z tego samego pakietu aplikacji, uruchom polecenie bundletool build-apks z opcją --sdk-bundles lub --sdk-archives. Te różne warianty są kierowane na urządzenia o różnych możliwościach:

  • Istnieje wariant przeznaczony dla nowszych urządzeń, w których pakiet SDK jest zainstalowany jako osobny z aplikacji, a pliki APK aplikacji nie zawierają żadnych treści z pakietu SDK.
  • Istnieją co najmniej 1 wariant dla starszych urządzeń, do których dodano pliki APK SDK. do pakietu APK aplikacji ustawionego jako dodatkowe pakiety APK. Pliki APK pakietu SDK należą do aplikacji pakietu SDK. W tym przypadku środowisko wykonawcze SDK jest emulowane w środowisku wykonawczym aplikacji w urządzenia.

Podobnie jak w przypadku generowania plików APK dla pakietów aplikacji bez zależności od SDK, bundletool extract-apks i bundletool install-apks zwracają przefiltrowany zbiór wartości Pliki APK z najlepszej wersji dla połączonego urządzenia lub danego urządzenia config.

Zaawansowane zastosowania, które interesują tylko generowanie podziałów plików APK z archiwum pakietu SDK dla określonej aplikacji na starsze urządzenia, użyj bundletool build-sdk-apks-for-app w następujący sposób:

bundletool build-sdk-apks-for-app --app-properties=app-properties.json \
    --sdk-archive=sdk.asar --output=sdk.apks

Plik app-properties powinien zawierać pola opisane w runtime_enabled_sdk_config.proto. Oto co app-properties wygląda tak:

{
  "package_name": "com.my.app",
  "version_code": 1234,
  "min_sdk_version": 21,
  "resources_package_id": 0x7e
}

Polecenie bundletool build-sdk-apks-for-app generuje podzbiór aplikacji Pliki APK odpowiadające zawartości pakietu SDK w nazwie pakietu aplikacji. Dostępne opcje łączyć te pliki APK z innymi plikami APK zawierającymi treść aplikacji. Jeśli na przykład tworzy się je osobno i stopniowo, a potem instaluje się razem na urządzeniu. który nie obsługuje środowiska wykonawczego SDK.

Tworzenie i testowanie pakietu SDK (funkcja eksperymentalna)

Za pomocą bundletool możesz utworzyć system ASB i przetestować generowanie pliki wymagane do instalacji i dystrybucji.

Utwórz pakiet SDK

Plik ASB możesz utworzyć i podpisać z poziomu wiersza poleceń za pomocą jarsigner.

Aby utworzyć pakiet SDK, wykonaj te czynności:

  1. Wygeneruj plik manifestu i zasoby pakietu SDK w formacie proto wykonując te same czynności co w przypadku pakietów aplikacji.

  2. Zapakuj skompilowany kod i zasoby pakietu SDK do podstawowego pliku ZIP, tak samo jak w przypadku modułu aplikacji.

  3. Wygeneruj plik SdkModulesConfig.pb.json i SdkBundleConfig.pb.json zgodny z formatem opisanym w Specyfikacja pakietu Android SDK.

  4. Utwórz swój system ASB przy użyciu polecenia bundletool build-sdk-bundle zgodnie z następujące:

bundletool build-sdk-bundle --sdk-bundle-config=SdkBundleConfig.pb.json \
    --sdk-modules-config=SdkModulesConfig.pb.json \
    --modules=base.zip --output=sdk.asb

W tabeli poniżej opisujemy różne flagi i opcje, które możesz ustawić podczas za pomocą polecenia bundletool build-sdk-bundle.

Tabela 3. Opcje Polecenie bundletool build-sdk-bundle

Zgłoś Opis
--modules (Wymagane) Plik modułu, z którego ma utworzyć ostateczną wersję ASB od.
--output (Wymagane) Ścieżka do miejsca, w którym ma zostać utworzony punkt ASB.
--sdk-modules-config (Wymagane) Ścieżka do pliku JSON opisującego konfigurację. modułów SDK. Aby dowiedzieć się, jak sformatować plik JSON, zobacz Specyfikacja pakietu Android SDK.
--sdk-bundle-config Ścieżka do pliku JSON opisującego konfigurację pakietu SDK. Aby dowiedzieć się, jak sformatować plik JSON, zobacz Specyfikacja pakietu Android SDK.
--metadata-file Plik, w którym mają zostać uwzględnione metadane dla ASB. Format wartości flagi to <bundle-path>:<physical-file>, gdzie <bundle-path> oznacza lokalizację pliku w Katalog metadanych pakietu SDK, a <physical-file> to w istniejącym pliku, który zawiera nieprzetworzone dane, które mają być przechowywane. Flaga może być np. powtórzenia.
--overwrite Jeśli ta opcja jest skonfigurowana, zastępuje wszystkie wcześniejsze dane wyjściowe.

Generowanie plików APK z pakietu SDK

Po utworzeniu pakietu SDK możesz przetestować go lokalnie przez plików APK za pomocą polecenia bundletool build-sdk-apks, jak widać w tabeli ten kod:

bundletool build-sdk-apks --sdk-bundle=sdk.asb --output=sdk.apks

Gdy bundletool generuje pliki APK z pakietu SDK, narzędzie zawiera komponent Pakiety APK w kontenerze nazywanym archiwum zestawu plików APK, który korzysta z pliku .apks . bundletool generuje 1 samodzielny plik APK z pakietu SDK która kieruje reklamy na wszystkie konfiguracje urządzeń.

Jeśli chcesz wdrożyć ASB na urządzeniu, musisz też dodać kod aplikacji informacje o podpisie, które widzisz w tym poleceniu:

bundletool build-sdk-apks --sdk-bundle=sdk.asb --output=sdk.apks \
    --ks=keystore.jks \
    --ks-pass=file:/keystore.pwd \
    --ks-key-alias=KeyAlias \
    --key-pass=file:/key.pwd

W tabeli poniżej opisujemy różne flagi i opcje, które możesz ustawić podczas za pomocą polecenia bundletool build-sdk-apks.

Tabela 4. Opcje Polecenie bundletool build-sdk-apks

Zgłoś Opis
--sdk-bundle (Wymagane) Ścieżka do pakietu SDK. Musi mieć rozszerzenie .asb
--output (Wymagane) Domyślnie ścieżka, w której plik APK ma być archiwizowany. do utworzenia. Ewentualnie, jeśli używasz --output-format=DIRECTORY, to ścieżka do katalogu, w którym mają być przechowywane wygenerowane pliki APK.
--ks Ścieżka do magazynu kluczy, którego chcesz użyć do podpisania plików APK.
--ks-key-alias Alias klucza, który ma być używany w magazynie kluczy do podpisywania plików APK.
--key-pass

Hasło klucza w magazynie kluczy, które będzie używane do podpisania wygenerowanego plików APK.

Jeśli przekazujesz hasło w postaci zwykłego tekstu, musisz dodać prefiks do wartości dzięki pass:. Na przykład: pass:qwerty. Jeśli hasło jest pierwszym wierszem pliku, musisz poprzedzić wartość dzięki file:. Przykład: file:/tmp/myPassword.txt

Jeśli ta flaga nie jest ustawiona, magazyn kluczy podjęto próbę wprowadzenia hasła. Jeśli to nie pomoże, w terminalu wiersza poleceń pojawi się prośba o wpisanie hasło.

--ks-pass

Hasło magazynu kluczy, które ma być używane do podpisywania wygenerowanych plików APK.

Jeśli przekazujesz hasło w postaci zwykłego tekstu, musisz dodać prefiks do wartości dzięki pass:. Na przykład: pass:qwerty. Jeśli jest pierwszym wierszem pliku, poprzedź jego wartość ciągiem file: Przykład: file:/tmp/myPassword.txt

Jeśli ta flaga nie jest ustawiona, parametr terminal w wierszu poleceń wymaga podania hasła.

--aapt2 Ścieżka do pliku binarnego AAPT2, którego chcesz użyć.
--output-format Format wyjściowy wygenerowanych plików APK. Domyślnie ta opcja to APK_SET, który przesyła pliki APK do archiwum zestawu plików APK, Utworzono. Jeśli ma wartość DIRECTORY, pliki APK są przesyłane do pliku w katalogu określonym przez --output.
--verbose Jeśli jest ustawione, powoduje wydrukowanie dodatkowych informacji o wykonaniu polecenia w standardowy strumień wyjścia.
--version-code Kod wersji pakietu SDK. To jest kod wersji używany przez platformę Androida aby zainstalować pakiet APK, a nie wersję pakietu SDK. Jako wartość tej opcji można ustawić: dowolną wartość. Jeśli nie jest skonfigurowana, stosowana jest domyślna wartość 0.
--overwrite Jeśli ta opcja jest skonfigurowana, zastępuje wszystkie wcześniejsze dane wyjściowe.

Wdrażanie, wyodrębnianie i mierzenie rozmiaru plików APK z pakietem SDK

Możesz wykonać te same czynności co w przypadku wdrażania aplikacji pliki APK na połączone urządzenie, wyodrębnianie danych dla konkretnego urządzenia; pliki APK z istniejącego zestawu plików APK i mierzyć szacowane wartości rozmiarów pobierania plików APK w zestawie plików APK.

Generowanie archiwum SDK z pakietu SDK

Po przesłaniu pliku ASB do kanału dystrybucji przez np. Google Play, interfejs ASB jest przekształcany w pakiet SDK na Androida Archiwizuj (.asar) na potrzeby dystrybucji wśród deweloperów aplikacji za pomocą Maven. Więcej informacji na temat formatu można znaleźć w sekcji dotyczącej Specyfikacja formatu archiwum SDK.

Po utworzeniu ASB możesz przetestować Zarchiwizuj pakiet Android SDK lokalnie za pomocą polecenia bundletool build-sdk-asar, jak w tym kodzie:

bundletool build-sdk-asar --sdk-bundle=sdk.asb --output=sdk.asar \
    --apk-signing-key-certificate=keycert.txt

W tabeli poniżej opisujemy różne flagi i opcje, które możesz ustawić podczas za pomocą polecenia bundletool build-sdk-asar.

Tabela 5. Opcje Polecenie bundletool build-sdk-asar

Zgłoś Opis
--apk-signing-key-certificate (Wymagane) Ścieżka do certyfikatu podpisywania pliku APK pakietu SDK. To jest certyfikat odpowiadający kluczowi użytemu do podpisania plików APK w build-sdk-apks.
--output (Wymagane) Ścieżka, w której ma znajdować się plik .asar. Utworzono.
--sdk-bundle (Wymagane) Ścieżka do pakietu SDK. Musi mieć rozszerzenie .asb
--overwrite Jeśli ta opcja jest skonfigurowana, zastępuje wszystkie wcześniejsze dane wyjściowe.

Formaty SDK z obsługą środowiska wykonawczego (funkcja eksperymentalna)

Pakiety SDK z obsługą środowiska wykonawczego wprowadzają 2 formaty plików na Androida:

  • Pakiet Android SDK (.asb) używany do publikowania pakietu SDK z włączonym środowiskiem wykonawczym do sklepów z aplikacjami.
  • Archiwum Android SDK Archive (.asar) używane do rozpowszechniania pakiet SDK z włączonym środowiskiem wykonawczym w Maven.

Format pakietu Android SDK

Pakiet SDK to format publikowania pakietów SDK używanych w czasie działania aplikacji. Zawiera wszystkie kod i zasoby pakietu SDK, w tym kod z bibliotek pakietu SDK; zależy od tego, Nie zawiera kodu ani zasobów innych aplikacji działających w środowisku wykonawczym Pakiety SDK, od których zależy ten pakiet SDK.

Android SDK Bundle (ASB) to podpisany plik ZIP z rozszerzeniem .asb Kod i zasoby pakietu SDK są w nim zorganizowane podobnie jak który znajduje się w pakiecie APK. Plik ASB zawiera też kilka plików konfiguracji, które pomagają wygenerować pliki APK z możliwością zainstalowania.

Rysunek 1. Zawartość pliku pakiet Android SDK.

Na poniższej liście opisujemy niektóre pliki ASB w bardziej szczegóły:

  • SdkBundleConfig.pb: plik konfiguracji w formacie proto, zawierający lista pakietów SDK używanych w czasie działania aplikacji, od których zależy działanie Twojego pakietu SDK. Aby uzyskać pełną definicję znajdziesz w sdk_bundle_config.proto .

  • modules.resm: plik ZIP zawierający wszystkie dane potrzebne do wygenerowania pliki APK z pakietu SDK.

  • SdkModulesConfig.pb: plik konfiguracji w formacie proto. Ten plik zawiera nazwę pakietu SDK, wersję i nazwę klasy punktu wejścia pakietu SDK dla platforma (SandboxedSdkProvider). Pełną definicję znajdziesz tutaj sdk_modules_config.proto.

  • base/: pojedynczy moduł zawierający kod i zasoby SDK.

    • manifest/: plik manifestu pakietu SDK w formacie proto.
    • dex/: skompilowany kod w formacie DEX. Można podać wiele plików DEX.
    • res/, lib/, assets/: te katalogi są identyczne z katalogami w typowy plik APK. Ścieżki w tych katalogach są zachowywane podczas generowania Pliki APK pakietu SDK.
    • root/: w tym katalogu są przechowywane pliki, które zostaną później przeniesione do katalogu głównego pakietów APK. Mogą one na przykład obejmować zasoby oparte na Javie, które Twój pakiet SDK wczytuje się za pomocą Class.getResource() . Ścieżki w tym katalogu również są zachowywane.
  • BUNDLE-METADATA: w tym katalogu znajdują się pliki metadanych zawierające przydatne w przypadku narzędzi lub sklepów z aplikacjami. Takie pliki metadanych mogą uwzględnij mapowania ProGuard i pełną listę plików DEX Twojego pakietu SDK. Pliki z tego katalogu nie są spakowane do plików APK pakietu SDK.

Format archiwum Android SDK

Android SDK Archive to format dystrybucji pakietu SDK używanego w czasie działania aplikacji na Maven. Jest to plik ZIP z rozszerzeniem .asar. Plik zawiera wszystkie informacje potrzebne narzędziom do tworzenia aplikacji pakietu Android App Bundle, który zależy od pakietu SDK używanego w czasie działania aplikacji.

Rysunek 2. Zawartość pliku Android SDK Archive.

Na tej liście opisujemy niektóre pliki Android SDK Archive w szczegóły:

  • SdkMetadata.pb: plik konfiguracji w formacie proto zawierający Nazwa i wersja pakietu SDK oraz skrót certyfikatu dla klucza używanego do podpisywania Pliki APK wygenerowane dla tego pakietu SDK. Pełną definicję znajdziesz tutaj sdk_metadata.proto .

  • modules.resm: plik ZIP zawierający wszystkie dane potrzebne do wygenerowania pliki APK z pakietu SDK. Jest taki sam jak plik .resm w Pakiet Android SDK.

  • AndroidManifest.xml: plik manifestu pakietu SDK w formacie tekstowym XML.

Dodatkowe materiały

Aby dowiedzieć się więcej o korzystaniu z usługi bundletool, obejrzyj Pakiety aplikacji: testowanie pakietów za pomocą narzędzia bundletool i Konsoli Play.