bundletool
to podstawowe narzędzie, za pomocą którego Android Studio, wtyczka Androida do obsługi Gradle i Google Play tworzą pakiety Android App Bundle. bundletool
może przekonwertować pakiet aplikacji na różne pliki APK wdrożone na urządzeniach.
Pakiety Android SDK (ASB) i ich pliki APK bazują na bundletool
. Jest on też dostępny jako narzędzie wiersza poleceń, dzięki czemu możesz samodzielnie tworzyć pakiety aplikacji i pakietów SDK oraz odtworzyć po stronie serwera kompilację plików APK aplikacji lub pakietów SDK używanych w czasie działania Google Play.
Pobierz język bundletool
Pobierz bundletool
z repozytorium GitHub.
Tworzenie i testowanie pakietu aplikacji
Możesz użyć Android Studio lub narzędzia wiersza poleceń bundletool
, by utworzyć pakiet Android App Bundle, a potem przetestować generowanie plików APK z poziomu tego pakietu aplikacji.
Tworzenie pakietu aplikacji
Użyj Android Studio i wtyczki Androida do obsługi Gradle, by utworzyć i podpisać pakiet Android App Bundle.
Jeśli jednak nie możesz skorzystać z IDE, bo na przykład korzystasz z serwera ciągłej kompilacji, możesz też utworzyć pakiet aplikacji z poziomu wiersza poleceń i podpisać go za pomocą jarsigner
.
Więcej informacji o tworzeniu pakietów aplikacji za pomocą narzędzia bundletool
znajdziesz w artykule Tworzenie pakietu aplikacji przy użyciu narzędzia pakietu.
Generowanie zestawu plików APK z pakietu aplikacji
Po utworzeniu pakietu Android App Bundle sprawdź, w jaki sposób Google Play wykorzystuje go do generowania plików APK i jak zachowują się one po wdrożeniu na urządzeniu.
Pakiet aplikacji możesz przetestować na 2 sposoby:
- Użyj lokalnie narzędzia wiersza poleceń
bundletool
. - Prześlij pakiet do Konsoli Play przez Google Play, używając ścieżki testów.
Z tej sekcji dowiesz się, jak za pomocą usługi bundletool
przetestować pakiet aplikacji lokalnie.
Gdy bundletool
generuje pliki APK z pakietu aplikacji, zawiera wygenerowane pliki APK w kontenerze o nazwie archiwum zestawu plików APK, który używa rozszerzenia pliku .apks
. Aby wygenerować na podstawie pakietu aplikacji zestaw APK dla wszystkich konfiguracji urządzeń obsługiwanych przez Twoją aplikację, użyj polecenia bundletool build-apks
w podany niżej sposób:
bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
Jeśli chcesz wdrożyć na urządzeniu pliki APK, musisz też podać informacje dotyczące podpisywania aplikacji, jak pokazano w poniższym poleceniu. Jeśli nie podasz danych logowania, bundletool
spróbuje podpisać Twoje pliki APK kluczem debugowania.
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 znajdziesz bardziej szczegółowe informacje o różnych flagach i opcjach, które możesz ustawić przy użyciu polecenia bundletool build-apks
:
Tabela 1. Opcje polecenia bundletool build-apks
Zgłoś | Opis |
---|---|
--bundle=path |
(Wymagane) Określa ścieżkę do pakietu aplikacji utworzonego za pomocą Android Studio. Więcej informacji znajdziesz w artykule o tworzeniu projektu. |
--output=path |
(Wymagane) Określa nazwę wyjściowego pliku .apks , który zawiera wszystkie artefakty APK Twojej aplikacji. Aby przetestować artefakty w tym pliku na urządzeniu, wykonaj czynności opisane w sekcji na temat wdrażania plików APK na połączonym urządzeniu.
|
--overwrite |
Zastępuje istniejący plik wyjściowy ścieżką określoną za pomocą opcji --output . Jeśli nie dodasz tej flagi, a plik wyjściowy już istnieje, wystąpi 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 używanego do podpisywania plików APK. Jeśli nie dodasz tej flagi, bundletool spróbuje podpisać Twoje pliki APK kluczem podpisywania debugowania.
|
--ks-pass=pass:password lub --ks-pass=file:/path/to/file |
Określa hasło magazynu kluczy. Jeśli podasz hasło w postaci zwykłego tekstu, określ je za pomocą atrybutu pass: .
Jeśli przekażesz ścieżkę do pliku zawierającego hasło, zakwalifikuj je za pomocą właściwości file: . Jeśli określisz magazyn kluczy przy użyciu flagi --ks bez określenia --ks-pass , bundletool wyświetli prośbę o podanie hasła z wiersza poleceń.
|
--ks-key-alias=alias |
Określa alias klucza podpisywania, którego chcesz użyć. |
--key-pass=pass:password lub --key-pass=file:/path/to/file |
Określa hasło dla klucza podpisywania. Jeśli podasz hasło w postaci zwykłego tekstu, określ je za pomocą atrybutu pass: .
Jeśli przekażesz ścieżkę do pliku zawierającego hasło, zakwalifikuj je za pomocą właściwości file: . Jeśli to hasło jest takie samo jak hasło do magazynu kluczy, możesz pominąć tę flagę. |
--connected-device |
Nakazuje usłudze bundletool utworzenie plików APK kierowanych na konfigurację połączonego urządzenia. Jeśli nie dodasz tej flagi, bundletool wygeneruje pliki APK dla wszystkich konfiguracji urządzeń obsługiwanych przez Twoją aplikację.
|
--device-id=serial-number |
Jeśli masz więcej niż 1 połączone urządzenie, użyj tej flagi, aby określić identyfikator seryjny urządzenia, na którym chcesz wdrożyć swoją aplikację. |
--device-spec=spec_json |
Podaje ścieżkę do pliku .json określającego konfigurację urządzenia, na którą chcesz kierować reklamy. Więcej informacji znajdziesz w sekcji dotyczącej generowania i używania plików JSON specyfikacji urządzenia.
|
--mode=universal |
Ustawia tryb na universal . Użyj tej opcji, jeśli chcesz, aby usługa bundletool utworzyła jeden plik APK zawierający cały kod i zasoby aplikacji. W ten sposób będzie on zgodny ze wszystkimi konfiguracjami urządzeń obsługiwanymi przez Twoją aplikację.
Uwaga: Pamiętaj, że pliki APK są większe niż te zoptymalizowane pod kątem konkretnej konfiguracji urządzenia. Łatwiej je jednak udostępniać testerom wewnętrznym, którzy na przykład chcą przetestować aplikację na wielu konfiguracjach urządzeń. |
--local-testing
|
Umożliwia korzystanie z pakietu aplikacji do testów lokalnych.
Testy lokalne umożliwiają szybkie, iteracyjne cykle testowania bez konieczności przesyłania plików na serwery Google Play.
Przykład testowania instalacji modułów za pomocą flagi |
Wdrażanie plików APK na połączonym urządzeniu
Gdy wygenerujesz zestaw plików APK, bundletool
może wdrożyć na połączonym urządzeniu odpowiednią kombinację plików APK z tego zestawu.
Jeśli na przykład masz połączone urządzenie z Androidem 5.0 (poziom interfejsu API 21) lub nowszym, bundletool
przekazuje podstawowy plik APK, pliki APK modułów funkcji oraz pliki APK konfiguracji wymagane do uruchomienia aplikacji na danym urządzeniu. Jeśli połączone urządzenie korzysta z Androida 4.4 (poziom interfejsu API 20) lub starszego, bundletool
wyszukuje zgodny wiele plików APK do wdrożenia na urządzeniu.
Aby wdrożyć aplikację z zestawu APK, użyj polecenia install-apks
i podaj ścieżkę zestawu APK, używając flagi --apks=/path/to/apks
, jak w tym poleceniu. Jeśli masz połączonych wiele urządzeń, określ urządzenie docelowe, dodając flagę --device-id=serial-id
.
bundletool install-apks --apks=/MyApp/my_app.apks
Generowanie zestawu plików APK dla konkretnego urządzenia
Jeśli nie chcesz tworzyć zestawu plików APK dla wszystkich konfiguracji urządzeń obsługiwanych przez Twoją aplikację, możesz utworzyć pliki APK kierowane tylko na konfigurację połączonego urządzenia, korzystając z opcji --connected-device
, jak pokazano w poleceniu poniżej.
Jeśli masz podłączonych kilka urządzeń, określ urządzenie docelowe, dodając flagę --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 APK kierowany na konfigurację urządzenia określoną w pliku JSON. Aby najpierw wygenerować plik JSON dla połą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. Następnie możesz przekazać ten plik do bundletool
, aby wygenerować zestaw plików APK kierowanych tylko na konfigurację opisaną w tym pliku JSON. Jak to działa:
bundletool build-apks --device-spec=/MyApp/pixel2.json --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
Ręczne tworzenie pliku JSON ze specyfikacją urządzenia
Jeśli nie masz dostępu do urządzenia, dla którego chcesz utworzyć docelowy zestaw plików APK (np. chcesz wypróbować aplikację na urządzeniu, którego nie masz pod ręką), możesz ręcznie utworzyć plik JSON w tym formacie:
{
"supportedAbis": ["arm64-v8a", "armeabi-v7a"],
"supportedLocales": ["en", "fr"],
"screenDensity": 640,
"sdkVersion": 27
}
Następnie możesz przekazać ten kod JSON do polecenia bundle extract-apks
w sposób opisany w poprzedniej sekcji.
Wyodrębnianie plików APK właściwych dla konkretnych urządzeń z istniejącego zestawu plików APK
Jeśli masz istniejący zestaw APK i chcesz wyodrębnić z niego podzbiór plików APK przeznaczonych na konkretną konfigurację urządzenia, możesz użyć polecenia extract-apks
i określić plik JSON ze specyfikacją urządzenia w ten 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 szacowanego rozmiaru pobieranego pliku APK w zestawie APK
Aby zmierzyć szacowane rozmiary plików APK do pobrania w zestawie APK w takiej postaci, w jakiej byłyby przesyłane skompresowane przez przewód, użyj polecenia get-size total
:
bundletool get-size total --apks=/MyApp/my_app.apks
Możesz zmienić działanie polecenia get-size total
za pomocą tych flag:
Tabela 2. Opcje polecenia get-size total
Zgłoś | Opis |
---|---|
--apks=path |
(Wymagane) Określa ścieżkę do istniejącego pliku z zestawem APK, którego rozmiar pobierania jest mierzony. |
--device-spec=path |
Określa ścieżkę do pliku ze specyfikacją urządzenia (z get-device-spec lub utworzonego ręcznie) na potrzeby dopasowywania.
Możesz podać częściową ścieżkę, aby ocenić zbiór konfiguracji.
|
--dimensions=dimensions
| Określa wymiary używane do obliczania szacowanych rozmiarów. Akceptuje listę rozdzielonych przecinkami: SDK , ABI , SCREEN_DENSITY i LANGUAGE . Aby mierzyć we wszystkich wymiarach, wybierz ALL .
|
--instant |
Mierzy rozmiar pobieranego pliku APK z obsługą wersji błyskawicznej zamiast plików APK z możliwością zainstalowania. Domyślnie bundletool mierzy rozmiary pobieranego pliku APK, który można zainstalować.
|
--modules=modules |
Określa rozdzieloną przecinkami listę modułów w zestawie APK, które mają być uwzględnione w pomiarze. Polecenie bundletool automatycznie zawiera wszystkie moduły zależne w określonym zestawie. Domyślnie polecenie mierzy rozmiar pobierania wszystkich modułów zainstalowanych podczas pierwszego pobierania.
|
Tworzenie pakietu aplikacji z zależnością pakietu SDK (eksperymentalne)
Pakiet Android App Bundle możesz utworzyć na podstawie zależności Android SDK Bundle (ASB) z poziomu wiersza poleceń i podpisać go za pomocą jarsigner.
Każdy moduł pakietu aplikacji zawiera plik .pb
(Module Protocol Buffer): runtime_enabled_sdk_config.pb
. Ten plik zawiera listę pakietów SDK,
od których zależy moduł pakietów aplikacji. Pełną definicję tego pliku znajdziesz w opisie pliku runtime_enabled_sdk_config.proto
.
Aby utworzyć pakiet aplikacji z zależnością pakietu SDK, wykonaj czynności opisane w sekcji poświęconej tworzeniu pakietu aplikacji za pomocą narzędzia Bundle i dodaj do pliku ZIP każdego modułu aplikacji plik runtime_enabled_sdk_config.pb
zawierający skompilowany kod i zasoby.
Najważniejsze pola w pliku runtime_enabled_sdk_config.pb
:
Skrót certyfikatu: skrót SHA-256 certyfikatu dla klucza używanego do podpisywania plików APK pakietu SDK. Odpowiada to certyfikatowi w pliku
SdkMetadata.pb
w formacie Android SDK Archive.Identyfikator pakietu zasobów: identyfikator pakietu, na który są mapowane wszystkie zasoby z tego pakietu SDK podczas generowania plików APK służących do umieszczenia pakietu SDK w aplikacji. Umożliwia to zgodność wsteczną.
Pakiet SDK może występować tylko w jednym module. Jeśli z tego samego pakietu SDK korzysta kilka modułów, należy usunąć duplikaty tej zależności i przenieść ją do modułu podstawowego. Różne moduły nie mogą zależeć od różnych wersji pakietu SDK.
Generowanie plików APK z pakietu aplikacji z zależnością pakietu SDK (funkcja eksperymentalna)
Aby wygenerować pliki APK z pakietu aplikacji, wykonaj czynności opisane w sekcji poświęconej generowaniu zestawu plików APK z pakietu aplikacji lub w sekcji poświęconej generowaniu zestawu plików APK dla konkretnego urządzenia. Następnie prześlij polecenie bundletool build-apks
z pakietami SDK, od których zależy aplikacja. Pakiety SDK można udostępniać w formacie pakietu SDK lub pliku SDK Archive.
Pakiety SDK możesz udostępniać w postaci pakietów SDK, dodając flagę --sdk-bundles
w ten sposób:
bundletool build-apks --bundle=app.aab --sdk-bundles=sdk1.asb,sdk2.asb \ --output=app.apks
Pakiety SDK możesz udostępnić w postaci archiwów SDK, dodając flagę --sdk-archives
w ten sposób:
bundletool build-apks --bundle=app.aab --sdk-archives=sdk1.asar,sdk2.asar \ --output=app.apks
Generowanie plików APK z pakietu aplikacji z zależnością pakietu SDK w przypadku urządzeń bez obsługi biblioteki SDK
Urządzenia starsze niż 13 nie obsługują instalowania bibliotek SDK ani uruchamiania ich w środowisku wykonawczym SDK. Narzędzie Bundletool ukrywa złożoność zgodności wstecznej i generuje wiele wariantów pakietu APK z tego samego pakietu aplikacji, gdy uruchamiasz bundletool build-apks
z opcją --sdk-bundles
lub --sdk-archives
.
Różne warianty są kierowane na urządzenia o różnych funkcjach:
- Dostępny jest też wariant dla nowszych urządzeń, w którym pakiet SDK jest zainstalowany jako osobny pakiet od aplikacji, a pliki APK aplikacji nie zawierają żadnego pakietu SDK.
- Istnieje co najmniej 1 wariant na starsze urządzenia, w którym do pliku APK aplikacji dodawane są pliki APK z pakietem SDK, ustawione jako dodatkowe podziały. Pliki APK SDK należą do pakietu aplikacji. W takim przypadku środowisko wykonawcze SDK jest emulowane w czasie działania aplikacji na urządzeniu.
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 plików APK z najlepszego wariantu dla połączonego urządzenia lub podanej konfiguracji urządzenia.
W zaawansowanych przypadkach użycia, gdy chcesz generować podziały APK tylko z archiwum pakietu SDK dla określonej aplikacji na starszych urządzeniach, użyj polecenia bundletool build-sdk-apks-for-app
w ten 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 pliku runtime_enabled_sdk_config.proto
. Tak wygląda plik app-properties
:
{
"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 plików APK aplikacji, który odpowiada zawartości pakietu SDK pod nazwą pakietu aplikacji. Pliki APK możesz połączyć z innymi plikami APK zawierającymi zawartość aplikacji. Dotyczy to na przykład tworzenia ich oddzielnie, stopniowo oraz instalacji razem na urządzeniu, które nie obsługuje środowiska wykonawczego SDK.
Tworzenie i testowanie pakietu SDK (funkcja eksperymentalna)
Za pomocą bundletool
możesz utworzyć ASB i przetestować generowanie plików niezbędnych do instalacji i dystrybucji.
Utwórz pakiet SDK
Plik ASB możesz utworzyć z poziomu wiersza poleceń i podpisać go za pomocą jarsigner.
Aby utworzyć pakiet SDK:
Wygeneruj plik manifestu i zasoby pakietu SDK w formacie proto, wykonując te same czynności co w przypadku pakietu aplikacji.
Zapakuj skompilowany kod i zasoby pakietu SDK w podstawowy plik ZIP, tak jak w przypadku modułu aplikacji.
Wygeneruj plik
SdkModulesConfig.pb.json
iSdkBundleConfig.pb.json
zgodnie z formatem opisanym w specyfikacji pakietu Android SDK.Utwórz ASB za pomocą polecenia
bundletool build-sdk-bundle
w następujący sposób:
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 szczegółowo opisujemy różne flagi i opcje, które można ustawić przy użyciu polecenia bundletool build-sdk-bundle
.
Tabela 3. Opcje polecenia bundletool build-sdk-bundle
Zgłoś | Opis |
---|---|
--modules |
(Wymagane) Plik modułu, na podstawie którego chcesz utworzyć ostateczną wersję pliku ASB. |
--output |
(Wymagane) Ścieżka do miejsca, w którym chcesz utworzyć ASB. |
--sdk-modules-config |
(Wymagane) Ścieżka do pliku JSON opisującego konfigurację modułów pakietu SDK. Aby dowiedzieć się, jak sformatować plik JSON, zapoznaj się ze specyfikacją pakietu Android SDK Bundle. |
--sdk-bundle-config |
Ścieżka do pliku JSON opisującego konfigurację pakietu SDK. Aby dowiedzieć się, jak sformatować plik JSON, zapoznaj się ze specyfikacją pakietu Android SDK Bundle. |
--metadata-file |
Plik, w którym mają być uwzględnione metadane w ASB.
Format wartości flagi to <bundle-path>:<physical-file> , gdzie <bundle-path> oznacza lokalizację pliku w katalogu metadanych pakietu SDK, a <physical-file> to istniejący plik zawierający nieprzetworzone dane do przechowywania. Flagę można powtórzyć.
|
--overwrite |
Jeśli jest ustawiona, ta opcja zastępuje wszystkie wcześniejsze dane wyjściowe. |
Generowanie plików APK z pakietu SDK
Po utworzeniu pliku ASB możesz lokalnie przetestować pakiet SDK, generując jego pliki APK za pomocą polecenia bundletool build-sdk-apks
, jak pokazano w tym kodzie:
bundletool build-sdk-apks --sdk-bundle=sdk.asb --output=sdk.apks
Gdy bundletool
generuje pliki APK z pakietu SDK, narzędzie umieszcza je w kontenerze o nazwie archiwum zestawu plików APK, który używa rozszerzenia pliku .apks
. bundletool
generuje jeden samodzielny plik APK z pakietu SDK, który jest przeznaczony dla wszystkich konfiguracji urządzeń.
Jeśli chcesz wdrożyć ASB na urządzeniu, musisz też dołączyć dane podpisywania aplikacji, jak pokazano 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 szczegółowo opisujemy różne flagi i opcje, które można ustawić przy użyciu polecenia bundletool build-sdk-apks
.
Tabela 4. Opcje polecenia 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, na której ma zostać utworzone archiwum pakietu APK. Jeśli używasz też pliku --output-format=DIRECTORY , jest to ścieżka do katalogu, w którym mają być przechowywane wygenerowane pliki APK.
|
--ks |
Ścieżka do magazynu kluczy, którego chcesz używać do podpisywania wygenerowanych plików APK. |
--ks-key-alias |
Alias klucza, który ma być używany w magazynie kluczy do podpisywania wygenerowanych plików APK. |
--key-pass |
Hasło klucza w magazynie kluczy, które ma być używane do podpisywania wygenerowanych plików APK. Jeśli przekazujesz hasło w postaci zwykłego tekstu, musisz poprzedzić wartość przed wartością Jeśli ta flaga nie jest ustawiona, wysyłane jest hasło do magazynu kluczy. Jeśli to nie pomoże, terminal wiersza poleceń poprosi o podanie hasła. |
--ks-pass |
Hasło magazynu kluczy służące do podpisywania wygenerowanych plików APK. Jeśli przekazujesz hasło w postaci zwykłego tekstu, musisz poprzedzić wartość przed wartością Jeśli ta flaga nie jest ustawiona, terminal wiersza poleceń wyświetli prośbę o podanie hasła. |
--aapt2 |
Ścieżka do pliku binarnego AAPT2, którego chcesz użyć. |
--output-format |
Format wyjściowy wygenerowanych plików APK. Domyślna opcja jest ustawiona na APK_SET , co powoduje umieszczenie plików APK w utworzonym archiwum zestawu APK. Jeśli ma wartość DIRECTORY , pliki APK trafiają do katalogu określonego przez --output . |
--verbose |
Jeśli ta opcja jest ustawiona, w standardowych danych wyjściowych wyświetlane są dodatkowe informacje o wykonaniu polecenia. |
--version-code |
Kod wersji pakietu SDK. To kod wersji używany przez platformę Androida do instalacji pliku APK, a nie wersji pakietu SDK. Tę opcję można ustawić na dowolną wartość. Jeśli nie jest skonfigurowana, domyślna wartość to 0. |
--overwrite |
Jeśli jest ustawiona, ta opcja zastępuje wszystkie wcześniejsze dane wyjściowe. |
Wdrażanie i rozpakowywanie plików APK z pakietami SDK oraz mierzenie ich rozmiaru
Możesz wykonać te same czynności co w przypadku aplikacji, aby wdrażać pakiety APK na połączonym urządzeniu, wyodrębniać je z istniejącego zestawu plików APK i mierzyć szacowane rozmiary pobieranych plików APK z zestawu APK.
Generowanie archiwum pakietu SDK z pakietu SDK
Gdy prześlesz ASB do kanału dystrybucji, na przykład do Google Play, zostanie on przekształcony w archiwum Android SDK (.asar
) do dystrybucji wśród deweloperów aplikacji za pomocą Maven. Więcej informacji o formacie znajdziesz w sekcji dotyczącej specyfikacji formatu archiwum SDK.
Po utworzeniu pliku ASB możesz przetestować wygenerowanie pliku Android SDK Archive lokalnie przy użyciu polecenia bundletool build-sdk-asar
, jak pokazano w tym kodzie:
bundletool build-sdk-asar --sdk-bundle=sdk.asb --output=sdk.asar \ --apk-signing-key-certificate=keycert.txt
W tabeli poniżej szczegółowo opisujemy różne flagi i opcje, które można ustawić przy użyciu polecenia bundletool build-sdk-asar
.
Tabela 5. Opcje polecenia bundletool build-sdk-asar
Zgłoś | Opis |
---|---|
--apk-signing-key-certificate |
(Wymagane) Ścieżka do certyfikatu podpisywania pakietu APK w pakiecie SDK. To certyfikat odpowiadający kluczowi użytemu do podpisania plików APK w poleceniu build-sdk-apks .
|
--output |
(Wymagane) Ścieżka, w której ma zostać utworzony plik .asar .
|
--sdk-bundle |
(Wymagane) Ścieżka do pakietu SDK. Musi mieć rozszerzenie .asb .
|
--overwrite |
Jeśli jest ustawiona, ta opcja zastępuje wszystkie wcześniejsze dane wyjściowe. |
Formaty pakietów SDK z włączonym środowiskiem wykonawczym (funkcja eksperymentalna)
Pakiety SDK obsługujące środowisko wykonawcze wprowadzają 2 formaty plików na Androida:
- Pakiet Android SDK (
.asb
) używany do publikowania w sklepach z aplikacjami pakietu SDK działającego w czasie działania aplikacji. - Plik Android SDK Archive (
.asar
) używany do rozpowszechniania w Maven pakietu SDK działającego w czasie działania aplikacji.
Format pakietu Android SDK
Pakiet SDK to format publikowania dla pakietów SDK używanych w czasie działania aplikacji. Zawiera on cały kod i zasoby pakietu SDK, w tym kod z bibliotek zależnych od tego pakietu. Nie zawiera kodu ani zasobów innych pakietów SDK działających w czasie działania, od których zależy pakiet SDK.
Android SDK Bundle (ASB) to podpisany plik ZIP z rozszerzeniem .asb
. Kod i zasoby pakietu SDK są w nim uporządkowane podobnie do tego, który zawiera pakiet APK. Plik ASB zawiera też kilka plików konfiguracji, które pomagają generować pakiety APK z możliwością zainstalowania.
![](https://developer.android.com/static/studio/images/command-line/asb-format.png?authuser=7&hl=pl)
Na liście poniżej znajdziesz bardziej szczegółowe informacje o niektórych plikach ASB:
SdkBundleConfig.pb
: plik konfiguracji w formacie proto zawierający listę pakietów SDK używanych w czasie działania, od których zależy Twój pakiet SDK. Pełną definicję znajdziesz w plikusdk_bundle_config.proto
.modules.resm
: plik ZIP zawierający wszystkie dane potrzebne do wygenerowania pakietów APK z pakietu SDK.SdkModulesConfig.pb
: plik konfiguracji w formacie proto. Ten plik zawiera nazwę, wersję i nazwę klasy pakietu SDK dla platformy (SandboxedSdkProvider
). Pełną definicję znajdziesz w plikusdk_modules_config.proto
.base/
: pojedynczy moduł z kodem i zasobami pakietu SDK.manifest/
: plik manifestu pakietu SDK w formacie proto.dex/
: skompilowany kod w formacie DEX. Możesz podać wiele plików DEX.res/
,lib/
,assets/
: te katalogi są identyczne z katalogami w typowym pliku APK. Ścieżki w tych katalogach są zachowywane podczas generowania plików APK pakietu SDK.root/
: w tym katalogu są przechowywane pliki, które są później przeniesione do katalogu głównego plików APK z pakietem SDK. Może na przykład zawierać zasoby oparte na Javie, które Twój pakiet SDK wczytuje metodąClass.getResource()
. Ścieżki w tym katalogu również są zachowywane.
BUNDLE-METADATA
: w tym katalogu znajdują się pliki metadanych, które zawierają informacje przydatne w przypadku narzędzi i sklepów z aplikacjami. Takie pliki metadanych mogą zawierać mapowania ProGuard i pełną listę plików DEX pakietu SDK. Pliki w tym katalogu nie są spakowane do pakietów APK pakietu SDK.
Format archiwum Android SDK
Archiwum Android SDK to format dystrybucji pakietu SDK z włączonym środowiskiem wykonawczym w Maven. Jest to plik ZIP z rozszerzeniem .asar
. Zawiera on wszystkie informacje potrzebne narzędziom do tworzenia aplikacji do wygenerowania pakietu Android App Bundle zależnego od pakietu SDK działającego w czasie działania.
![](https://developer.android.com/static/studio/images/command-line/asar-format.png?authuser=7&hl=pl)
Na tej liście znajdziesz bardziej szczegółowe informacje o niektórych plikach archiwum pakietu Android SDK:
SdkMetadata.pb
: plik konfiguracji w formacie proto zawierający nazwę pakietu SDK, jego wersję i skrót certyfikatu klucza używanego do podpisywania plików APK wygenerowanych dla tego pakietu SDK. Pełną definicję znajdziesz w plikusdk_metadata.proto
.modules.resm
: plik ZIP zawierający wszystkie dane potrzebne do wygenerowania pakietów APK z pakietu SDK. Jest taka sama jak plik.resm
w pakiecie Android SDK.AndroidManifest.xml
: plik manifestu pakietu SDK w tekstowym formacie XML.
Dodatkowe materiały
Aby dowiedzieć się więcej o korzystaniu z usługi bundletool
, obejrzyj film Pakiety aplikacji: testowanie pakietów za pomocą narzędzia do pakietów i Konsoli Play.