So erstellen Sie eine Instant App-Funktion

Android-Instant-Apps sind eine leistungsstarke neue Möglichkeit, um Ihre App vor möglichst vielen Benutzern zu präsentieren. 

Nachdem Sie Ihrem Projekt Instant-App-Support hinzugefügt haben, müssen Benutzer Ihre App nicht einmal installiert haben, um auf deren Inhalt und Funktionen zugreifen zu können. Sie können ganze Bereiche Ihrer Anwendung nach Bedarf laden Tippen Sie auf eine URL. 

In dieser dreiteiligen Serie werde ich den gesamten Prozess des Hinzufügens von Sofort-App-Unterstützung zu Ihren Android-Projekten behandeln. Wenn Sie fertig sind, wissen Sie genau, wie Sie Android-Anwendungen erstellen, die für jeden Standort auffindbar und zugänglich sind das URLs unterstützt. 

Im ersten Beitrag haben wir uns angesehen, was Instant Apps sind und wie sie funktionieren. Außerdem haben wir untersucht, warum diese neue Funktion sowohl für Android-Entwickler als auch für Android-Benutzer eine so große Neuigkeit ist. Zuvor haben wir ein paar Verknüpfungen verwendet und ein Android-Projekt erstellt, das eine integrierte App-Unterstützung umfasst. Wir haben uns jedoch nicht darum gekümmert, wie Sie die Instant-App-Unterstützung für ein vorhandenes Projekt hinzufügen können. Daher konzentrieren wir uns darauf in diesem Beitrag. 

Ich werde Ihnen auch zeigen, wie Sie App-Links implementieren. Am Ende dieses Artikels haben Sie eine voll funktionsfähige Sofort-App erstellt, die Sie auf jedem kompatiblen Android-Gerät starten und testen können.

Laden Sie das Beispielprojekt herunter 

Um Instant-App-Unterstützung zu einem Projekt hinzuzufügen, müssen Sie normalerweise einige drastische Änderungen an der Struktur dieses Projekts vornehmen. 

Die Wahrscheinlichkeit, dass Sie mit einer neuen Funktion von experimentieren, ist Ihnen nicht besonders wichtig vollständig Die Struktur eines eigenen Android-Projekts ändern. Daher habe ich eine Beispiel-App bereitgestellt, die Sie von GitHub herunterladen können. In diesem Artikel arbeiten wir an der Aktualisierung dieses spezifischen Projekts, um die Instant-Apps-Funktion zu unterstützen. 

Laden Sie das MyLocation-Projekt von GitHub herunter und öffnen Sie es in Android Studio. Sie werden sehen, dass dies ein ziemlich einfaches Projekt ist, bestehend aus einer einzigen App Modul, das ein enthält Aktivität (MapsActivity). 

Sie können dieses Projekt zwar im aktuellen Status installieren und starten. Wenn MapsActivity jedoch echten Inhalt anzeigen soll, müssen Sie einen API-Schlüssel generieren und ihn diesem Projekt hinzufügen: 

  • Öffnen Sie das Projekt res / values ​​/ google_maps_api.xml Datei.
  • Generieren Sie Ihren Google Maps API-Schlüssel, indem Sie den Anweisungen in dieser Datei folgen.
  • Kopieren Sie den resultierenden Schlüssel in den google_maps_api.xml Datei:
Ihre_Schlüssel 

Wir werden dieses Projekt so aktualisieren, dass seine einzige Funktion (d. H. Die Anzeige des aktuellen Standorts des Benutzers auf einer Karte) in Form einer sofortigen App verfügbar ist. Um dies zu erreichen, führen wir die folgenden Schritte aus:  

  • Erstellen Sie ein Basis-Feature-Modul, das den gesamten Code und die Ressourcen enthält, die zur Bereitstellung dieser einzelnen Funktion erforderlich sind. 
  • Erstellen Sie ein Instant-App-Modul, das als Container für unsere Instant-App-APK dient. 
  • Mithilfe von App-Links können Sie diesem Basisfunktionsmodul eine bestimmte URL zuordnen.

