Wszystkie zadania kompilacji dostępne w Twoim projekcie Androida możesz wykonać za pomocą
za pomocą narzędzia wiersza poleceń otoki Gradle. Jest
dostępny jako plik wsadowy dla systemu Windows (gradlew.bat
) i powłoki
dla systemów Linux i Mac (gradlew.sh
).
w katalogu głównym każdego projektu tworzonego w Android Studio.
Aby uruchomić zadanie z kodem, użyj jednego z tych poleceń ze źródła Okno terminala (w Android Studio wybierz Widok > Okna narzędziowe > Terminal):
- W powłoce poleceń systemu Windows:
gradlew task-name
- W systemie Mac, Linux lub Windows PowerShell:
./gradlew task-name
Aby wyświetlić listę wszystkich dostępnych zadań kompilacji dla
Twój projekt, uruchom tasks
:
gradlew tasks
W pozostałej części tej strony znajdziesz podstawowe informacje o tworzeniu i uruchamianiu aplikacji. za pomocą otoki Gradle. Więcej informacji o konfigurowaniu Kompilacja Androida, patrz Konfigurowanie i tworzenia.
Jeśli wolisz używać narzędzi Android Studio zamiast wiersza poleceń narzędzia dostępne w artykule Tworzenie i uruchamianie aplikacji.
Typy kompilacji
Domyślnie dla każdej aplikacji na Androida dostępne są 2 typy kompilacji: 1 do debugowania aplikacji (kompilacji do debugowania) i do publikowania aplikacji. dla użytkowników – kompilację wersji. Dane wyjściowe z każdego kompilacja musi być podpisana certyfikatem, zanim będzie można ją wdrożyć w urządzenia. Kompilacja do debugowania jest automatycznie podpisana za pomocą klucza debugowania podanego przez narzędzi pakietu SDK (nie jest on bezpieczny i nie można go używać do publikowania w Google Play, Store), a kompilacja wersji musi być podpisana Twoim kluczem prywatnym.
Jeśli chcesz utworzyć aplikację dla nowych użytkowników, podpisać aplikację odpowiednim kluczem podpisywania. Jeśli dopiero zaczynasz, możesz szybko uruchamiać aplikacje na za pomocą emulatora lub połączonego urządzenia, utwórz pakiet APK do debugowania.
Możesz też określić niestandardowy typ kompilacji w build.gradle.kts
.
i skonfiguruj go podpisać jako kompilację do debugowania, umieszczając w parametrze
debuggable true
Aby dowiedzieć się więcej,
zobacz Konfigurowanie wariantów kompilacji.
Tworzenie i wdrażanie pakietu APK
Utworzenie pakietu aplikacji to najlepszy sposób spakuj aplikację i prześlij ją do Konsoli Play. Lepiej jest utworzyć plik APK. sprawdzi się, gdy chcesz szybko przetestować kompilację do debugowania lub udostępnić aplikację jako artefakt wdrażany w ramach innych rozwiązań.
Tworzenie pliku APK do debugowania
Aby przeprowadzić natychmiastowe testowanie i debugowanie aplikacji, możesz utworzyć pakiet APK do debugowania.
Plik APK do debugowania jest podpisany kluczem debugowania dostarczonym przez narzędzia SDK.
umożliwia debugowanie za pomocą narzędzia adb
.
Aby utworzyć pakiet APK do debugowania, otwórz wiersz poleceń i przejdź do katalogu głównego
katalogu projektu. Aby zainicjować kompilację do debugowania, wywołaj metodę
Zadanie assembleDebug
:
gradlew assembleDebug
Spowoduje to utworzenie pliku APK o nazwie module_name-debug.apk
w
project_name/module_name/build/outputs/apk/
Plik jest już podpisany kluczem debugowania i zgodny z
zipalign
, dzięki czemu możesz
od razu zainstalować ją na urządzeniu.
Możesz też utworzyć pakiet APK i od razu zainstalować go w uruchomionym emulatorze.
podłączone urządzenie, zamiast tego wywołaj installDebug
:
gradlew installDebug
Pole „Debugowanie” jest częścią powyższych nazw zadań.
w wersji na wielbłądach nazwy wersji kompilacji, którą można zastąpić dowolnym typem kompilacji lub
wersji, którą chcesz zbudować lub zainstalować. Na przykład, jeśli masz „wersję demonstracyjną”,
rodzaj produktu, możesz utworzyć wersję do debugowania za pomocą parametru
assembleDemoDebug
zadanie.
Aby zobaczyć wszystkie zadania kompilacji i instalacji dostępne w przypadku każdego wariantu (w tym
odinstaluj zadania), uruchom zadanie tasks
.
Zapoznaj się też z sekcją dotyczącą uruchamiania aplikacji w emulatorze i uruchamiania aplikacji na urządzeniu.
Tworzenie pakietu wersji lub pliku APK
Gdy aplikacja jest gotowa do opublikowania i rozpowszechniania, musisz utworzyć opublikuj pakiet lub plik APK podpisany Twoim kluczem prywatnym. Aby dowiedzieć się więcej, przejdź do sekcji dotyczącej podpisywania aplikacji wiersza poleceń.
Wdrażanie aplikacji w emulatorze
Aby używać emulatora Androida, musisz utworzyć obiekt wirtualny Androida Urządzenie (AVD) korzystające z Android Studio.
Po zainstalowaniu programu AVD uruchom emulator Androida i zainstaluj aplikację w następujący sposób:
W wierszu poleceń przejdź do
android_sdk/tools/
i uruchom emulator: określanie AVD:emulator -avd avd_name
Jeśli nie masz pewności co do nazwy AVD, wykonaj
emulator -list-avds
- Teraz możesz zainstalować aplikację, korzystając z jednego z zadań instalacyjnych Gradle
wspomniane w sekcji dotyczącej tworzenia pakietu APK do debugowania.
lub
Narzędzie
adb
.Jeśli plik APK został utworzony z wykorzystaniem pakietu SDK w wersji deweloperskiej (jeśli
targetSdkVersion
to litery zamiast cyfry), musisz dodać Opcja-t
za pomocą poleceniainstall
, by zainstalować testowy pakiet APK.adb install path/to/your_app.apk
Wszystkie utworzone pakiety APK są zapisywane
project_name/module_name/build/outputs/apk/
Więcej informacji znajdziesz w artykule Uruchamianie aplikacji przy użyciu emulatora Androida.
Wdrażanie aplikacji na urządzeniu fizycznym
Aby uruchomić aplikację na urządzeniu, musisz włączyć USB na urządzeniu. Znajdziesz ją w sekcji Ustawienia > Opcje programisty.
Uwaga: na Androidzie 4.2 i nowszych Opcje programisty są domyślnie ukryte. Aby ją udostępnić, wybierz Ustawienia > Informacje o telefonie i kliknij Utwórz siedem razy. Wróć na poprzedni ekran, aby znaleźć Opcje programisty.
Gdy urządzenie zostanie skonfigurowane i połączone przez USB, będzie można zainstalować aplikację
przy użyciu wspomnianych zadań instalacji Gradle
w sekcji dotyczącej tworzenia pakietu APK do debugowania lub
Narzędzie adb
:
adb -d install path/to/your_app.apk
Wszystkie utworzone pakiety APK są zapisywane
project_name/module_name/build/outputs/apk/
Więcej informacji: Uruchamianie aplikacji na urządzeniu
Utwórz pakiet aplikacji
Pakiety Android App Bundle zawierają wszystkie skompilować kod i zasoby, ale opóźnić wygenerowanie i podpisanie pliku APK do Google. Graj. W przeciwieństwie do plików APK nie można wdrożyć pakietu aplikacji bezpośrednio na urządzeniu. Jeśli chcesz szybko przetestować lub udostępnić komuś pakiet APK, W przeciwnym razie utwórz pakiet APK.
Najłatwiejszym sposobem utworzenia pakietu aplikacji jest
w Android Studio. Jeśli jednak musisz utworzyć
pakietu aplikacji z wiersza poleceń, możesz użyć Gradle lub
bundletool
.
Tworzenie pakietu aplikacji za pomocą Gradle
Jeśli wolisz wygenerować pakiet aplikacji z poziomu wiersza poleceń,
bundleVariant
zadanie Gradle w podstawowym module aplikacji.
Na przykład to polecenie tworzy pakiet aplikacji na potrzeby wersji do debugowania
modułu podstawowego.
./gradlew :base:bundleDebug
Jeśli chcesz utworzyć podpisany pakiet do przesłania do Konsoli Play,
aby najpierw skonfigurować plik build.gradle.kts
modułu podstawowego przy użyciu pakietu
podpisywanie danych. Więcej informacji znajdziesz w sekcji
Skonfiguruj Gradle, aby podpisać aplikację.
Następnie możesz na przykład utworzyć wersję premierową aplikacji i utworzyć Gradle
automatycznie generuje pakiet aplikacji i podpisuje go
podane w pliku build.gradle.kts
.
Jeśli zamiast tego chcesz podpisać pakiet aplikacji w ramach osobnego kroku, możesz użyć
jarsigner
aby podpisać pakiet aplikacji z poziomu wiersza poleceń. Polecenie do utworzenia aplikacji
pakiet to:
jarsigner -keystore pathToKeystore app-release.aab keyAlias
Tworzenie pakietu aplikacji za pomocą narzędzia bundletool
bundletool
to narzędzie wiersza poleceń dostępne w Android Studio, czyli Android Gradle.
i Google Play do konwertowania skompilowanego kodu aplikacji
zasobów w pakiety aplikacji i wygenerować z nich pliki APK, które można wdrożyć.
Mimo że przydaje się to
przetestuj pakiety aplikacji za pomocą bundletool
i odtwórz je lokalnie
jak Google Play generuje pliki APK, zwykle nie musisz
wywołaj bundletool
, by utworzyć własny pakiet aplikacji – zamiast tego
używać zadań Android Studio lub Gradle zgodnie z opisem w poprzednich sekcjach.
Jeśli jednak nie chcesz używać zadań w Android Studio lub Gradle do tworzenia
w pakietach (na przykład jeśli używasz niestandardowego łańcucha narzędzi do kompilacji), możesz za pomocą narzędzia bundletool
w wierszu poleceń, by utworzyć pakiet aplikacji na podstawie wstępnie skompilowanego kodu
i zasobami Google Cloud. Jeśli nie zostało to jeszcze zrobione,
pobierz bundletool
z repozytorium GitHub.
W tej sekcji dowiesz się, jak spakować skompilowany kod i zasoby aplikacji
i jak używać w wierszu poleceń narzędzia bundletool
do ich konwertowania na
Android App Bundle.
Wygeneruj plik manifestu i zasoby w formacie proto
bundletool
wymaga określonych informacji o projekcie aplikacji, takich jak
plik manifestu i zasoby aplikacji,
Format bufora protokołów Google, który
jest również nazywany „protobufem”. i ma rozszerzenie *.pb
. Protobufsy
pozwolą Ci opracować mechanizm neutralny dla języka i platformy, który będzie można rozszerzać;
do serializacji uporządkowanych danych – jest podobna do XML,
ale mniejsza, szybsza i
prostsza.
Pobierz AAPT2
Plik manifestu i tabelę zasobów aplikacji możesz wygenerować tutaj: przy użyciu najnowszej wersji AAPT2 z Repozytorium Google Maven.
Aby pobrać plik AAPT2 z repozytorium Google Maven, wykonaj te czynności:
- Otwórz com.android.tools.build > aapt2 w indeksie repozytorium.
- Skopiuj nazwę najnowszej wersji AAPT2.
Wstaw skopiowaną nazwę wersji do poniższego adresu URL i określ docelowy system operacyjny: https://dl.google.com/dl/android/maven2/com/android/tools/build/aapt2/aapt2-version/aapt2-aapt2-version-[windows | linux | osx].jar
Aby na przykład pobrać wersję 3.2.0-alpha18-4804415 dla systemu Windows, użyjesz: https://dl.google.com/dl/android/maven2/com/android/tools/build/aapt2/3.2.0-alpha18-4804415/aapt2-3.2.0-alpha18-4804415-windows.jar
Otwórz adres URL w przeglądarce – pobieranie pliku AAPT2 powinno wkrótce się rozpocząć.
Rozpakuj pobrany przed chwilą plik JAR.
Kompilowanie i łączenie zasobów aplikacji
Użyj AAPT2, aby skompilować zasoby aplikacji za pomocą tego polecenia:
aapt2 compile \ project_root/module_root/src/main/res/drawable/Image1.png \ project_root/module_root/src/main/res/drawable/Image2.png \ -o compiled_resources/
Na etapie tworzenia linków, w którym AAPT2 łączy różne skompilowane zasoby w
pojedynczy plik APK, instruuj AAPT2, aby przekonwertował plik manifestu aplikacji i skompilowane zasoby
do formatu protobuf, dodając flagę --proto-format
w ten sposób:
aapt2 link --proto-format -o output.apk \ -I android_sdk/platforms/android_version/android.jar \ --manifest project_root/module_root/src/main/AndroidManifest.xml \ -R compiled_resources/*.flat \ --auto-add-overlay
Następnie możesz wyodrębnić zawartość z wyjściowego pliku APK, np. plik
AndroidManifest.xml
, resources.pb
i inne pliki zasobów – teraz
w formacie protokołu. Te pliki są potrzebne podczas przygotowywania danych wejściowych
bundletool
wymaga utworzenia pakietu aplikacji w sposób opisany w tym artykule
.
Wstępnie skompilowany kod i zasoby w pakiecie
Zanim wygenerujesz pakiet aplikacji za pomocą narzędzia bundletool
, musisz
najpierw udostępnij pliki ZIP, w których każdy zawiera skompilowany kod i zasoby dla
danego modułu aplikacji. Zawartość i układ plików ZIP każdego modułu są
podobnie jak w formacie Android App Bundle.
Na przykład należy utworzyć plik base.zip
dla modułu podstawowego aplikacji i
uporządkuj jego zawartość w taki sposób:
Plik lub katalog | Opis |
---|---|
manifest/AndroidManifest.xml
|
Plik manifestu modułu w formacie protobuf. |
dex/...
|
Katalog z co najmniej jednym skompilowanym plikiem DEX Twojej aplikacji. Te pliki
powinny mieć następującą nazwę: classes.dex ,
classes2.dex , classes3.dex itp.
|
res/...
|
Zawiera zasoby modułu w formacie protokołu dla wszystkich urządzeń konfiguracji. Podkatalogi i pliki powinny być uporządkowane podobnie do niż typowy pakiet APK. |
root/... , assets/... i lib/...
|
Katalogi te są identyczne z opisanymi w sekcji dotyczącej pakietu aplikacji na Androida. |
resources.pb
|
Tabela zasobów aplikacji w formacie protokołu. |
Po przygotowaniu pliku ZIP dla każdego modułu aplikacji możesz je przekazać
do bundletool
, aby utworzyć pakiet aplikacji w sposób opisany w sekcji poniżej.
Utwórz pakiet aplikacji za pomocą narzędzia bundletool
Aby utworzyć pakiet aplikacji, użyj polecenia bundletool build-bundle
–
poniżej:
bundletool build-bundle --modules=base.zip --output=mybundle.aab
W tabeli poniżej opisujemy flagi polecenia build-bundle
w bardziej
szczegóły:
Zgłoś | Opis |
---|---|
--modules=path-to-base.zip, path-to-module2.zip,path-to-module3.zip
|
Określa listę plików ZIP modułu, które powinna zawierać bundletool
którego użyjesz do utworzenia pakietu aplikacji.
|
--output=path-to-output.aab
|
Określa ścieżkę i nazwę wyjściowego pliku *.aab .
|
--config=path-to-BundleConfig.json
|
Określa ścieżkę do opcjonalnego pliku konfiguracji, którego można użyć do dostosować proces kompilacji. Więcej informacji można znaleźć w sekcji – dostosować generowanie kolejnych plików APK. |
--metadata-file=target-bundle-path:local-file-path
|
Nakazuje bundletool spakowanie opcjonalnego pliku metadanych
w pakiecie aplikacji. W tym pliku możesz umieścić takie dane jak
mapowań ProGuard lub pełnej listy plików DEX aplikacji, które mogą
mogą być przydatne podczas innych działań w łańcuchu narzędzi lub w sklepie z aplikacjami.
target-bundle-path określa ścieżkę względem poziomu głównego pakiet aplikacji, do którego chcesz spakować plik metadanych; a local-file-path określa ścieżkę do lokalnych metadanych pliku. |
Dostosuj generowanie kolejnych plików APK
Pakiety aplikacji zawierają plik BundleConfig.pb
, który dostarcza metadane,
sklepów, takich jak Google Play, są wymagane podczas generowania plików APK z pakietu.
bundletool
tworzy ten plik za Ciebie, ale możesz skonfigurować niektóre aspekty
metadanych w pliku BundleConfig.json
i przekazać do funkcji
Polecenie bundletool build-bundle
– bundletool
później konwertuje i scala tę wartość
z wersją protokołu dołączonego do każdego pakietu aplikacji.
Możesz na przykład określić, które kategorie plików APK konfiguracji włączyć lub
wyłączyć. Poniższy przykład pliku BundleConfig.json
wyłącza
konfiguracyjne pliki APK, z których każdy jest kierowany na inny język (tzn.
zasoby dla wszystkich języków są dołączone do odpowiednich baz lub
pakiety APK funkcji):
{
"optimizations": {
"splitsConfig": {
"splitDimension": [{
"value": "LANGUAGE",
"negate": true
}]
}
}
}
W pliku BundleConfig.json
możesz też określić, które typy plików pozostawisz bez zmian.
nieskompresowane podczas pakowania plików APK za pomocą
wzorców glob:
{
"compression": {
"uncompressedGlob": ["res/raw/**", "assets/**.uncompressed"]
}
}
Pamiętaj, że domyślnie bundletool
nie kompresuje kodu natywnego aplikacji
biblioteki (na Androidzie 6.0 lub nowszym) i zasobach
tabela (resources.arsc
). Pełny opis elementów, które możesz skonfigurować
BundleConfig.json
, sprawdź bundletool
config.proto
,
które jest napisane w języku Proto3.
składni.
Wdrażanie aplikacji z poziomu pakietu aplikacji
Jeśli masz utworzony i podpisany pakiet aplikacji,
Użyj usługi bundletool
, aby wygenerować pliki APK i wdrożyć je w
urządzenia.
Podpisywanie aplikacji z poziomu wiersza poleceń
Do podpisania aplikacji nie potrzebujesz Androida Studio. Aplikację możesz podpisać tutaj:
w wierszu poleceń, używając apksigner
w przypadku plików APK lub jarsigner
w przypadku pakietów aplikacji,
lub skonfigurować Gradle tak, aby podpisywała je za Ciebie podczas kompilacji. Tak czy inaczej,
najpierw wygeneruj klucz prywatny za pomocą
keytool
jak poniżej:
keytool -genkey -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-alias
W przykładzie powyżej musisz podać hasła do magazynu kluczy i klucza oraz
„Nazwa wyróżniająca” na klucz. Następnie generuje
jako plik o nazwie my-release-key.jks
, zapisując go w
bieżący katalog (możesz go przenieść w dowolne miejsce). Magazyn kluczy
zawiera jeden klucz ważny przez 10 000 dni.
Teraz możesz ręcznie podpisać plik APK lub pakiet aplikacji albo skonfigurować Gradle do podpisywania aplikacji podczas kompilacji, jak opisano w sekcjach poniżej.
Podpisywanie aplikacji ręcznie z poziomu wiersza poleceń
Jeśli chcesz podpisać pakiet aplikacji za pomocą wiersza poleceń, możesz
jarsigner
Jeśli zamiast tego chcesz podpisać plik APK, musisz użyć plików zipalign
i apksigner
.
jak opisano poniżej.
- Otwórz wiersz poleceń – w Android Studio kliknij Widok > Okna narzędziowe > terminala – i przejdź do katalogu, w którym znajduje się niepodpisany plik APK. z siedzibą firmy.
-
Wyrównaj niepodpisany plik APK za pomocą elementu
zipalign
:zipalign -v -p 4 my-app-unsigned.apk my-app-unsigned-aligned.apk
zipalign
zapewnia, że wszystkie nieskompresowane dane zaczynają się od konkretne wyrównanie bajtów względem początku pliku, co może zmniejsz ilość pamięci RAM zużywaną przez aplikację. -
Podpisz plik APK kluczem prywatnym za pomocą
apksigner
:apksigner sign --ks my-release-key.jks --out my-app-release.apk my-app-unsigned-aligned.apk
Ten przykład wysyła podpisany pakiet APK pod adresem
my-app-release.apk
po podpisaniu go kluczem prywatnym i certyfikatem przechowywanym w pojedynczy plik KeyStore:my-release-key.jks
.Narzędzie
apksigner
obsługuje inne opcje podpisywania, w tym podpisze plik APK przy użyciu osobnych plików klucza prywatnego i certyfikatu oraz podpisać plik APK przez wiele osób. Więcej informacji:apksigner
odwołania.Uwaga: aby użyć narzędzia
apksigner
, musisz mieć zainstalowaną aplikację Android SDK Build Tools w wersji 24.0.3 lub nowszej. Możesz zaktualizować ten pakiet za pomocą Menedżera SDK. -
Sprawdź, czy plik APK jest podpisany:
apksigner verify my-app-release.apk
Konfigurowanie Gradle do podpisania aplikacji
Otwórz plik build.gradle.kts
na poziomie modułu i dodaj atrybut
Blok signingConfigs {}
z wpisami dla storeFile
,
storePassword
, keyAlias
i
keyPassword
, a następnie przekaż ten obiekt do funkcji
signingConfig
. Na przykład:
Kotlin
android { ... defaultConfig { ... } signingConfigs { create("release") { // You need to specify either an absolute path or include the // keystore file in the same directory as the build.gradle file. storeFile = file("my-release-key.jks") storePassword = "password" keyAlias = "my-alias" keyPassword = "password" } } buildTypes { getByName("release") { signingConfig = signingConfigs.getByName("release") ... } } }
Odlotowe
android { ... defaultConfig { ... } signingConfigs { release { // You need to specify either an absolute path or include the // keystore file in the same directory as the build.gradle file. storeFile file("my-release-key.jks") storePassword "password" keyAlias "my-alias" keyPassword "password" } } buildTypes { release { signingConfig signingConfigs.release ... } } }
Jeśli tworzysz aplikację wywołując zadanie Gradle, Gradle podpisuje aplikację (i uruchamia polecenie zipalign).
Ponieważ kompilacja wersji została skonfigurowana za pomocą Twojego klucza podpisywania,
„Zainstaluj” jest dostępne dla tego typu kompilacji. Możesz tworzyć, dostosowywać
i zainstalować w emulatorze lub na urządzeniu plik APK wersji z
installRelease
zadanie.
Aplikacja podpisana Twoim kluczem prywatnym jest gotowa do dystrybucji, ale warto przeczytaj najpierw o tym, jak publikować treści aplikację i zapoznaj się z listą kontrolną wprowadzenia na rynek w Google Play.