mafulechka
mafulechka8. Juli 2019 05:21

So erfüllen Sie die neuen Anforderungen von Google Play

Ab dem 1. August akzeptiert Google Play keine neuen Apps oder App-Updates mehr ohne 64-Bit-Version (es sei denn, es gibt überhaupt nativen Code). Für Qt-Benutzer bedeutet dies, dass Sie ein zusätzliches APK mit 64-Bit-Binärdateien erstellen müssen.


Qt liefert 64-Bit-Binärdateien für Android aus (ab Qt 5.12.0), sodass die Erfüllung der neuen Anforderung technisch kein großes Problem darstellt. Aber nach Diskussionen mit Benutzern wurde deutlich, dass nicht jeder versteht, wie man eine Anwendung auf Google Play einrichtet, die mehrere Architekturen gleichzeitig unterstützt.

Dieser Hilferuf, verbunden mit der Tatsache, dass jetzt ein neuer Windows-Arbeitsplatz eingerichtet wird, bot eine hervorragende Gelegenheit, sich mit der Entwicklung von Qt-Android-Anwendungen im Allgemeinen zu befassen. In diesem Blog fangen wir ganz neu an und zeigen Ihnen, wie Sie mit Android loslegen und eine App veröffentlichen, die die Google Play-Anforderungen erfüllt.

Wir werden:

  • alle Installationsschritte durchlaufen, die zum Erstellen einer Arbeitsumgebung erforderlich sind;
  • den Prozess des Erstellens einer Anwendung für mehrere Architekturen beschreiben,
  • und zeigen Ihnen, wie Sie Ihre Binärdateien auf Google Play hochladen.

Die ersten paar Teile werden vielen von Ihnen vielleicht bekannt sein, wenn Sie also gelangweilt sind und sich mit dem Hauptthema vertraut machen möchten, können Sie gerne mit Schritt 4 fortfahren.

Hinweis zu SDK-Versionen

Das Android SDK befindet sich in intensiver Entwicklung und ist häufig nicht abwärtskompatibel, was zu Integrationsproblemen mit Qt führt. Obwohl wir so schnell wie möglich auf Probleme reagieren, die aufgrund von Änderungen oder Regressionen im SDK auftreten, lautet eine allgemeine Faustregel, mit der Aktualisierung auf die neuesten und besten Android-Tools zu warten, bis Sie sich an die Inkompatibilität mit Qt gewöhnen können.

Während es auch auf anderen Plattformen einige Probleme gab, bezogen sich die meisten Probleme auf Windows. Wenn Sie sich auf diesem Hostsystem befinden, achten Sie daher besonders darauf, nach bekannten guten Versionen zu suchen, bevor Sie Ihre Umgebung einrichten.

Wir empfehlen derzeit die Verwendung der folgenden Tools zusammen mit Qt 5.13.0:

• Android-Build-Tools (Android-Build-Tools) Version 28
• Android-NDK r19
• Java-Entwicklungskit 8

Schritt 1: JDK installieren

Android ist in erster Linie eine Java-basierte Plattform, und obwohl Sie Ihre Qt-Anwendungen vollständig in C++ und/oder QML schreiben können, benötigen Sie das Java Development Kit , um die Dateien zu kompilieren, die die Integration ermöglichen.

Bitte beachten Sie, dass es eine Inkompatibilität zwischen dem Android SDK Manager-Tool und späteren Versionen des Oracle JDK gibt, wodurch die neuesten JDK-Versionen mit der Android-Umgebung unbrauchbar werden. Um dies zu umgehen, empfehlen wir Ihnen, JDK Version 8 für die Verwendung mit Android herunterzuladen.

Sie können die offiziellen Oracle-Binärdateien oder eine andere Option wie das AdoptOpenJDK-Projekt verwenden.
Laden Sie das Installationsprogramm herunter, führen Sie es aus und installieren Sie es im Standardordner.

Schritt 2: Richten Sie die Android-Umgebung ein