Bevor wir beginnen, gibt es noch ein paar Dinge, die Sie beachten sollten:

  • Wir werden diesem Projekt bis zum nächsten Beitrag keine zusätzlichen Funktionsmodule hinzufügen. Wie Sie sehen werden, wenn Sie MyLocation testen, ist es durchaus möglich, einem Projekt sofortige App-Unterstützung hinzuzufügen, indem Sie ein Basis-Feature-Modul und ein Instant-App-Modul erstellen. Zusätzliche Feature-Module sind optional.
  • Da das MyLocation-Projekt nur aus einem einzigen Feature besteht, müssen wir den gesamten Code und alle Ressourcen in das Basis-Feature-Modul aufnehmen. Wir können diese Aufgabe erheblich vereinfachen, indem Sie das App-Modul dieses Projekts in das Basis-Feature-Modul umwandeln und dann ein neues Modul erstellen, das als Ersatz-App-Modul dient. Dies ist eine praktische Verknüpfung, die Sie möglicherweise verwenden können, wenn Sie Ihren eigenen Android-Projekten Instant-App-Funktionen hinzufügen. Wenn diese Verknüpfung jedoch für ein bestimmtes Projekt nicht möglich ist, müssen Sie ein neues Modul erstellen, das als Basisfunktionsmodul fungiert. Anschließend müssen Sie den gesamten relevanten Code und die entsprechenden Ressourcen in dieses neue Basisfunktionsmodul verschieben. 

Konvertieren Sie das App-Modul in ein Basis-Feature-Modul

Unsere erste Aufgabe besteht darin, das App-Modul von MyLocation in ein Basis-Feature-Modul umzuwandeln.

Wenn Sie mit mehreren Modulen arbeiten, ist es hilfreich, frühzeitig eine Namenskonvention festzulegen. In diesem Artikel füge ich den Typ jedes Moduls hinzu (-App, -Base, -instantapp, etc.) zum Namen des Moduls: 

  • Steuerung-Klicken Sie auf das App-Verzeichnis und wählen Sie Refactor> Umbenennen ...
  • In dem Modul umbenennen Fenster eingeben Mylocation-Base und klicken Sie dann auf OK
  • Öffnen Sie Ihren neu umbenannten Mylocation-Base Modul build.gradle Datei. Die erste Zeile zeigt, dass dieses Modul immer noch den Standard verwendet com.android.application Plugin; Alle Funktionsmodule müssen jedoch das verwenden com.android.feature Plugin, Sie müssen dies also ändern Plugin anwenden: 'com.android.feature'..
  • Machen Sie deutlich, dass dieses Modul das einzige Basis-Feature-Modul Ihres Projekts ist, indem Sie das Modul hinzufügen baseFeature true Attribut zum Android Codeblock. 
  • Jedes Projekt, das die Instant-App-Funktion unterstützt, besteht unweigerlich aus mehreren Modulen. Sie müssen jedoch nur die Projekt-Angaben machen applicationID einmal - und das ist im App-Modul. Um Konflikte und Verwirrung zu vermeiden, sollten Sie dieses Attribut aus dem Rest Ihres Projekts entfernen applicationID Attribut in der Mylocation-Base build.gradle Datei und löschen Sie es. 

Nachdem Sie alle diese Schritte ausgeführt haben, wird Ihre Mylocation-Base build.gradle Die Datei sollte ungefähr so ​​aussehen:

plugin anwenden: 'com.android.feature' android baseFeature true compileSdkVersion 25 buildToolsVersion "26.0.0" defaultConfig minSdkVersion 24 targetSdkVersion 25 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.runner.AndroidJUnitNun

Erstellen Sie Ihr Anwendungsmodul 

