Manuals
Manuals




This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English

Programowanie na Androidzie

Urządzenia z Androidem pozwalają swobodnie uruchamiać na nich własne aplikacje. Bardzo łatwo jest zbudować wersję gry i skopiować ją na urządzenie z Androidem. Ta instrukcja wyjaśnia kolejne kroki pakowania gry na Androida. Podczas tworzenia często wygodniej jest uruchamiać grę przez development app, ponieważ umożliwia szybkie przeładowywanie zawartości i kodu bezpośrednio na urządzeniu.

Proces podpisywania dla Androida i Google Play

Android wymaga, aby wszystkie pliki APK były przed instalacją na urządzeniu lub aktualizacją cyfrowo podpisane certyfikatem. Jeśli używasz Android App Bundles, musisz podpisać tylko swój pakiet aplikacji przed przesłaniem go do Play Console, a Play App Signing zajmie się resztą. Możesz też ręcznie podpisać aplikację przed wysłaniem do Google Play, do innych sklepów z aplikacjami lub do dystrybucji poza sklepami.

Gdy tworzysz pakiet aplikacji Android z edytora Defold albo za pomocą narzędzia wiersza poleceń, możesz podać keystore, który zawiera certyfikat i klucz, oraz hasło do keystore. Te dane zostaną użyte do podpisania aplikacji. Jeśli ich nie podasz, Defold wygeneruje debug keystore i użyje go do podpisania pakietu aplikacji.

Nigdy nie przesyłaj aplikacji do Google Play, jeśli została podpisana za pomocą debug keystore. Zawsze używaj własnego, osobnego keystore.

Tworzenie keystore

Proces podpisywania Androida w Defold zmienił się w wersji 1.2.173: zamiast osobnego klucza i certyfikatu używa teraz keystore. Więcej informacji w tym poście na forum.

Keystore możesz utworzyć w Android Studio albo z poziomu terminala / wiersza poleceń:

keytool -genkey -v -noprompt -dname "CN=John Smith, OU=Area 51, O=US Air Force, L=Unknown, ST=Nevada, C=US" -keystore mykeystore.keystore -storepass 5Up3r_53cR3t -alias myAlias -keyalg RSA -validity 9125

To utworzy plik keystore o nazwie mykeystore.keystore, zawierający klucz i certyfikat. Dostęp do klucza i certyfikatu będzie chroniony hasłem 5Up3r_53cR3t. Klucz i certyfikat będą ważne przez 25 lat, czyli 9125 dni. Wygenerowany klucz i certyfikat będą identyfikowane aliasem myAlias.

Pamiętaj, aby przechowywać keystore i powiązane z nim hasło w bezpiecznym miejscu. Jeśli sam podpisujesz i przesyłasz aplikacje do Google Play, a keystore lub jego hasło zostanie utracone, nie będzie żadnego sposobu, aby zaktualizować aplikację w Google Play. Możesz tego uniknąć, korzystając z Google Play App Signing i pozwalając Google podpisywać aplikacje za Ciebie.

Tworzenie pakietu aplikacji Android

Edytor pozwala łatwo utworzyć samodzielny pakiet aplikacji dla gry. Przed pakowaniem możesz określić, której ikony lub których ikon użyć dla aplikacji, ustawić kod wersji itd. w pliku game.project plik ustawień projektu.

Aby spakować grę, wybierz Project ▸ Bundle... ▸ Android Application... z menu.

Jeśli chcesz, aby edytor automatycznie tworzył losowe debug certyfikaty, pozostaw pola Keystore i Keystore password puste:

Signing Android bundle

Jeśli chcesz podpisać pakiet konkretnym keystore, wskaż pola Keystore i Keystore password. Oczekuje się, że Keystore będzie miał rozszerzenie pliku .keystore, a hasło ma być zapisane w pliku tekstowym z rozszerzeniem .txt. Można też podać Key password, jeśli klucz w keystore ma inne hasło niż sam keystore:

Signing Android bundle

Defold obsługuje tworzenie zarówno plików APK, jak i AAB. Wybierz APK albo AAB z listy rozwijanej Bundle Format.

Naciśnij Create Bundle, gdy skonfigurujesz ustawienia pakietu aplikacji. Zostaniesz wtedy poproszony o wskazanie miejsca na komputerze, w którym pakiet ma zostać utworzony.

Android Application Package file

Warianty budowania