Der zweite Schritt besteht darin, die eigentliche Android-Entwicklungsumgebung zu erhalten. Laden Sie zunächst Android Studio herunter und installieren Sie es. Scrollen Sie durch die verschiedenen "Beta"- und "Canary"-Veröffentlichungen (Versionen) und Sie werden die neueste stabile Version finden.

Sobald Android Studio installiert ist, können Sie damit die „SDK-Plattform“ installieren. Dies ist die eigentliche Sammlung von Java-Klassen für eine bestimmte Android-Distribution. Wenn Sie Android Studio zum ersten Mal öffnen, werden Sie aufgefordert, das SDK-Framework zu installieren. Sie können das neueste SDK, Plattform 29, bedenkenlos verwenden, was die empfohlene Standardeinstellung ist.

Zusätzlich zum SDK müssen wir auch das NDK installieren. Dies ist ein Entwicklungskit, das verwendet wird, um C++-Code für die Ausführung auf Android zu kompilieren. Wie oben erwähnt, verwenden wir Android NDK r19c und nicht die neueste Version, da es Probleme mit Android NDK r20 gibt, die Kompilierungsfehler verursachen. Das Problem wird in Qt 5.13.1 und Qt 5.12.5 behoben. Wenn Sie also beginnen, sie zu verwenden, ist es möglich, auf Android NDK r20 zu aktualisieren.

Und als letzten Schritt müssen wir sicherstellen, dass wir die Version 28.0.3 der Android-Build-Tools und nicht die neueste Version verwenden. Beachten Sie, dass dies nur ein Problem für Windows-Hosts ist.

Klicken Sie im anfänglichen Dialogfeld von Android Studio auf Konfigurieren und wählen Sie dann SDK-Manager aus. Klicken Sie auf die Registerkarte SDK-Tools und vergewissern Sie sich, dass das Kontrollkästchen Paketdetails anzeigen aktiviert ist. Deaktivieren Sie unter Android-Build-Tools die Option 29.0.0 und wählen Sie stattdessen 28.0.3 aus.

Dadurch wird die defekte Version der Build-Tools entfernt und die ältere Version installiert. Klicken Sie auf Übernehmen , um den Vorgang zu starten, und wenn er fertig ist, haben Sie eine funktionierende Android-Umgebung installiert.

Schritt 3: Installieren Sie Qt

Wir werden Qt 5.13.0 verwenden. Wenn Sie dies noch nicht getan haben, laden Sie zunächst das Online-Installationsprogramm von Ihrem Qt-Konto herunter.

Stellen Sie beim Ausführen des Installationsprogramms sicher, dass Sie die Zielarchitekturen arm64-v8a und armv7a auswählen. Dies sind die technischen Namen für die 64-Bit- bzw. 32-Bit-Versionen der ARM-Prozessorfamilie, die die am häufigsten verwendeten Prozessoren auf Android-Geräten sind.

Hinweis Insbesondere benötigen wir für dieses Beispiel Qt Purchasing, da es die Anwendung enthält, die wir als Demo verwenden möchten. Es kann auch aus der Liste ausgewählt werden.

Wenn Qt die Installation abgeschlossen hat, starten Sie Qt Creator und öffnen Sie Optionen . Wechseln Sie im Abschnitt Geräte zur Registerkarte Android und wählen Sie die Verzeichnisse aus, in denen Sie die verschiedenen Pakete in den vorherigen Schritten installiert haben.

Wenn alles richtig eingerichtet ist, zeigt Qt Creator ein grünes Häkchen und Sie können mit der Android-Entwicklung mit Qt beginnen.

Schritt 4: Einrichten des Projekts in Qt Creator

Für dieses Beispiel verwenden wir Qt Hangman . Dies ist ein kleines Beispiel, das wir gemacht haben, um zu zeigen, wie man In-App-Käufe plattformübergreifend tätigt.