An diesem Punkt fehlt bei MyLocation ein Anwendungsmodul. Erstellen Sie daher einen Ersatz: 

  • Wählen Neu> Neues Modul… aus der Android Studio-Symbolleiste.
  • Wählen Sie im angezeigten Fenster Telefon und Tablet, und klicken Sie dann auf Nächster.
  • Bleiben wir bei der Namenskonvention und nennen wir dieses Modul Mylocation-App. Klicken Nächster
  • Dieses Modul sollte den Code und die Ressourcen enthalten, die Sie in Ihre installierbare Anwendung aufnehmen möchten. Klicken Sie jedoch auf, um die Dinge so einfach wie möglich zu halten Keine Aktivität hinzufügen, und klicken Sie dann auf Fertig.
  • Öffne dein Mylocation-App Manifest-Datei des Moduls. Wenn Sie an das Projekt denken, das wir im vorherigen Beitrag erstellt haben, werden Sie sich daran erinnern, dass das Manifest des App-Moduls ziemlich leer war, da der Inhalt aller anderen in diesem Projekt verstreuten Manifests mit dieser Datei zusammengeführt werden würde. Genau dies wird mit unserem MyLocation-Projekt geschehen. Um Konflikte während des Zusammenführungsprozesses zu vermeiden, sollten Sie das gesamte Manifest löschen Anwendung Block. 
  • Öffne das Mylocation-App Modul build.gradle Datei. Dieses Modul hängt von unserem ab Mylocation-Base Entfernen Sie den gesamten Code aus dem Abhängigkeiten blockieren und durch Folgendes ersetzen: 
Abhängigkeiten Implementierungsprojekt (': mylocation-base')
  • Entfernen Sie alle nicht verwendeten Dateien und Verzeichnisse aus Ihrem Anwendungsmodul, indem Sie zu Android Studio wechseln Projekt anzeigen und löschen src / androidTest Verzeichnis. Dann öffnen Sie die Main Verzeichnis und löschen Sie das Java, res und Prüfung Verzeichnisse. 

Wir haben alle Funktionen von MyLocation erfolgreich in ein gemeinsam nutzbares Basisfunktionsmodul umgewandelt. Da wir dazu einige drastische Änderungen an unserer Projektstruktur vornehmen mussten, sollten Sie prüfen, ob MyLocation weiterhin als installierbare App funktioniert:

  • Starten Sie das AVD (Android Virtual Device), das wir in Teil 1 erstellt haben, oder schließen Sie ein physisches Android-Gerät an, das mit der Instant-App-Funktion kompatibel ist. Zum Zeitpunkt des Schreibens ist dies auf die Modelle Nexus 5X, Nexus 6P, Pixel, Pixel XL beschränkt. oder ein Galaxy S7 mit Android 6.0 oder höher.
  • Wählen Run> Run… aus der Android Studio-Symbolleiste.
  • Wähle aus Mylocation-App Modul. 
  • Die MyLocation-App wird auf dem Bildschirm angezeigt. Wenn Sie einen Google Maps-API-Schlüssel für dieses Projekt erstellt haben, sollte er einige Google Maps-Inhalte anzeigen. 

Erstellen des Instant App-Moduls 

Das Instant-App-Modul erfüllt die einfache, aber wesentliche Aufgabe, als Container für alle Instant-App-APKs zu fungieren, die von Ihrem Projekt generiert werden. So erstellen Sie dieses Modul:

  • Wählen Datei> Neu> Neues Modul… aus der Android Studio-Symbolleiste.
  • Wählen Sie im folgenden Fenster Sofortige App und klicken Sie dann auf Nächster
  • Geben Sie diesem Modul den Namen MeineLocation-InstantApp und klicken Sie auf Fertig
  • Da dieses Instant-App-Modul nur für unser Basis-Feature-Modul vorhanden ist, müssen Sie es öffnen build.gradle Datei und deklarieren Mylocation-Base als abhängigkeit: 
plugin anwenden: 'com.android.instantapp' Abhängigkeiten Implementierungsprojekt (': mylocation-base')

App-Links zu Ihrem Projekt hinzufügen

Der Benutzer startet eine Sofort-App, indem er auf eine URL tippt, die einem Basis-Feature oder Feature-Modul zugeordnet ist. Diese URL kann sich an einer beliebigen Stelle befinden. Möglicherweise handelt es sich um eine URL, die ein Freund direkt per E-Mail oder Sofortnachricht gesendet hat. Vielleicht ist es eine URL, die sie in einem Tweet, einem Forum oder in einem Kommentarthread entdeckt haben, oder eine URL, die in ihren Google-Suchergebnissen angezeigt wird. 

