Mehrere APKs für verschiedene Bildschirmgrößen erstellen

Wenn Sie Ihre App bei Google Play veröffentlichen, sollten Sie eine Android App Bundle: In diesem Fall generiert und stellt Google Play automatisch optimierte APKs für die Gerätekonfiguration jedes Nutzers bereit. So werden nur die Code- und Ressourcen heruntergeladen, die zum Ausführen Ihrer App erforderlich sind. Die Veröffentlichung mehrerer APKs ist nützlich, wenn Sie Ihre App nicht bei Google Play veröffentlichen, aber jedes APK selbst erstellen, signieren und verwalten müssen.

Wenn Sie bei der Entwicklung Ihrer Android-App die Vorteile mehrerer APKs bei Google Play nutzen möchten, ist es wichtig, von Anfang an einige bewährte Vorgehensweisen anzuwenden und unnötige Kopfschmerzen zu vermeiden. in den Entwicklungsprozess einfließen. In dieser Lektion erfährst du, wie du mehrere APKs deiner App, die jeweils eine andere Klasse von Bildschirmgrößen abdeckt. Außerdem lernen Sie einige Tools kennen, mit denen Sie die Pflege einer Codebasis mit mehreren APKs so einfach wie möglich gestalten können.

Bestätigen, dass Sie mehrere APKs benötigen

Wenn Sie versuchen, eine App zu erstellen, die auf Android-Geräten unterschiedlicher Größe funktioniert, Ihre App soll den gesamten verfügbaren Speicherplatz auf größeren Geräten, ohne Abstriche bei der Kompatibilität oder Nutzerfreundlichkeit auf kleineren Bildschirmen zu machen. Es mag am Anfang so erscheinen, Auch wenn die Unterstützung mehrerer APK-Dateien die beste Lösung ist, ist das oft nicht der Fall. Die Verwendung eines einzelnen APK Stattdessen des Entwicklerhandbuchs für mehrere APKs finden Sie nützliche Informationen dazu, wie Sie Das erreichen Sie mit einem einzigen APK, einschließlich der Nutzung unserer Support-Bibliothek. Außerdem sollten Sie die Leitfaden zur Unterstützung mehrerer Bildschirme und es gibt sogar eine Supportbibliothek, können mit dem Android SDK heruntergeladen werden. Damit können Sie Fragmente auf Pre-Honeycomb-Geräten verwenden, mehrere Bildschirme in einem einzigen APK zu unterstützen).

Die Beschränkung der App auf ein einziges APK hat mehrere Vorteile, einschließlich:

  • Einfachere Veröffentlichung und Tests
  • Es muss nur eine Codebasis verwaltet werden
  • Deine App kann sich an Änderungen der Gerätekonfiguration anpassen
  • Die geräteübergreifende App-Wiederherstellung funktioniert einfach
  • Sie müssen sich keine Gedanken über Marktpräferenzen, das Verhalten von „Upgrades“ von einem APK in den oder welches APK zu welcher Geräteklasse gehört

Im weiteren Verlauf dieser Lektion wird davon ausgegangen, dass Sie das Thema recherchiert und das und haben festgestellt, dass mehrere APKs der richtige Weg für Ihr .

Anforderungen grafisch darstellen

Erstellen Sie zuerst ein einfaches Diagramm, um schnell zu ermitteln, wie viele APKs Sie benötigen und welche Bildschirmgrößen jedes APK abdeckt. Glücklicherweise ist es ganz einfach, Ihre Anforderungen schnell und einfach zu skizzieren und als Referenz für später aufzubewahren. Beginnen Sie mit einer Reihe von Zellen, die die verschiedenen Bildschirmgrößen darstellen. die auf der Android-Plattform verfügbar sind.

klein normal groß xlarge

Färben Sie das Diagramm nun so ein, dass jede Farbe ein APK darstellt. Hier ist ein Beispiel dafür, wie Sie kann jedes APK auf einen bestimmten Bereich von Bildschirmgrößen anwenden.

klein normal groß xlarge

