Mehrere APKs für verschiedene GL-Texturen 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, Es ist 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 erstellst, eine andere Untergruppe von OpenGL-Texturformaten. 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 Anwendung zu erstellen, die mit allen verfügbaren Ihre Anwendung sollte auf jedem Gerät optimal dargestellt werden, unabhängig davon, dass nicht alle denselben Satz an GL-Texturen unterstützen. Es mag anfangs so wirken, als ob Die Unterstützung mehrerer APK-Dateien ist die beste Lösung, aber das ist oft nicht der Fall. Die Verwendung eines einzelnen APK Stattdessen des Entwicklerhandbuchs für mehrere APKs finden Sie nützliche Informationen dazu, wie Sie dies mit einem einzigen APK erreichen und dabei die Ermittlung unterstützter Texturen Formate zur Laufzeit. Je nach Situation ist es möglicherweise einfacher, alle Formate mit Ihre Anwendung und wählen Sie einfach aus, welche Version zur Laufzeit verwendet werden soll.

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

Das Android-Entwicklerhandbuch bietet eine praktische Referenz für einige häufig unterstützte Texturen auf die supports-gl-texture . Diese Seite enthält auch einige Hinweise dazu, welche Telefone (oder Telefonfamilien) unterstützt werden. bestimmte Texturformate. Im Allgemeinen empfiehlt es sich, eine Ihrer APKs zu unterstützen, ETC1, da dieses Texturformat von allen Android-Geräten unterstützt wird, die OpenGL ES unterstützen. 2.0-Spezifikation

Da die meisten Android-Geräte mehr als ein Texturformat unterstützen, müssen Sie ein Präferenzreihenfolge. Diagramm mit allen Formaten erstellen, für die Ihre App verwendet wird Support. Die Zelle ganz links hat die niedrigste Priorität (wahrscheinlich ETC1, soliden Standard in puncto Leistung und Kompatibilität). Setzen Sie dann die Farbe des Diagramms ein, Zelle steht für ein APK.

ETC1 Logo: ATI PowerVR

Durch die Farbgebung der Diagramme wird diese Anleitung nicht nur weniger monochromatisch dargestellt. Sie bietet auch die Möglichkeit, Einfachere Kommunikation innerhalb des Teams: Die einzelnen APKs können nun einfach als „blau“, „grün“ oder „Rot“ statt „Diejenige, die ETC1-Texturformate unterstützt“ usw.

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 einiger einfacher Regeln ausgewählt:

  • Das Manifest muss anzeigen, dass ein bestimmtes APK zulässig ist
  • Von den zulässigen APKs gewinnt die höchste Versionsnummer.
  • Wenn eines der in Ihrem APK aufgeführten Texturformate von dem Gerät auf dem Markt unterstützt wird, dieses Gerät als berechtigt angesehen

In Bezug auf GL-Texturen ist diese letzte Regel wichtig. Es bedeutet, dass Sie zum Beispiel sollten Sie bei der Verwendung verschiedener GL-Formate in derselben Anwendung sehr vorsichtig sein. Wenn Sie in 99% der Fälle PowerVR verwendet, aber beispielsweise ETC1 für den Ladebildschirm verwendet werden. Dann ist Ihr Manifest bedeutet das zwangsläufig, dass beide Formate unterstützt werden. Ein Gerät, das nur ETC1 unterstützt hat als kompatibel gilt, wird deine App heruntergeladen und der Nutzer würde einen spannenden Absturz sehen. Nachrichten. Wenn Sie mehrere APKs speziell für die Ausrichtung von je nach GL-Texturunterstützung auf verschiedenen Geräten, ist es ein Texturformat pro APK.

Dadurch unterscheidet sich die Texturunterstützung ein wenig von der der anderen beiden APKs. Abmessungen, API-Level und Bildschirmgröße. Jedes Gerät hat nur eine API-Ebene und einen Bildschirm und es hängt vom APK ab, ob eine Reihe davon unterstützt wird. Bei Texturen wird das APK in der Regel unterstützen eine Textur und das Gerät unterstützt mehrere. Häufig gibt es Überschneidungen Gerät, das viele APKs unterstützt, aber die Lösung ist dieselbe: Versionscodes.

Sehen wir uns zum Beispiel bei einigen Geräten an, wie viele der zuvor definierten APKs zu jedem passen. .

FooPhone Nexus S Logo: Evo
ETC1 ETC1 ETC1
PowerVR ATI TC

Wenn sowohl das PowerVR- als auch das ATI-Format gegenüber ETC1 bevorzugt werden, sofern verfügbar, „Höchste Versionsnummer gewinnt“ wenn wir das Attribut „versionCode“ in jedem APK dass Rot ≥ Grün ≥ Blau ist, dann werden Rot und Grün immer gegenüber Blau ausgewählt. Geräte, die diese unterstützen, und falls jemals ein Gerät erhältlich ist, das sowohl Rot als auch Grün unterstützt, ausgewählt.

Wenn Sie alle Ihre APKs in separaten Tracks behalten möchten, ist es wichtig, einen guten Versionscode . Den empfohlenen Code finden Sie im Bereich mit den Versionscodes in unserem Entwicklerhandbuch. Seit die Beispiel-APKs nur eine von drei möglichen Dimensionen betreffen. Es wäre ausreichend, die einzelnen APKs durch 1.000 trennen und von dort inkrementieren. Dies könnte etwa 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-gl-texture android:name="GL_OES_compressed_ETC1_RGB8_texture" />
    ...

Grün:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    android:versionCode="2001" android:versionName="1.0" package="com.example.foo">
    <supports-gl-texture android:name="GL_AMD_compressed_ATC_texture" />
    ...

Rot:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    android:versionCode="3001" android:versionName="1.0" package="com.example.foo">
    <supports-gl-texture android:name="GL_IMG_texture_compression_pvrtc" />
    ...

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
  • Überprüfe deine Manifestfilter auf widersprüchliche Informationen (ein APK, das nur wird der Cupcake auf XLARGE-Bildschirmen nicht von niemandem gesehen werden.)
  • Jedes APK-Manifest muss für mindestens einen unterstützten Bildschirm, eine 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 hinzufügst:

<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 beim Surfen in Google Play angezeigt wird. Wenn dies der Fall ist, müssen Sie jedoch noch eine letzte Prüfung durchführen. Laden Sie die App auf alle Testgeräte herunter, die Sie möglicherweise haben, um sicherzustellen, dass die APKs auf die gewünschten Geräte ausgerichtet sind. Herzlichen Glückwunsch, Sie haben es geschafft!