Jedes Mal, wenn Sie eine Android-App veröffentlichen, haben Sie zumindest eine ungefähre Vorstellung davon, was diese App erreichen soll.
Diese Ziele könnten sehr spezifisch sein, z. B. im ersten Quartal eine bestimmte Menge an Werbeeinnahmen generieren, oder allgemeiner sein, z. B. eine hohe Bewertung bei Google Play.
Was auch immer auf Ihrer Wunschliste ist, Ihre App vor möglichst vielen Nutzern zu haben, ist immer irgendwo auf dieser Liste zu sein - und Android Instant Apps ist eine neue Funktion, die Ihnen dabei helfen kann.
Mit Instant Apps haben Sie eine völlig neue Möglichkeit, Benutzer zu erreichen, die Ihre App derzeit nicht auf ihrem Gerät installiert haben, indem Sie Ihre App an jedem Ort, der URLs unterstützt, einschließlich E-Mails, Google-Suchergebnissen und Posts in sozialen Medien, auffindbar und zugänglich machen Plattformen, YouTube-Kommentare und Foren.
Im Wesentlichen können Sie mit Instant Apps alle Funktionen Ihrer App in einem eigenständigen Modul aufteilen. Benutzer können dann jedes dieser Instant-App-Module bei Bedarf laden, indem Sie auf eine URL tippen, die Sie diesem bestimmten Modul zugeordnet haben, und ohne Sie müssen Ihre App jederzeit installieren.
In dieser dreiteiligen Serie werde ich Ihnen zeigen, wie Sie Instant-App-Unterstützung für Ihre Android-Projekte hinzufügen. Am Ende dieser Serie haben Sie eine Anwendung erstellt, die aus zwei separaten Instant App-Funktionsmodulen besteht, die Sie auf jedem kompatiblen Android-Gerät starten und testen können.
In diesem ersten Beitrag konzentriere ich mich darauf, was Instant Apps sind, wie sie funktionieren und warum Sie sich für sie interessieren sollten. Damit Sie Instant Apps aus erster Hand erfahren können, verwenden wir den Projekterstellungs-Assistenten von Android Studio, um eine App zu generieren, die mit Instant App-Unterstützung vorkonfiguriert ist. So können Sie stattdessen alle verschiedenen Instant App-Komponenten sehen als einfach über sie zu lesen.
Die Erstellung einer App, die mit Instant App-Unterstützung vorkonfiguriert ist, ist zwar die schnellste und einfachste Methode, um diese Funktion zu verwenden. In Wirklichkeit können Sie Instant App-Unterstützung jedoch für ein vorhandenes Projekt mit größerer Wahrscheinlichkeit hinzufügen. In Teil zwei zeige ich Sie wie genau das zu tun. Ich werde Ihnen eine App zur Verfügung stellen, die Sie von GitHub herunterladen können, und Sie dann Schritt für Schritt durch die Neukonfiguration dieses Projekts zur Unterstützung von Instant Apps führen.
Der letzte Teil des Puzzles ist das Erstellen einer Instant-App mit mehreren Funktionen. In Teil drei zeige ich Ihnen, wie Sie ein zweites Funktionsmodul zu Ihrer Anwendung hinzufügen und wie Sie Android-App-Links verwenden, um dieses Modul einer anderen URL zuzuordnen.
Eine der besten Möglichkeiten, Instant Apps zu beschreiben, ist ein Beispiel dafür, wann Sie sie verwenden könnten.
Stellen Sie sich vor, ein Freund hat Ihnen einen Link zu einem Katzenvideo geschickt, das er Ihnen versprochen hat Liebe, Wenn Sie jedoch auf den Link tippen, wird klar, dass Sie eine App herunterladen müssen, bevor Sie dieses Video ansehen können.
Unabhängig davon, ob Sie die App herunterladen oder den Link ignorieren und das beste Katzenvideo verpassen, das das Internet zu bieten hat, ist dies eine schlechte Benutzererfahrung - und dieses Szenario ist vielen Android-Benutzern bekannt.
Die meisten von uns hatten die Erfahrung, eine App zu installieren, um eine einmalige Aufgabe zu erledigen. Sie können beispielsweise eine App herunterladen, um einen E-Mail-Anhang anzuzeigen, den Sie von jemandem gesendet haben, um einen Kauf auf einer bestimmten Website abzuschließen oder um ein Paket zu verfolgen, das derzeit an Ihre Adresse gelangt.
Stellen wir uns nun unser Katzenvideoszenario wieder vor. Diesmal hat der Anwendungsentwickler jedoch den gesamten Code und die zum Abspielen von Videoinhalten erforderlichen Ressourcen in ein eigenes Instant-App-Funktionsmodul eingefügt und dieses Modul der URL www.example.com/video zugeordnet. Wenn Sie diesmal auf www.example.com/video/cat-video tippen, erkennt Google Play, dass diese URL einem Sofort-App-Modul zugeordnet ist, und ruft den gesamten Code und die Ressourcen ab, die Sie zum Abspielen dieses Videos benötigen. Das Endergebnis? Sie können 20 Sekunden lang eine Katze spielen, die in einer Box spielt, ohne etwas installieren zu müssen viel bessere Benutzererfahrung.
Wie Sie im nächsten Beitrag dieser Serie sehen werden, kann das Hinzufügen von Instant App-Unterstützung zu einem vorhandenen Projekt ein schwieriger Prozess sein, der häufig dazu führt, dass Sie die Struktur Ihrer Anwendung vollständig ändern müssen.
Da die Umstrukturierung eines Projekts keine Entscheidung ist, die Sie jemals leichtfertig treffen sollten, werde ich Ihnen in diesem Abschnitt helfen zu entscheiden, ob sich all die Zeit und Mühe wirklich lohnen, indem Sie alle wichtigen Vorteile der Instant-App-Unterstützung in Ihr Projekt einbeziehen Projekte:
Bevor wir unsere Instant-App-Reise beginnen, ist es erwähnenswert, dass es derzeit einige Dinge gibt, die Instant-Apps sind kann nicht tun:
Darüber hinaus muss Ihre Bewerbung:
Wenn Ihre App Teil des Programms "Für Familien" ist, können Sie sie nicht als Sofort-App anbieten.
Bevor Sie Ihr erstes Projekt mit sofortiger App-Unterstützung erstellen können, muss Folgendes oder eine höhere Version installiert sein:
Sie sollten auch sicherstellen, dass Sie über die neuesten Versionen der Android Support Library und des Android Repository verfügen. Öffnen Sie daher den SDK-Manager von Android Studio, und installieren Sie alle verfügbaren Updates.
Nachdem Sie alle oben genannten Komponenten installiert haben, können Sie das Instant Apps Development SDK herunterladen:
Derzeit können Sie nur Instant-Apps auf einem Nexus 5X, Nexus 6P, Pixel, Pixel XL oder einem Galaxy S7 mit Android 6.0 oder höher testen. Wenn Sie jedoch keines dieser Geräte besitzen, können Sie ein Android Virtual Device (AVD) erstellen, das eines dieser Geräte emuliert, unter bestimmten Voraussetzungen: Der AVD muss ein x86-Image verwenden und die Google-APIs enthalten.
Da ich keines dieser Geräte besitze, werde ich eine AVD erstellen, die ein Pixel emuliert:
Zum Schluss müssen Sie sich bei einem Google-Konto in Ihrer AVD anmelden:
In Android Studio 3.0 Preview 1 und höher ist das Erstellen eines Projekts mit integrierter Instant App-Unterstützung so einfach wie das Auswählen eines Kontrollkästchens. Daher müssen wir nicht nur die Instant App-Funktionen beschreiben, sondern ein Instant App-Projekt erstellen und anschließend aufwenden Der Rest dieses Artikels vermittelt erste Erfahrungen mit den verschiedenen Komponenten.
Beachten Sie, dass dieses Projekt keine App-Links enthält. Daher können Sie die Instant-App-Komponenten nicht auf Ihrem AVD-Gerät testen. Dies wird in Teil 2 ausführlich erläutert..
So erstellen Sie Ihr Projekt:
Sofort sehen wir, dass dieses Projekt sehr anders strukturiert ist als Ihr typisches Android-Projekt und aus folgenden Modulen besteht:
Mit Ausnahme des Feature-Moduls jedes Projekt, das Instant-Apps unterstützt Muss haben alle oben genannten Module, also lassen Sie uns jedes dieser Module im Detail untersuchen.
Das Konzept eines Anwendungsmoduls ist möglicherweise nichts Neues, aber wenn Ihr Projekt Instant-Apps unterstützt, wirkt das Manifest des Anwendungsmoduls viel leerer als Sie es wahrscheinlich gewohnt sind:
Es gibt einen Grund, warum diese Datei so leer ist: Wenn Sie Ihr Projekt erstellen, wird der Inhalt aller anderen Manifest-Dateien in Ihrem Ordner gespeichert Basisfunktion und Merkmal Module werden mit dieser Datei zusammengeführt - so bleibt es nicht für immer leer!
Wenn Sie dieses Modul öffnen build.gradle Datei, dann werden Sie zwei neue Elemente bemerken:
Abhängigkeiten Implementierungsprojekt (': Feature') Implementierungsprojekt (': Basis')
Hier erklären wir, dass unser Anwendungsmodul eine Abhängigkeit von der hat Merkmal
Modul und Base
Modul.
Wenn Sie einem Projekt Instant App-Unterstützung hinzufügen, trennen Sie zugehörigen Code und Ressourcen in Funktionsmodule, die unabhängig von der installierbaren Anwendung funktionieren können. Diese Module sind jedoch immer noch Teil Ihrer installierbaren App und keine separaten Entitäten, weshalb unser Anwendungsmodul die Funktions- und Basismodule als Abhängigkeiten deklariert.
Jedes Instant-App-Projekt muss ein einziges Basisfunktionsmodul enthalten, das den Code und die Ressourcen enthält, die in allen Modulen Ihrer Anwendung verwendet werden. Zum Beispiel, wenn Sie unser Projekt öffnen base / res / mipmap Ordner, dann werden alle Startsymbole der Anwendung angezeigt, die eindeutig für mehrere Module verwendet werden.
Da es allgemeinen Code und Ressourcen enthält, alles Die Funktionsmodule Ihres Projekts hängen von diesem einzelnen Basis-Funktionsmodul ab.
In Fortsetzung dieses Themas enthält das Basis-Feature-Modul die Manifest-Einträge, die im gesamten Projekt verwendet werden. Zum Beispiel Ihr Projekt base / src / main / AndroidManifest.xml Datei enthält die Einstellungen für das Symbol, das Design und das Label Ihrer Anwendung:
Das andere bemerkenswerte Element ist das Basismodul build.gradle Datei, die einige neue Attribute enthält:
// Alle Basis-Feature- und "regulären" Feature-Module verwenden das Plugin com.android.feature anstelle des Plugins com.android.application. // plugin anwenden: 'com.android.feature' android compileSdkVersion 26 buildToolsVersion "26.0.0 "// Geben Sie an, dass dies die einzige Basisfunktion des Projekts ist. Verwenden Sie dazu den Ausdruck 'baseFeature true' // baseFeature true……… dependencies // Verwenden Sie 'application project', um eine Abhängigkeit vom Basis-Feature-Modul zu Ihrem Modul hinzuzufügen Installierbares 'app'-Modul des Projekts // Anwendungsprojekt (': app ') // Verwenden Sie' Feature-Projekt ', um auf das Feature-Modul des Projekts zu verweisen, das passend als' Feature '// Feature-Projekt (': Feature ') bezeichnet wird.
Sie werden auch feststellen, dass dies besonders build.gradle Datei fehlt ein applicationID
Attribut und (Spoiler-Alarm) finden Sie genau das Gleiche, wenn wir unsere Funktionsmodule untersuchen build.gradle Datei. Unsere Projekte applicationID
wird im Anwendungsmodul deklariert build.gradle Datei nur.
Das Anwendungsprojekt (
:
app)
Linie in unserem Basismodul build.gradle Datei (siehe oben) stellt sicher, dass das Projekt einheitlich ist applicationID
Das Attribut wird über den gesamten Server verteilt alles unserer build.gradle Dateien, weshalb dieses Attribut im Rest unseres Projekts fehlt.
Wenn Sie schließlich zu einem vorhandenen Projekt Instant App-Unterstützung hinzufügen, wird Ihre größte Aufgabe darin bestehen, alle Funktionen Ihrer Anwendung in ein eigenes Funktionsmodul zu extrahieren, da jedes Funktionsmodul den Code und die Ressourcen enthält, die zur Bereitstellung dieser Funktion erforderlich sind nur.
Wenn Sie unser Projekt öffnen Merkmal Modul, dann werden Sie sehen, dass es die enthält Hauptaktivität
Klasse plus activity_main und content_main Ressourcendateien - im Wesentlichen alle Komponenten, die im enthalten sind Grundlegende Tätigkeit Vorlage.
Ein einzelnes Funktionsmodul kann aus mehreren Aktivitäten bestehen, aber jedes Modul muss mindestens eine Aktivität enthalten, die als Einstiegspunktaktivität dieses Moduls festgelegt ist.
Jede Einstiegspunktaktivität wird einer bestimmten URL zugeordnet. Wenn der Benutzer auf diese URL tippt, lädt er die zugeordnete Aktivität, und der Benutzer hat Zugriff auf dieses bestimmte Funktionsmodul.
Sie legen die Einstiegspunktaktivität eines Moduls über das Manifest dieses Moduls fest. Im Wesentlichen müssen Sie diese Datei öffnen und der Aktivität, die Sie als Einstiegspunkt verwenden möchten, Folgendes hinzufügen:
CATEGORY_LAUNCHER
und ACTION_MAIN
beabsichtigt.
Dieses Element enthält alle Informationen zu der URL, die Sie dieser Einstiegspunktaktivität zuordnen möchten. android: autoVerify
Attribut. Dadurch wird das System angewiesen, zu überprüfen, ob Ihre App die Berechtigung hat, als Standardhandler für diese bestimmte URL zu fungieren. Dies ist ein wichtiger Sicherheitsmechanismus, mit dem Website-Besitzer vor schädlichen Apps geschützt werden können, die versuchen, ihre URLs zu entführen.Wenn Sie die Manifestdatei unseres Funktionsmoduls öffnen, werden Sie feststellen, dass der gesamte Code bereits zu unserem Code hinzugefügt wurde Hauptaktivität
Erklärung:
Die letzte Datei, die wir in diesem Modul betrachten werden, ist die build.gradle Datei, die einige Zeilen mit bemerkenswertem Code enthält:
// Auch hier verwenden wir das com.android.feature-Plugin anstelle von com.android.application // das plugin anwenden: 'com.android.feature' android // Wie bereits erwähnt, fehlt in diesem Abschnitt eine 'applicationID'. Attribut //……… Abhängigkeiten ImplementierungsdateiBaum (Verzeichnis: 'libs', include: ['* .jar']) androidTestImplementation ('com.android.support.test.espresso: espresso-core: 2.2.2', Gruppe ausschließen: 'com.android.support', Modul: 'support-annotations') // Alle Feature-Module hängen vom Basis-Feature-Modul ab, das wir hier deklarieren // Implementierungsprojekt (': base') testImplementation 'junit: junit: 4.12'
Da alle Funktionsmodule vom Basis-Funktionsmodul abhängen, fordert der Benutzer das erste Mal an irgendein Feature aus Ihrer Anwendung erhalten sie das Basis-Feature-Modul Plus das Feature-Modul, auf das sie tatsächlich zugreifen möchten.
Beachten Sie, dass dieses bestimmte Projekt zwar aus einem Basis-Feature-Modul besteht und Ein Feature-Modul: Wenn Ihre App nur ein Feature enthält, das Sie als Instant App zur Verfügung stellen möchten, können Sie ein Projekt erstellen, das aus einem Basis-Feature-Modul besteht nur. In dieser Serie werden beide "Typen" von Instant App-Projekten untersucht.
Das Instant App-Modul hat einen einfachen Zweck: Es dient als Container, der alle Ihre Funktionsmodule in Instant App-APKs umwandelt.
Wenn Sie das Instant App-Modul dieses Projekts öffnen, werden Sie sehen, dass es abgesehen von a ziemlich leer ist build.gradle Datei, die einfach Ihr Basis-Feature-Modul und Ihr Feature-Modul als Abhängigkeiten deklariert:
plugin anwenden: 'com.android.instantapp' Abhängigkeiten Implementierungsprojekt (': feature') Implementierungsprojekt (': base')
Da dieses Projekt keine App-Links enthält, können wir die Instant-App-Komponenten nicht testen. Dieses Projekt kann jedoch weiterhin als installierbare App ausgeführt werden. Dies erscheint nicht besonders aufregend, aber unter Berücksichtigung der Tatsache, dass der Großteil des Codes und der Ressourcen unseres Projekts im Instant-App-Funktionsmodul enthalten ist, ist es wichtig zu testen, wie unser Projekt als installierbare Anwendung funktioniert.
Starten Sie die zuvor erstellte AVD oder verbinden Sie ein kompatibles physisches Android-Smartphone oder -Tablet mit Ihrem Entwicklungscomputer, und wählen Sie dann aus Ausführen> Ausführen…> App aus der Android Studio-Symbolleiste.
Trotz der Tatsache, dass alle unsere Hauptaktivität
Code befindet sich im Feature-Modul. Sobald unsere App geladen wird, sehen Sie die Hauptaktivität
Floating-Aktionstaste (FAB) und Hallo Welt Botschaft. Was wir hier sehen, ist, dass unser Anwendungsmodul Code und Ressourcen, die sich in separaten Instant App-Funktions- und Basis-Funktionsmodulen befinden, zu einer installierbaren App zusammenfasst.
In diesem Lernprogramm haben wir uns ausführlich mit der Funktionsweise von Instant Apps beschäftigt und die verschiedenen Gründe ausgemacht, aus denen Sie vielleicht Instant-App-Unterstützung für Ihre Android-Projekte hinzufügen möchten.
In einer idealen Welt würde Ihre Entscheidung, Instant Apps zu erkunden, perfekt mit dem Start eines neuen Android-Projekts zusammenfallen, aber ein Entwickler zu sein, ist leider selten so bequem! Es ist viel wahrscheinlicher, dass Sie ein vorhandenes Projekt neu konfigurieren müssen, um Instant Apps zu unterstützen. Dies ist jedoch nicht der Fall ziemlich So einfach wie die Auswahl eines Kontrollkästchens im Projekterstellungs-Assistenten von Android Studio!
Im nächsten Beitrag werden wir ausführlich untersuchen, wie Sie einem bestehenden Projekt sofortige App-Unterstützung hinzufügen. Ich zeige Ihnen auch, wie Sie App-Links implementieren. Am Ende des nächsten Beitrags haben Sie eine voll funktionsfähige Instant-App erstellt, die Sie auf jedem kompatiblen AVD- oder Android-Gerät starten und testen können.
.