Je nach Ihren Anforderungen könnten Sie auch zwei APKs verwenden: „klein“ und „alle anderen“. oder „xlarge and alles andere“. Die Farbgebung im Diagramm erleichtert auch die Kommunikation innerhalb des Teams. Sie können jetzt einfach jedes APK als „blau“, „grün“ oder „rot“ bezeichnen, unabhängig davon, wie viele verschiedene Bildschirmtypen abgedeckt sind.

Alle gängigen Codes und Ressourcen in einem Bibliotheksprojekt speichern

Ganz gleich, ob Sie eine bestehende Android-App ändern oder eine ganz neue App erstellen möchten: was Sie als Erstes an der Codebasis tun sollten. Alles das in das Bibliotheksprojekt geht, nur einmal aktualisiert werden muss. Farbthemen und Fehler, die im freigegebenen Code behoben wurden), wodurch die Entwicklungszeit verkürzt und die die leicht vermieden werden können.

Hinweis:Die Implementierungsdetails zum Erstellen und Bibliotheksprojekte zu integrieren, geht es in dieser Lektion nicht. findest du unter Android-Mediathek erstellen.

Wenn Sie eine vorhandene App konvertieren, um mehrere APK-Dateien zu unterstützen, durchforsten Sie Ihre Codebasis nach jeder lokalisierten Zeichenfolgendatei, Liste von Werten, Designs sowie die Farbe, die Menüsymbole und das Layout, das sich in den APKs nicht ändert, im Bibliotheksprojekt an. Code, der sich nicht wesentlich ändern wird, sollte ebenfalls in das Bibliotheksprojekt aufgenommen werden. Sie werden diese Funktionen wahrscheinlich -Klassen hinzufügen, um eine oder zwei Methoden vom APK zu APK hinzuzufügen.

Wenn Sie die Anwendung hingegen von Grund auf neu erstellen, sollten Sie zuerst Code im Bibliotheksprojekt schreiben und ihn dann nur bei Bedarf in ein einzelnes APK verschieben. Langfristig ist dies viel einfacher zu verwalten, dann noch einmal, dann noch einmal und Monate später, um herauszufinden, ohne etwas zu verschrauben.

Neue APK-Projekte erstellen

Für jedes APK, das Sie veröffentlichen möchten, sollte es ein separates Android-Projekt geben. Einfach Organisation erstellen, legen Sie das Bibliotheksprojekt und alle zugehörigen APK-Projekte im selben übergeordneten Ordner ab. Denken Sie auch daran, dass jedes APK denselben Paketnamen haben muss, auch wenn dies nicht zwangsläufig den Paketnamen mit der Bibliothek teilen müssen. Wenn Sie 3 APKs nach dem Schema haben müssten, wie oben beschrieben, könnte Ihr Stammverzeichnis wie folgt aussehen:

alexlucas:~/code/multi-apks-root$ ls
foo-blue
foo-green
foo-lib
foo-red

Fügen Sie nach dem Erstellen der Projekte das Bibliotheksprojekt als Referenz zu jedem APK-Projekt hinzu. Wenn Definieren Sie nach Möglichkeit Ihre Ausgangsaktivität im Bibliotheksprojekt und erweitern Sie diese Aktivität in Ihrem APK. Projekt arbeiten. Wenn Sie eine Anfangsaktivität im Bibliotheksprojekt definiert haben, die Initialisierung deiner App an einem Ort, damit die einzelnen APK-Dateien „universelle“ wie z. B. die Initialisierung von Analytics, die Durchführung von Lizenzüberprüfungen Initialisierungsverfahren, die sich von APK zu APK kaum ändern.

Manifeste anpassen

Wenn ein Nutzer über Google Play eine App herunterlädt, die mehrere APKs verwendet, Das zu verwendende APK wird anhand von zwei einfachen Regeln ausgewählt:

  • Im Manifest muss angegeben sein, dass das betreffende APK berechtigt ist.
  • Von den zulässigen APKs gewinnt die höchste Versionsnummer.

Nehmen wir als Beispiel die oben beschriebenen mehrere APKs und gehen davon aus, dass jedes APK so konfiguriert ist, dass alle Bildschirmgrößen unterstützt werden, die größer als die „Ziel“-Bildschirmgröße sind. Im Einzelnen sieht der mögliche Bereich für jedes APK so aus:

klein normal groß xlarge
klein normal groß xlarge
klein normal groß xlarge