Unabhängig davon, wo es angezeigt wird, erkennt Google Play, wenn der Benutzer auf diesen Link tippt, dass er mit einem Basis-Feature oder Feature-Modul verknüpft ist, und ruft den gesamten Code und die Ressourcen ab, die zum Ausführen dieses bestimmten Moduls auf dem Gerät des Benutzers erforderlich sind.

In diesem Abschnitt stellen wir diese Beziehung zwischen unserem Basisfunktionsmodul und einer URL mithilfe von App-Links her. Die Android-App-Links-Funktion wurde ursprünglich eingeführt, um Benutzern zu helfen, den App-Auswahldialog von Android zu umgehen, wenn versucht wurde, auf Inhalte zuzugreifen, die von einer auf ihrem Gerät bereits installierten App verarbeitet werden könnten. Wenn Sie beispielsweise auf einen Link zu einem YouTube-Video tippen, zeigt das System möglicherweise ein Dialogfeld an, in dem Sie gefragt werden, ob Sie diesen Link in der YouTube-App öffnen möchten.

Im Kontext von Instant-Apps können Sie mit App-Links die Einstiegspunktaktivität eines Funktionsmoduls einer bestimmten URL zuordnen. Wir haben den Einstiegspunkt Aktivitäten in Teil 1 untersucht, aber als Reprise ist dies die erste Aktivität, die der Benutzer sieht, wenn er Ihre Basisfunktion oder das "reguläre" Funktionsmodul startet. 

Wenn Sie einem realen Projekt Instant-App-Support hinzufügen, müssen Sie entscheiden, welche Aktivität die effektivste Einführung in Ihre Instant-App-Komponente ist, aber seitdem Mylocation-Base hat nur eine einzige Aktivität, diese Entscheidung wurde bereits für uns getroffen! 

Links zu digitalen Assets

In diesem Abschnitt werden wir die integrierte Version von Android Studio verwenden App-Links-Assistent zu assoziieren MapsActivity mit der URL www.example.com/maps, aber zunächst ein Disclaimer:

Das Hochladen einer Digital Asset Links-Datei in die Domäne, mit der Sie arbeiten (in diesem Fall www.example.com), ist a entscheidend Gehen Sie im App-Links-Prozess vor, da das System überprüft, ob Ihre App die Berechtigung hat, als Standardhandler für alle mit dieser Domäne verknüpften Links zu fungieren. 

Obwohl ich mich mit dem Generieren und Hochladen einer Digital Asset Links-Datei beschäftigen werde, können wir diesen Schritt nicht durchführen, da wir nicht die Domäne www.example.com besitzen. Seltsamerweise scheint es zum Zeitpunkt des Schreibens jedoch möglich zu sein, eine Instant-App-Komponente auf einem AVD-Gerät zu testen, selbst wenn Sie keinen Digital Asset Link in die zugehörige Domäne hochgeladen haben. Sie müssen lediglich die Laufzeit von Android Studio optimieren Aufbau. 

Wenn Sie leicht auf eine Domäne zugreifen können, in der Sie eine Digital Asset Links-Datei hosten können, würde ich empfehlen, die www.example.com-URLs durch echte URLs zu ersetzen und die resultierende Digital Asset Links-Datei auf Ihre Website hochzuladen. Selbst wenn Sie die URLs "www.example.com" verwenden, sollten Sie dennoch die Instant-App-Komponente von MyLocation testen können, indem Sie die Laufzeitkonfiguration optimieren.

Erstellen Sie die URL-Zuordnung

Android Studio 2.3 und höher wird mit einem integrierten App-Links-Assistenten geliefert, der das Hinzufügen von App-Links zu Ihrem Projekt viel einfacher macht: 

  • Wählen Extras> Assistent für Anwendungslinks aus der Android Studio-Symbolleiste. Der Assistent wird auf der rechten Seite des Android Studio-Fensters als neues Fenster geöffnet. 
  • Gib die Öffnen Sie den URL-Mapping-Editor Knopf ein Klick.
  • In dem URL-to-Activity-Zuordnungen Klicken Sie auf das kleine Fenster + Symbol. 
  • In dem Wirt Geben Sie in das Feld die Domäne ein, die Sie mit diesem Projekt verknüpfen möchten. Ich werde www.example.com verwenden. 