Wir öffnen zuerst Qt Creator, was über den Begrüßungsbildschirm erfolgen kann. Sobald es geöffnet wurde, fordert uns Qt Creator auf, auszuwählen, welche Versionen von Qt wir zum Erstellen verwenden möchten.

Wählen Sie die 64-Bit- und 32-Bit-Versionen von Qt aus und klicken Sie auf Projekt konfigurieren .

Um die zusätzlichen Anforderungen bei Google Play zu erfüllen, möchten wir zwei APKs erstellen, eines für 32-Bit-Geräte und eines für 64-Bit-Geräte. Wir müssen jeden von ihnen einzeln konfigurieren.

Dieser Screenshot zeigt ein Installationsbeispiel für einen 32-Bit-Build. Wichtige Dinge, auf die Sie achten sollten:

• Verwenden Sie für jeden Build ein anderes Shadow-Build-Verzeichnis.
• Stellen Sie sicher, dass Sie Release-Konfiguration auswählen.
• Sie müssen auch das Kontrollkästchen Paket signieren aktivieren, um das Paket zu signieren, andernfalls wird es vom Google Play Store abgelehnt.

Mit Ausnahme des Build-Verzeichnisses sollten die Einstellungen für einen 64-Bit-Build gleich sein. Wählen Sie das 64-Bit-Bundle auf der linken Seite aus und nehmen Sie die entsprechenden Einstellungen dazu vor.

Schritt 5: Vorbereiten des Manifests

Darüber hinaus erfordern die beiden Pakete identische AndroidManifest.xml -Dateien, mit Ausnahme eines Details: Der Versionscode der beiden muss unterschiedlich sein. Der Versionscode kann fast beliebig sein, aber beachten Sie, dass bei der Installation eines APK auf einem Gerät aus dem Store das APK mit dem höchsten Versionscode ausgewählt wird. Wie Qt-Benutzer Fabien Chereau in einem Kommentar zum Fehlerbericht betonte, möchte man generell den Versionscode der 64-Bit-Version höher setzen als den der 32-Bit-Version, damit ein Gerät, das beide Versionen unterstützt, die 64-Bit-Version bevorzugt. etwas eins.

Wie Felix Barz im selben Thread betonte, kann dies in der .pro -Datei des Projekts automatisiert werden. Hier ist eine leicht modifizierte Version seines Codes:

defineReplace(droidVersionCode) {
        segments = $$split(1, ".")
        for (segment, segments): vCode = "$$first(vCode)$$format_number($$segment, width=3 zeropad)"

        contains(ANDROID_TARGET_ARCH, arm64-v8a): \
            suffix = 1
        else:contains(ANDROID_TARGET_ARCH, armeabi-v7a): \
            suffix = 0
        # add more cases as needed

        return($$first(vCode)$$first(suffix))
}

VERSION = 1.2.3
ANDROID_VERSION_NAME = $$VERSION
ANDROID_VERSION_CODE = $$droidVersionCode($$ANDROID_VERSION_NAME)

Dieser Trick wandelt die VERSION der Anwendung in eine Ganzzahl um und fügt am niederwertigsten Ende eine neue Ziffer hinzu, um die Architektur anzugeben. Für Version 1.2.3 wäre der Versionscode beispielsweise 0010020030 für ein 32-Bit-Paket und 0010020031 für ein 64-Bit-Paket.

Wenn Sie AndroidManifest.xml mithilfe der Schaltfläche APK erstellen in den Projekteinstellungen generieren, wird dieser Versionscode automatisch aus dem Projekt abgerufen. Nachdem Sie dies getan und das Manifest bearbeitet haben, um den Paketnamen und den Paketnamen Ihrer Anwendung zu erhalten, besteht der letzte Schritt darin, das Paket zu erstellen: Zuerst erstellen Sie mit einem der beiden Kits, und dann müssen Sie das andere Kit aktivieren und erneut erstellen .

Wenn Sie fertig sind, haben Sie zwei veröffentlichbare APK-Pakete, eines in jedem der zuvor eingerichteten Build-Verzeichnisse. Relativ zum Build-Verzeichnis befindet sich das Paket in android-build\build\output\apk\release .