Wenn jedoch die „höchste Versionsnummer gewinnt“ wenn wir das Attribut „versionCode“ dass Rot ≥ Grün ≥ Blau ist, wird das Diagramm auf folgende Weise minimiert:

klein normal groß xlarge

Nehmen wir nun weiter an, dass das Red APK Anforderungen hat, die die anderen beiden nicht haben. Die Seite Filter bei Google Play auf der Android- Im Entwicklerleitfaden finden Sie eine vollständige Liste der möglichen Fehler. Nehmen wir als Beispiel an, Für die Farbe Rot ist eine Frontkamera erforderlich. Der Sinn des roten APK besteht sogar darin, das zusätzliche um mit der Frontkamera unterhaltsame Dinge zu tun. Aber es stellte sich heraus, Nicht alle XL-Geräte haben auch Frontkameras! Das Grauen!

Wenn ein Nutzer Google Play auf einem solchen Gerät aufruft, dass Red die Frontkamera als Anforderung auflistet, und ignoriere sie ganz leise. hat festgestellt, dass Red und dieses Gerät kein digitaler Himmel sind. Dann erkennt das System, Grün ist nicht nur mit XXL-Geräten kompatibel, es spielt auch keine Rolle, ob Frontkamera. Die App kann vom Nutzer weiterhin bei Google Play heruntergeladen werden, da es trotz des Problems mit der Frontkamera noch ein APK gab, das diese Bildschirmgröße unterstützte.

Damit Sie alle APKs in separaten „Tracks“ verwalten können, ist es wichtig, einen guten Versionscode zu haben. . Den empfohlenen Code finden Sie im Bereich Versionscodes der in unserem Entwicklerleitfaden. Da es bei den Beispiel-APKs nur um eine von drei möglichen Dimensionen vorhanden sind, wäre es ausreichend, die einzelnen APKs jeweils durch 1.000 zu trennen und dann von dort zu erhöhen. Dieses könnte so aussehen:

Blau: 1001, 1002, 1003, 1004...
Grün: 2001, 2002, 2003, 2004…
Rot:3001, 3002, 3003, 3004...

Zusammengenommen würden Ihre Android-Manifeste wahrscheinlich so aussehen wie die Folgendes:

Blau:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    android:versionCode="1001" android:versionName="1.0" package="com.example.foo">
    <supports-screens android:smallScreens="true"
        android:normalScreens="true"
        android:largeScreens="true"
        android:xlargeScreens="true" />
    ...

Grün:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    android:versionCode="2001" android:versionName="1.0" package="com.example.foo">
    <supports-screens android:smallScreens="false"
        android:normalScreens="false"
        android:largeScreens="true"
        android:xlargeScreens="true" />
    ...

Rot:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    android:versionCode="3001" android:versionName="1.0" package="com.example.foo">
    <supports-screens android:smallScreens="false"
        android:normalScreens="false"
        android:largeScreens="false"
        android:xlargeScreens="true" />
    ...

Technisch gesehen funktionieren mehrere APKs mit den kompatiblen Bildschirmen. oder das Tag für kompatible Bildschirme. Unterstützt Bildschirme werden in der Regel bevorzugt, und es ist generell keine gute Idee, beide Tags im selben Manifest zu verwenden. Es macht Dinge unnötig kompliziert und erhöht die Chance auf Fehler. Anstelle der Standardwerte (kleine und kleine Werte) „normal“ sind standardmäßig immer „true“, wird in den Manifesten explizit der Wert für für jede Bildschirmgröße an. Dies kann Ihnen später Kopfzerbrechen ersparen. Bei einem Manifest mit einem Ziel-SDK von weniger als 9 wird „xlarge“ beispielsweise automatisch auf „false“ gesetzt, da diese Größe noch nicht existierte. Seien Sie also konkret.

Checkliste vor der Veröffentlichung ansehen