Im nächsten Schritt geben Sie die spezifische URL ein, die Sie in Ihrem Mapping verwenden möchten. Sie haben hier einige Möglichkeiten, also öffnen Sie die Pfad Dropdown und wählen Sie aus: 

  • Pfad. Sie sollten diese Option auswählen, wenn Sie Ihrer Einstiegspunktaktivität eine einzelne URL zuordnen möchten. Da will ich nur MapsActivity Um auf die URL www.example.com/maps zu antworten, wähle ich aus Pfad aus diesem Dropdown-Menü. Wir haben die Domain www.example.com bereits mit unserem Projekt verbunden. Daher müssen Sie nur den letzten Teil der URL eingeben (/ Karten) in das Begleittextfeld. 
  • pathPrefix. Mit dieser Option können Sie mit den URLs, die Ihre Einstiegspunktaktivität auslösen, ein wenig flexibler sein. Zum Beispiel, wenn Sie ausgewählt haben pathPrefix und dann www.example.com/maps in das zugehörige Textfeld eingegeben MapsActivity würde auf URLs wie www.example.com/maps/mylocation und www.example.com/maps/nearby antworten.
  • Pfadmuster. Ähnlich zu Pfad, Mit dieser Option können Sie die genaue URL angeben, die Ihre Einstiegspunktaktivität starten soll. Sie bietet jedoch auch etwas mehr Flexibilität, indem Sie Platzhalterzeichen im zugehörigen Textfeld verwenden können. 

Als nächstes müssen Sie auswählen MapsActivity als Einstiegspunkt Aktivität dieses Moduls:

  • Öffne das Aktivität Dropdown-Menü.
  • Wählen .MapsAktivität (Standort-Basis).
  • Klicken OK.

Der App Links Assistant aktualisiert Ihr Manifest auf hilfreiche Art und Weise mit dem gesamten erforderlichen Code MapsActivity in die Einstiegspunktaktivität dieses Moduls; Wenn Sie einen Blick auf Ihre Mylocation-Base Manifest des Moduls, dann wird folgender Code angezeigt: 

           

Als nächstes müssen wir es sagen MapsActivity wie man reagiert, wenn es über diese URL gestartet wird. Wieder kann der App Links Assistant Sie durch diesen Vorgang führen:

  • Zurück im App-Links-Assistenten geben Sie die Aktivität auswählen Knopf ein Klick. 
  • Wählen Sie die Aktivität aus, die Sie Ihrer URL zuordnen möchten. Dies ist in diesem Fall MapsActivity
  • Klicken Code eingeben, und der App-Links-Assistent fügt den folgenden Code in das ein MapsActivity
 Absicht appLinkIntent = getIntent (); String appLinkAction = appLinkIntent.getAction (); Uri appLinkData = appLinkIntent.getData (); 

Wenn Sie Instant-App-Unterstützung für Ihre eigenen realen Projekte hinzufügen möchten, möchten Sie diesen Code normalerweise erweitern, je nachdem, wie Ihre Activity reagieren soll, wenn sie als Instant-App gestartet wird, jedoch für die Zwecke unserer MyLocation-Projekt, diese wenigen Zeilen erledigen die Arbeit. 

Verknüpfen Sie Ihre App mit Ihrer Website

In diesem Abschnitt werde ich Ihnen zeigen, wie Sie eine Digital Asset Links-Datei erstellen und wie Sie diese auf Ihre Website hochladen können. Wenn Sie www.example.com als Ersatz für echte URLs verwenden, können Sie diesen Schritt nicht durchführen. Es ist jedoch immer noch wichtig zu wissen, wie Sie diese Datei erstellen und hochladen, wenn Sie dazu bereit sind. Fügen Sie Ihren eigenen Android-Projekten sofortige App-Unterstützung hinzu. 