Beachten Sie, dass Sie diesen Prozess für eine effizientere Einrichtung wahrscheinlich automatisieren möchten. Dies ist auch durchaus möglich, da alle von Qt Creator verwendeten Tools über die Befehlszeile ausgeführt werden können. Weitere Informationen finden Sie in der androiddeployqt-Dokumentation .

Schritt 6: Veröffentlichen Sie die App auf Google Play

Die Google Play-Veröffentlichungsseite ist ziemlich selbstdokumentierend, und es gibt viele gute Tutorials, wie man es macht, also werden wir nicht alle Schritte zum Ausfüllen des Formulars durchgehen. Geben Sie einfach alle angeforderten Informationen ein, stellen Sie die gewünschten Bilder bereit und stellen Sie sicher, dass alle Kontrollkästchen in der linken Seitenleiste grün sind. Sie können hier alle Arten von Inhalten hinzufügen, also nehmen Sie sich Zeit damit. Am Ende wirkt sich dies auf die Popularität Ihrer Anwendung aus.

Sobald dies erledigt ist, können Sie im Abschnitt App-Releases eine neue Version erstellen und Ihre APKs dort hochladen.

Beachten Sie, dass Sie beim ersten Start aufgefordert werden, Google Play zu erlauben, den Signaturschlüssel Ihrer App zu verwalten.

Im Moment müssen Sie dies deaktivieren, indem Sie Opt Out auswählen. Um diese Funktion nutzen zu können, muss die App im neuen Format „Android App Bundle“ vorliegen. Es wird noch nicht von Qt unterstützt, aber auch Entwickler arbeiten daran. Tatsächlich hat Bogdan Vatra von KDAB (das auch die Android-zu-Qt-Portierung verwaltet) bereits einen Patch veröffentlicht, der die größte Herausforderung löst, diese Unterstützung zu erhalten.

Wenn wir Unterstützung erhalten, wird der Freigabeprozess bequemer. Mit dem AAB-Format generiert Google Play optimierte APKs für verschiedene Architekturen, aber im Moment müssen wir dies manuell tun, indem wir mehrere Bundles konfigurieren und mehrere APKs erstellen, wie zuvor in diesem Handbuch beschrieben.

Wenn zwei APKs in eine Version hochgeladen wurden, sollten Sie eine Liste wie die im obigen Bild sehen: zwei separate APKs, die jeweils eine native Plattform abdecken. Wenn Sie jeden der Einträge erweitern, können Sie sehen, was die „unterscheidenden APK-Details“ sind. Diese Kriterien werden verwendet, um eines voneinander auszuwählen, wenn das Gerät eine APK aus dem Google Play Store (Google Play Store) herunterlädt. In diesem Fall muss der differenzierende Teil die native Plattform sein.

Sie müssen also nur eine Qt-Anwendung mit 32-Bit- und 64-Bit-Binärdateien erstellen und auf Google Play veröffentlichen. Sobald die APKs hochgeladen sind, können Sie auf Veröffentlichen klicken und warten, bis Google Play die Automatisierung durchführt. Und wenn Sie derzeit 32-Bit-Apps im Store haben, stellen Sie sicher, dass Sie rechtzeitig vor August 2021 auf 64-Bit aktualisieren, da dann inkompatible Apps nicht mehr auf 64-Bit-Geräten bereitgestellt werden, auch wenn sie ebenfalls unterstützt werden 32-Bit-Binärdateien.

Рекомендуємо хостинг TIMEWEB
Рекомендуємо хостинг TIMEWEB
Stabiles Hosting des sozialen Netzwerks EVILEG. Wir empfehlen VDS-Hosting für Django-Projekte.

Magst du es? In sozialen Netzwerken teilen!

Vladimir Sergeevich
  • 8. Juli 2019 05:49