Gdy tworzysz pakiet gry, musisz wybrać, którego wariantu silnika chcesz użyć. Masz trzy podstawowe opcje:

  • Debug
  • Release
  • Headless

Te różne wersje są też określane jako Build variants.

Gdy wybierzesz Project ▸ Build, zawsze otrzymasz wersję debug.

Debug

Ten typ pliku wykonywalnego jest zwykle używany podczas tworzenia gry, ponieważ zawiera kilka przydatnych funkcji debugowania:

  • Profiler - Służy do zbierania liczników wydajności i użycia. Dowiedz się, jak korzystać z profilera w podręczniku profilowania.
  • Logowanie - Silnik będzie zapisywał informacje systemowe, ostrzeżenia i błędy, gdy logowanie jest włączone. Będzie też wypisywać logi z funkcji Lua print() oraz z natywnych rozszerzeń korzystających z dmLogInfo(), dmLogError() i podobnych. Dowiedz się, jak czytać te logi w podręczniku logów gry i systemu.
  • Szybkie przeładowanie (Hot reload) - To potężna funkcja, która pozwala deweloperowi przeładowywać zasoby, gdy gra jest uruchomiona. Dowiedz się, jak z niej korzystać w instrukcji o szybkim przeładowaniu.
  • Usługi silnika (Engine services) - Można połączyć się z debugową wersją gry i komunikować się z nią przez kilka różnych otwartych portów TCP i usług. Obejmują one funkcję hot reload, zdalny dostęp do logów i wspomniany wyżej profiler, ale także inne mechanizmy zdalnej interakcji z silnikiem. Więcej informacji o usługach silnika znajdziesz w dokumentacji deweloperskiej.

Release

Ten wariant ma wyłączone funkcje debugowania. Tę opcję należy wybrać, gdy gra jest gotowa do publikacji w sklepie z aplikacjami lub udostępnienia graczom w inny sposób. Nie zaleca się wydawania gry z włączonymi funkcjami debugowania z kilku powodów:

  • Funkcje debugowania zajmują trochę miejsca w pliku binarnym, a to dobra praktyka, aby starać się utrzymać rozmiar pliku binarnego wydanej gry tak mały, jak to możliwe.
  • Funkcje debugowania zużywają też trochę czasu CPU. Może to wpłynąć na wydajność gry, jeśli użytkownik ma słabszy sprzęt. Na telefonach komórkowych zwiększone użycie CPU będzie też przyczyniać się do nagrzewania urządzenia i szybszego rozładowywania baterii.
  • Funkcje debugowania mogą ujawniać informacje o grze, które nie powinny trafić do graczy, zarówno z perspektywy bezpieczeństwa, jak i oszustw czy nadużyć.

Headless

Ten plik wykonywalny działa bez grafiki i dźwięku. Oznacza to, że możesz uruchamiać testy jednostkowe i smoke testy gry na serwerze CI, a nawet używać go jako serwera gry w chmurze.

Instalowanie pakietu aplikacji Android

Instalowanie APK

Plik .apk można skopiować na urządzenie za pomocą narzędzia adb albo przesłać do Google Play przez konsolę deweloperską Google Play.

Narzędzie wiersza poleceń adb jest łatwym w użyciu i wszechstronnym programem służącym do komunikacji z urządzeniami z Androidem. adb można pobrać i zainstalować jako część Android SDK Platform-Tools dla systemów Mac, Linux lub Windows.

Pobierz Android SDK Platform-Tools z: https://developer.android.com/studio/releases/platform-tools. Narzędzie adb znajdziesz w katalogu /platform-tools/. Alternatywnie pakiety dla konkretnych systemów można zainstalować za pomocą odpowiednich menedżerów pakietów.

W Ubuntu Linux:

$ sudo apt-get install android-tools-adb

W Fedora 18/19:

$ sudo yum install android-tools

W macOS (Homebrew)

$ brew cask install android-platform-tools

Możesz sprawdzić, czy adb działa, podłączając urządzenie z Androidem do komputera przez USB i wykonując następujące polecenie:

$ adb devices
List of devices attached
31002535c90ef000    device

Jeśli urządzenie się nie pojawia, sprawdź, czy na urządzeniu z Androidem włączono USB debugging. Otwórz Settings urządzenia i poszukaj Developer options (lub Development).

Włącz debugowanie USB

$ adb install Defold\ examples.apk
4826 KB/s (18774344 bytes in 3.798s)
  pkg: /data/local/tmp/my_app.apk