Um diese Zuordnung zwischen Ihrer Domäne und Ihrer Anwendung zu erstellen, müssen Sie die folgenden Schritte ausführen: 

  • Klicken Sie im App-Links-Assistenten auf Öffnen Sie den Digital Asset Links File Generator Taste.
  • Geben Sie die Domäne ein, die Sie mit dieser App verknüpfen möchten, z. B. www.example.com.  
  • Geben Sie Ihre Anwendungs-ID ein.
  • Geben Sie die Signierungskonfiguration Ihrer App ein oder wählen Sie eine Schlüsselspeicherdatei aus. Während des Testens kann eine Debug-Konfiguration oder ein Keystore verwendet werden. Die generierte Digital Asset Links-Datei ist jedoch nicht mit der Release-Version Ihrer App kompatibel. Wenn Sie eine Digital Asset Links-Datei hochladen, die eine Debug-Konfiguration oder einen Keystore verwendet, müssen Sie vor der Veröffentlichung Ihrer App einen neuen Digital Asset Links generieren und hochladen, der den Freigabeschlüssel Ihrer App verwendet.
  • Drücke den Digital Asset Links-Datei erstellen Taste. 
  • Laden Sie die Digital Asset-Datei herunter, indem Sie auf klicken Datei speichern Taste. In den Canary-Builds von Android Studio 3.0 ist diese Schaltfläche manchmal außerhalb des Bildschirms positioniert. Daher müssen Sie möglicherweise die Größe Ihres Android Studio-Fensters ändern, um die Datei speichern Knopf aus dem Verstecken. Durch Klicken auf diese Schaltfläche wird ein Download durchgeführt assetlinks.json Datei auf Ihrem Computer. 
  • Sie müssen das hosten assetlinks.json Datei an der folgenden Adresse https: ///.well-known/assetlinks.json, Laden Sie also Ihr neu heruntergeladenes Dokument hoch assetlinks.json Datei zu diesem genau Standort. Beachten Sie auch, dass Android das überprüft assetlinks.json Datei über ein verschlüsseltes HTTPs-Protokoll. Sie müssen also sicherstellen, dass auf diese Datei über eine HTTPS-Verbindung zugegriffen werden kann.
  • Klicken Sie in Android Studio auf den App Link Assistant Verknüpfen und überprüfen Taste. Wenn Sie dieses Tutorial mit den Link-Links zu www.example.com verfolgen, sollte Android Studio melden, dass Sie jeden Schritt erfolgreich abgeschlossen haben, außer Hochladen der Digital Asset Links-Datei.

Testen Sie Ihre Instant App 

Jetzt können Sie endlich die Instant-App-Komponente von MyLocation testen!

Insbesondere möchten wir das testen, wenn ein Benutzer tut nicht Wenn MyLocation auf ihrem Gerät installiert ist, können Sie durch Tippen auf den Link www.example.com/maps auf das Modul mylocation-base zugreifen:

  • Starten Sie Ihre Instant App-kompatible AVD.
  • Stellen Sie sicher, dass die MyLocation-App nicht auf Ihrem AVD installiert ist, indem Sie den Launcher öffnen. Wenn Sie die MyLocation-App erkennen, deinstallieren Sie sie, indem Sie sie auf das Gerät ziehen Deinstallieren Symbol. 
  • Als Nächstes müssen Sie einige Änderungen an der Laufkonfiguration unseres Projekts vornehmen, insbesondere wenn Sie www.example.com/maps verwenden, um Ihr Mylocation-Base-Modul auszulösen. Beginnen Sie mit der Auswahl Ausführen> Konfigurationen bearbeiten… aus der Android Studio-Symbolleiste. 
  • Wählen MeineLocation-InstantApp aus dem linken Menü. 
  • Öffne das Starten Dropdown und setzen Sie es auf URL.
  • Löschen Sie die <> Text und ersetzen Sie ihn durch die URL, die Sie verwenden möchten, z. B. http://www.example.com/maps. Wenn Sie diese Laufkonfiguration auswählen, wird der Benutzer durch Tippen auf die Verknüpfung www.example.com/maps simuliert. 
  • Klicken Sich bewerben, gefolgt von OK
  • Wählen Run> Run… aus der Android Studio-Symbolleiste.
  • Wählen MeineLocation-InstantApp als Komponente, die Sie starten möchten. 
  • Wählen Sie Ihre Ziel-AVD aus und klicken Sie auf OK
  • Wenn Sie zum ersten Mal eine Instant-App auf diesem AVD ausführen, werden Sie vom Gerät aufgefordert, das Instant-App-Programm zu aktivieren. Lesen Sie den Haftungsausschluss. Wenn Sie fortfahren möchten, klicken Sie auf Ja, ich bin dabei.