Спасибо. Я ждал эту информацию.
Правда требования не такие уж новые. Я первое письмо от гугла получил почти год назад, а еще у вас на форуме тему создавал: https://evileg.com/ru/forum/topic/909/ (думаю, ее как-то стоит слить со статьей или хотя бы ссылку поставить, т.к. по запросу google android 64 bit она одна из первых в выдаче гугла).

К сожалению, нет возможности оперативно разбираться в подобных вещах самостоятельно. Объём проработки информации слишком большой для маленького информационного ресурса. Но как только на блоге Qt вышла подобная полезная статья, так сразу сделали перевод.

Andrei Yankovich
  • 20. Juli 2019 14:41

Очень полезная информация, увы уже выкинул поддержку 32 битных бедняг.

Evgenii Legotckoi
  • 21. Juli 2019 06:03

да, наверное, 32-х разрядную поддержку уже давно поа было выкинуть. К слову, у вас много проектов под Android? Часто много где вижу вопросы о том, пишет ли кто-то вообще на Qt под мобильные системы. При этом вижу мнения, что под мобильные системы стоит писать вообще на нативных средствах. При этом у меня складывается мнение, что проекты есть и их не мало, просто народ об этом обычно не трубит на каждом повороте.

SS
  • 24. April 2021 09:09
  • (bearbeitet)

Добрый день.
Спасибо вам огромное за вашу статью!
только начинаю изучать QT под Андроид
4 дня потратил на то чтобы подобрать версию QT которая наконец то скомпилирует мне на windows.
Уже думал вторую операционку ставить Линукс.
Но благодаря вашей статье -поставив все строго как вы описывали - все заработало.

Ку всем! Вопрос! Как с помощью JNI вызвать оплату на android устройстве? Попробовал Qt Purchasing вроде пошло... но android пишет что библиотека устарела. В qt6 пока поддержки purchasing нет. Работать начал с Qt 5.15

Добрый день! Честно, не подскажу. Вообще я мог бы вам посоветовать посмотреть в сторону Qt-based фреймворка Felgo. У них сейчас в бесплатном тарифе есть как поддержка покупок внутри приложения, так и поддержка рекламных блоков.

Kommentare

Nur autorisierte Benutzer können Kommentare posten.
Bitte Anmelden oder Registrieren
Letzte Kommentare
A
ALO1ZE19. Oktober 2024 08:19
Fb3-Dateileser auf Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
ИМ
Игорь Максимов5. Oktober 2024 07:51
Django – Lektion 064. So schreiben Sie eine Python-Markdown-Erweiterung Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
d
dblas55. Juli 2024 11:02
QML - Lektion 016. SQLite-Datenbank und das Arbeiten damit in QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
k
kmssr8. Februar 2024 18:43
Qt Linux - Lektion 001. Autorun Qt-Anwendung unter Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
Qt WinAPI - Lektion 007. Arbeiten mit ICMP-Ping in Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
Jetzt im Forum diskutieren
J
JacobFib17. Oktober 2024 03:27
добавить qlineseries в функции Пользователь может получить любые разъяснения по интересующим вопросам, касающимся обработки его персональных данных, обратившись к Оператору с помощью электронной почты https://topdecorpro.ru…
JW
Jhon Wick1. Oktober 2024 15:52
Indian Food Restaurant In Columbus OH| Layla’s Kitchen Indian Restaurant If you're looking for a truly authentic https://www.laylaskitchenrestaurantohio.com/ , Layla’s Kitchen Indian Restaurant is your go-to destination. Located at 6152 Cleveland Ave, Colu…
КГ
Кирилл Гусарев27. September 2024 09:09
Не запускается программа на Qt: точка входа в процедуру не найдена в библиотеке DLL Написал программу на C++ Qt в Qt Creator, сбилдил Release с помощью MinGW 64-bit, бинарнику напихал dll-ки с помощью windeployqt.exe. При попытке запуска моей сбилженной программы выдаёт три оши…
F
Fynjy22. Juli 2024 04:15
при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …

Folgen Sie uns in sozialen Netzwerken