Success

Instalowanie APK z poziomu edytora

Plik .apk możesz zainstalować i uruchomić za pomocą pól wyboru edytora Install on connected device i Launch installed app w oknie Bundle:

instalowanie i uruchamianie APK

Aby ta funkcja działała, musisz mieć zainstalowany ADB oraz włączone USB debugging na podłączonym urządzeniu. Jeśli edytor nie potrafi wykryć lokalizacji narzędzia wiersza poleceń ADB, musisz ją wskazać w preferencjach edytora.

Instalowanie AAB

Plik .aab można przesłać do Google Play przez konsolę deweloperską Google Play. Można też wygenerować plik .apk z pliku .aab, aby zainstalować go lokalnie za pomocą Android bundletool.

Uprawnienia

Silnik Defold wymaga szeregu różnych uprawnień, aby działały wszystkie jego funkcje. Uprawnienia są definiowane w pliku AndroidManifest.xml, wskazanym w pliku game.project plik ustawień projektu. Więcej o uprawnieniach Androida można przeczytać w oficjalnej dokumentacji. W domyślnym manifeście są wymagane następujące uprawnienia:

android.permission.INTERNET i android.permission.ACCESS_NETWORK_STATE (Protection level: normal)

Pozwalają aplikacjom otwierać gniazda sieciowe i uzyskiwać informacje o sieciach. Te uprawnienia są potrzebne do korzystania z Internetu. (oficjalna dokumentacja Androida) oraz (oficjalna dokumentacja Androida).

android.permission.WAKE_LOCK (Protection level: normal)

Pozwala używać PowerManager WakeLocks, aby zapobiec usypianiu procesora lub wygaszaniu ekranu. To uprawnienie jest potrzebne do tymczasowego powstrzymania urządzenia przed przejściem w stan uśpienia podczas odbierania powiadomienia push. (oficjalna dokumentacja Androida)

Korzystanie z AndroidX

AndroidX to duże ulepszenie oryginalnej Android Support Library, która nie jest już rozwijana. Pakiety AndroidX całkowicie zastępują Support Library, zapewniając pełną zgodność funkcji i nowe biblioteki. Większość rozszerzeń Androida w Portalu zasobów (Asset Portal) obsługuje AndroidX. Jeśli nie chcesz używać AndroidX, możesz je jawnie wyłączyć na rzecz starej Android Support Library, zaznaczając Use Android Support Lib w manifeście aplikacji.

FAQ

P: Czy można ukryć paski nawigacji i stanu w Androidzie?

O: Tak, ustaw opcję immersive_mode w sekcji Android w pliku game.project. Dzięki temu aplikacja może przejąć cały ekran i przechwytywać wszystkie zdarzenia dotykowe na ekranie.

P: Dlaczego podczas instalowania gry Defold na urządzeniu pojawia się błąd “Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES]”?

O: Android wykrywa, że próbujesz zainstalować aplikację z nowym certyfikatem. Podczas tworzenia pakietów debugowych każda kompilacja jest podpisywana tymczasowym certyfikatem. Przed zainstalowaniem nowej wersji odinstaluj starą aplikację:

$ adb uninstall com.defold.examples
Success
$ adb install Defold\ examples.apk
4826 KB/s (18774344 bytes in 3.798s)
      pkg: /data/local/tmp/Defold examples.apk
Success

P: Dlaczego podczas budowania z niektórymi rozszerzeniami pojawiają się błędy o sprzecznych właściwościach w AndroidManifest.xml?

O: Może się tak zdarzyć, gdy dwa lub więcej rozszerzeń dostarcza szablon manifestu Androida zawierający ten sam tag właściwości, ale z różnymi wartościami. Taka sytuacja miała na przykład miejsce z Firebase i AdMob. Błąd budowania wygląda podobnie do tego:

SEVERE: /tmp/job4531953598647135356/upload/AndroidManifest.xml:32:13-58
Error: Attribute property#android.adservices.AD_SERVICES_CONFIG@resource
value=(@xml/ga_ad_services_config) from AndroidManifest.xml:32:13-58 is also
present at AndroidManifest.xml:92:13-59 value=(@xml/gma_ad_services_config).
Suggestion: add 'tools:replace="android:resource"' to <property> element at
AndroidManifest.xml to override. 

Więcej informacji o tym problemie i obejściu znajdziesz w zgłoszonym problemie Defold #9453 oraz w problemie Google #327696048.