Überprüfen Sie die folgenden Punkte, bevor Sie sie bei Google Play hochladen. Denken Sie daran, dass diese die für mehrere APKs relevant sind und keinesfalls eine vollständige Checkliste für alle Apps, die auf Google Play hochgeladen werden.

  • Alle APKs müssen denselben Paketnamen haben
  • Alle APKs müssen mit demselben Zertifikat signiert sein
  • Für jede Bildschirmgröße, die von deinem APK unterstützt werden soll, musst du im Manifest „true“ festlegen. Für jede Bildschirmgröße nicht auf "false" setzen,
  • Überprüfe deine Manifestfilter auf widersprüchliche Informationen (ein APK, das nur wird der Cupcake auf XLARGE-Bildschirmen nicht von niemandem gesehen werden.)
  • Das Manifest jedes APK muss für mindestens einen unterstützten Bildschirm, eine unterstützte OpenGL-Textur oder Plattformversion
  • Testen Sie jedes APK auf mindestens einem Gerät. Davon abgesehen haben Sie eine der anpassbare Geräteemulatoren im Unternehmen auf deinem Entwicklungscomputer. Verrückt!

Es lohnt sich auch, das kompilierte APK zu prüfen, bevor es auf den Markt gebracht wird, um sicherzustellen, dass keine eventuelle Überraschungen, die Ihre App bei Google Play verstecken könnten. Das geht ganz einfach über die „aapt“ . Aapt (das Android Asset Packaging Tool) ist Teil des Build-Prozesses zur Erstellung und für Android-Apps und ist auch ein sehr praktisches Tool für die Prüfung.

>aapt dump badging
package: name='com.example.hello' versionCode='1' versionName='1.0'
sdkVersion:'11'
uses-permission:'android.permission.SEND_SMS'
application-label:'Hello'
application-icon-120:'res/drawable-ldpi/icon.png'
application-icon-160:'res/drawable-mdpi/icon.png'
application-icon-240:'res/drawable-hdpi/icon.png'
application: label='Hello' icon='res/drawable-mdpi/icon.png'
launchable-activity: name='com.example.hello.HelloActivity'  label='Hello' icon=''
uses-feature:'android.hardware.telephony'
uses-feature:'android.hardware.touchscreen'
main
supports-screens: 'xlarge'
supports-any-density: 'true'
locales: '--_--'
densities: '120' '160' '240'

Achten Sie bei der Prüfung der aapt-Ausgabe darauf, dass Sie keine widersprüchlichen Werte für "unterstützt-Bildschirme" und "Kompatible Bildschirme" enthält und dass es keine unbeabsichtigten Werte die aufgrund von Berechtigungen hinzugefügt wurden, die du im Manifest festgelegt hast. Im obigen Beispiel hat das APK sind auf den meisten, wenn nicht sogar auf allen Geräten unsichtbar.

Was steckt dahinter? Durch das Hinzufügen der erforderlichen Berechtigung SEND_SMS wurde die Funktionsanforderung von „android.hardware.telephony“ implizit hinzugefügt. Da es sich bei den meisten (wenn nicht sogar bei allen) großen Geräten um Tablets handelt, die keine Telefoniehardware enthalten, filtert Google Play dieses APK in diesen Fällen heraus, bis zukünftige Geräte verfügbar sind, die beide groß genug sind, um eine Meldung über eine große Bildschirmgröße zu erstellen und über Telefoniehardware zu verfügen.

Dieses Problem lässt sich leicht beheben, indem du Folgendes zu deinem manifest:

<uses-feature android:name="android.hardware.telephony" android:required="false" />

Die Anforderung für android.hardware.touchscreen wird ebenfalls implizit hinzugefügt. Wenn Ihr APK auf Fernsehern ohne Touchscreen angezeigt werden soll, fügen Sie Ihrem Manifest Folgendes hinzu:

<uses-feature android:name="android.hardware.touchscreen" android:required="false" />

Nachdem Sie die Checkliste vor der Veröffentlichung durchgegangen sind, laden Sie Ihre APKs bei Google Play hoch. Es kann etwas dauern, bis die App bei Google Play angezeigt wird. eine letzte Prüfung durchführen. Laden Sie die Anwendung auf alle Testgeräte herunter, die Sie möglicherweise haben, um sicherzustellen, dass die APKs auf die gewünschten Geräte ausgerichtet sind.

Weitere Informationen zum Veröffentlichen mehrerer APKs bei Google Play finden Sie unter Unterstützung für mehrere APKs.