Android Studio simuliert nun das Tippen auf den Link www.example.com/maps. Der AVD sollte darauf reagieren, indem er das Basisfunktionsmodul lädt. An diesem Punkt ist die MapsActivity erscheint auf dem Bildschirm, und Sie können genau so mit dem Gerät interagieren, als ob MyLocation auf diesem Gerät installiert wäre. 

Um zu überprüfen, ob MyLocation auf diesem Gerät wirklich nicht vorhanden ist, minimieren Sie die Option MapsActivity und öffnen Sie den Launcher von AVD. Die MyLocation-App sollte vollständig fehlen. Wenn Sie jedoch auf die AVDs klicken, wird die App nicht angezeigt Zurück Softkey, die MapsActivity ist auf diesem Gerät noch sichtbar und verfügbar. 

Sie können das MyLocation-Projekt, das mit vollständiger Instant-App-Unterstützung aktualisiert wurde, von GitHub herunterladen.

Fehlerbehebung

Instant-Apps sind immer noch eine sehr neue Funktion, daher ist es nicht ungewöhnlich, dass Fehlermeldungen, Fehler und andere merkwürdige Verhaltensweisen auftreten, insbesondere wenn Sie eine der Vorschau- oder Canary-Versionen von Android Studio 3.0 verwenden.

Das am häufigsten auftretende Problem ist das Auswählen Run> Run instantapp Über die Android Studio-Symbolleiste können Sie eine Antwort des AVD erhalten, indem Sie das Dialogfeld "App-Auswahl" anzeigen oder die URL in ihrem Standardbrowser öffnen. Wenn dies der Fall ist, bedeutet das, dass die AVD nicht richtig erkennt, dass Ihre URL einem Instant-App-Modul zugeordnet ist, und sie wie eine normale URL behandelt.

Unter der Annahme, dass Sie die Instant-App-Unterstützung korrekt implementiert haben, kann es sein, dass Ihr AVD möglicherweise die Zusammenarbeit verweigert: 

Ist Ihre AVD so eingerichtet, dass sofortige Apps zugelassen werden??

Abhängig von der von Ihnen erstellten AVD ist es möglich, dass Sie Ihre AVD explizit anweisen müssen, Instant Apps zu unterstützen:

  • Öffnen Sie die AVDs die Einstellungen App.
  • Wählen Google.
  • Blättern Sie zu Dienstleistungen Sektion.
  • Wenn Sie ein sehen Sofortige App Option, dann tippen Sie darauf.
  • Ziehen Sie den Schieberegler auf dem folgenden Bildschirm in die Auf Position. 
  • Wiederholen Sie den Vorgang des Startens Ihres Instant-App-Moduls auf Ihrem AVD, um festzustellen, ob das Problem dadurch behoben wurde.

Sind Instant-Apps in Ihrem Gebietsschema unterstützt??

Instant-Apps werden nicht in jedem Gebietsschema unterstützt. Prüfen Sie daher, ob Instant-Apps derzeit in Ihrem Teil der Welt verfügbar sind. Wenn dies nicht der Fall ist, müssen Sie die Befehle adb (Android Debug Bridge) verwenden, um Ihre AVD dazu zu bringen, dass Sie denken, Sie befinden sich an einem anderen Ort:  

  • Öffnen Sie das Terminal (wenn Sie ein Mac-Benutzer sind) oder eine Eingabeaufforderung, wenn Sie unter Windows arbeiten.
  • "Verzeichnis wechseln", sodass das Terminal oder die Eingabeaufforderung auf das Adb-Programm zeigt, das in Ihrem Android-SDK enthalten ist. Beispiel: 
