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 wird Google Play automatisch optimierte APKs für die Gerätekonfiguration der einzelnen Nutzer generiert und bereitgestellt, sodass sie nur den Code und die Ressourcen, die sie zum Ausführen Ihrer App benötigen. Das Veröffentlichen mehrerer APKs ist nützlich, wenn Sie Sie dürfen keine APKs bei Google Play veröffentlichen. Sie müssen aber jedes APK selbst erstellen, signieren und verwalten.

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, die Verwaltung einer Codebasis mit mehreren APK-Dateien so einfach wie möglich zu gestalten.

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 Dazu benötigen Sie nur ein einziges APK, einschließlich der Nutzung unserer Support-Bibliothek. Außerdem sollten Sie die Leitfaden zur Unterstützung mehrerer Bildschirme Außerdem gibt es 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:

  • Einfacheres Veröffentlichen und Testen
  • Es muss nur eine Codebasis verwaltet werden
  • Deine App kann sich an Änderungen der Gerätekonfiguration anpassen
  • Die geräteübergreifende App-Wiederherstellung funktioniert ganz 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 zunächst ein einfaches Diagramm, um schnell zu ermitteln, wie viele APKs Sie benötigen und welchen Bildschirm Sie benötigen. Größe(n), die jedes APK abdeckt. Zum Glück können Sie Ihre Anforderungen schnell und einfach skizzieren, und haben später eine Referenz. 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

Jetzt müssen Sie nur noch das Diagramm farbig markieren, sodass jede Farbe für ein APK steht. 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 Farben, Menüsymbole und das Layout, das sich in den APKs nicht ändert, im Bibliotheksprojekt an. Code, der sich kaum verändert, sollte auch im Bibliotheksprojekt. Sie werden diese Funktionen wahrscheinlich -Klassen hinzufügen, um eine oder zwei Methoden vom APK zu APK hinzuzufügen.

Wenn Sie die Anwendung jedoch von Grund auf neu erstellen, versuchen Sie Folgendes: so viel wie möglich, Code zuerst in das Bibliotheksprojekt zu schreiben und ihn dann nur einzelne APK. 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 erstellt haben, 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 die Initialisierung von Analytics, die Durchführung von Lizenzprüfungen und andere 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:

  • Das Manifest muss anzeigen, dass ein bestimmtes APK zulässig ist
  • Von den zulässigen APKs gewinnt die höchste Versionsnummer.

Nehmen wir beispielsweise die zuvor beschriebenen APKs und gehen wir davon aus, dass jedes APK alle Bildschirmgrößen unterstützen, die über das festgelegte Ziel hinausgehen Bildschirmgröße. Bei Einzelaufnahmen würde der mögliche Bereich jedes APK folgendermaßen aussehen:

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 weiterhin vom Nutzer bei Google Play heruntergeladen werden, Aber trotz des Fehlers bei der Frontkamera gab es ein APK, das genau diesen Bildschirm unterstützt. Größe.

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“ immer standardmäßig auf „true“ gesetzt sind), wird in den Manifesten explizit der Wert für für jede Bildschirmgröße an. Dies kann Ihnen später Kopfzerbrechen ersparen. Beispiel: Ein Manifest mit einem Ziel-SDK von < Bei 9 wird xlarge automatisch auf „false“ gesetzt, da diese Größe noch nicht vorhanden war. Seien Sie also ausdrücklich!

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 überprüfen, bevor Sie es auf den Markt bringen, um sicherzustellen, dass 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 und ist auch ein sehr praktisches Tool zur Überprü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 Überprü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 android.hardware.touchscreen-Anforderung wird ebenfalls implizit hinzugefügt. Wenn du möchtest, dass dein APK auf Fernsehern ohne Touchscreen angezeigt wird, solltest du deinem Manifest Folgendes hinzufügen:

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

Nachdem Sie die Schritte der Checkliste vor der Veröffentlichung abgeschlossen haben, laden Sie Ihre APKs bei Google Play hoch. Es kann etwas dauern, bis die App in Google Play angezeigt wird. nur noch eine letzte Prüfung. 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 findest du unter Unterstützung mehrerer APK-Dateien.