CD / Benutzer / Jessicathornsby / Bibliothek / Android / SDK / Plattform-Tools
  • Geben Sie als Nächstes den folgenden Befehl ein:
ADB Shell
  • Einmal # erscheint im Terminal- oder Eingabeaufforderungsfenster, geben Sie den nächsten Befehl ein: 
setprop persist.sys.locale [ISO-Sprachcode plus Länder- / Regionscode]; Stopp; Schlaf 5; Start 
  • Ihr AVD wird jetzt neu gestartet. Nach dem Neustart werden die neuen Ländereinstellungen verwendet. Sie sollten jetzt in der Lage sein, Instant-Apps erfolgreich auf diesem Gerät auszuführen. 

Wenn alle Stricke reißen… .

Wenn keine der oben genannten Korrekturen funktioniert, erhalten Sie möglicherweise positive Ergebnisse, indem Sie die Instant-App-Komponente über einen Adb-Befehl auslösen, anstatt durch die verschiedenen Android Studio-Menüs zu navigieren: 

  • Öffnen Sie ein Terminal- oder Eingabeaufforderungsfenster.
  • Verwenden Sie die CD Befehl, damit die Terminal- / Eingabeaufforderung auf das Adb-Programm zeigt. 
  • Geben Sie den folgenden Befehl ein und ersetzen Sie ihn vollständiger URL-Pfad mit der URL, die Sie verwenden möchten:
./ adb-shell am start -a android.intent.action.VIEW -d vollständiger-url-pfad 

Sofortiges Laden der Seite ist fehlgeschlagen

Manchmal weigert sich Android Studio möglicherweise sogar, eine Instant-App-Komponente auf Ihrem AVD zu laden, da einige Entwickler berichtet haben, dass der folgende Fehler aufgetreten ist, wenn sie versuchen, eine Instant-App zu starten:

Das Laden der Sofort-App ist fehlgeschlagen: Das Lesen des Bundles ist abgelaufen.

Wenn diese Fehlermeldung in Android Studio auftritt, können Sie sie normalerweise beheben, indem Sie den Cache leeren: 

  • Wählen Ausführen> Konfigurationen bearbeiten… aus der Android Studio-Symbolleiste.
  • Wählen MeineLocation-InstantApp aus dem linken Menü.
  • Wählen Sofortige App-Bereitstellung (am unteren Rand dieses Fensters).
  • Klicken Sie auf das Bleistiftsymbol.
  • Wählen Löschen Sie den Cache für bereitgestellte Geräte.
  • Klicken OK, gefolgt von Sich bewerben, und dann schlagen OK einmal mehr. 
  • Versuchen Sie, Ihre Instant-App-Komponente auf Ihrem AVD neu zu starten. Das Problem sollte jetzt behoben sein. 

Fazit 

In diesem Artikel haben wir untersucht, wie Sie ein vorhandenes Android-Projekt für die Unterstützung von Instant-Apps aktualisieren können. Dazu erstellen Sie ein Basis-Feature-Modul und ein Instant-App-Modul, implementieren App Links und testen dieses Projekt auf einer AVD. 

An diesem Punkt haben Sie alle Informationen, die Sie benötigen, um Ihren bestehenden Android-Projekten sofortige App-Funktionalität hinzuzufügen, jedoch mit einer Einschränkung: Wir haben nur ein einziges Basisfunktionsmodul erstellt. Dies bedeutet, dass Sie derzeit nur eine Instant-App-Funktion pro Projekt anbieten können.

Im letzten Beitrag dieser Serie werden wir dies korrigieren, indem wir untersuchen, wie Sie dem MyLocation-Projekt ein zusätzliches Funktionsmodul hinzufügen. Das wird bald raus sein. Während Sie warten, lesen Sie einige unserer anderen großartigen Beiträge zur Android-App-Entwicklung!