Bedingte Zustellung konfigurieren

Mit der bedingten Auslieferung können Sie bestimmte Anforderungen an die Gerätekonfiguration festlegen für Funktionsmodule, die während der App-Installation automatisch heruntergeladen werden. Sie können beispielsweise ein Funktionsmodul konfigurieren, das Folgendes enthält: Augmented Reality (AR) können bei der App-Installation die AR unterstützen.

Mit diesem Übermittlungsmechanismus kann derzeit der Download eines Modul bei der App-Installation basierend auf den folgenden Gerätekonfigurationen:

Wenn ein Gerät nicht alle angegebenen Anforderungen erfüllt, ist das Modul nicht bei der App-Installation heruntergeladen werden. Ihre App kann jedoch später anfordern, das Modul on demand über Play Core herunterladen SDK.

Stellen Sie zunächst sicher, dass Sie Android Studio 3.5 oder höher verwenden. Die In den folgenden Abschnitten erfahren Sie, wie Sie die bedingte Auslieferung Funktionsmodule.

Neues Modul mit Optionen für die bedingte Auslieferung hinzufügen

Die einfachste Möglichkeit, ein neues Funktionsmodul mit bedingter Auslieferung zu erstellen über den Assistenten Neues Modul:

  1. Um das Dialogfeld New Module zu öffnen, wählen Sie File > Neu > Neues Modul von in der Menüleiste.
  2. Wählen Sie im Dialogfeld „Neues Modul“ die Option Modul für dynamische Funktionen aus und klicken Sie auf Weiter.
  3. Konfigurieren Sie das Modul wie gewohnt und klicken Sie auf Weiter.
  4. Führen Sie im Abschnitt Module Download Options (Optionen für den Moduldownload) folgende Schritte aus:

    1. Geben Sie den Modultitel mit bis zu 50 Zeichen an. Die Plattform verwendet diesen Titel, um das Modul für Nutzer zu identifizieren, z. B. in folgenden Fällen: um zu bestätigen, dass der Nutzer das Modul herunterladen möchte. In diesem Fall muss das Basismodul deiner App den Modultitel als String-Ressource, den Sie übersetzen kann. Beim Erstellen des Moduls mit Android Studio fügt die Zeichenfolgenressource für Sie zum Basismodul hinzu und fügt die Zeichenfolge folgenden Eintrag im Manifest des Funktionsmoduls:

      <dist:module
          ...
          dist:title="@string/feature_title">
      </dist:module>
      
    2. Wählen Sie im Drop-down-Menü unter Aufnahme bei der Installation die Option Nur Modul bei App-Installation für Geräte mit bestimmten Funktionen einschließen, die wird ein Modul erstellt, das nur bei der App-Installation Geräte mit bestimmten Konfigurationen, die Sie angeben können, z. B. Geräte Funktionen oder Land. Android Studio fügt Folgendes in die Manifest, das Ihre Auswahl widerspiegelt:

      <dist:module ... >
        <dist:delivery>
            <dist:install-time>
                <dist:conditions>
                    <!-- If you specify conditions, as described in the steps
                         below, the IDE includes them here. -->
                </dist:conditions>
            </dist:install-time>
        </dist:delivery>
      </dist:module>
      
    3. Wenn Sie den automatischen Download des Moduls auf bestimmte Länder oder mindestens API-Level haben, klicken Sie auf Fertigstellen, um die Erstellung des Moduls abzuschließen. finden Sie im Abschnitt Bedingungen je nach Land angeben oder Mindest-API-Level. Klicken Sie andernfalls auf + Gerätefunktion, um eine Funktion hinzuzufügen, die ein Gerät um das Modul bei der Installation herunterzuladen.

    4. Wählen Sie neben device-feature eine der folgenden Optionen aus der Dropdown-Menü und geben Sie seinen Wert an:

      • Name:Hier können Sie Hardware oder Software angeben. eine Funktion, die zum Herunterladen des Moduls unter Installationszeiten. Bei der bedingten Auslieferung werden folgende Funktionen unterstützt: entsprechen den FEATURE_*-Konstanten durch PackageManager Wenn Sie diese Option auswählen, beginnen Sie mit der Eingabe eines beliebigen Teils der z. B. „Bluetooth“ im Feld neben dem Drop-down-Menü, und wählen Sie einen der angezeigten Vorschläge aus.
      • OpenGL ES-Version:Hier können Sie eine Version von OpenGL ES angeben, die auf einem Gerät erforderlich sind, um das Modul bei der Installation herunterzuladen. Wenn Sie wählen Sie diese Option aus, beginnen Sie mit der Eingabe der Version, z. B. "0x00030001", das Feld neben dem Drop-down-Menü auf und wählen Sie einen der Vorschläge aus, angezeigt werden.
    5. Wenn Sie mehrere Bedingungen basierend auf den verfügbaren Gerätefunktionen hinzufügen möchten, Klicken Sie für jede Funktion, die Sie ändern möchten, auf + Gerätefunktion. angeben.

    6. Klicken Sie auf das Kästchen neben Fusing (Fühlen), wenn dieses Modul verfügbar sein soll. bis einschließlich Android 4.4 (API-Level 20) und in mit mehreren APKs. Sie können also das On-Demand-Verhalten für dieses Modul aktivieren. und das Zusammenführen deaktivieren, um sie bei Geräten, die den Unterteilte APKs herunterladen und installieren Android Studio schleust die folgen Sie im Manifest des Moduls entsprechend Ihrer Auswahl:

      <dist:module ...>
          <dist:fusing dist:include="true | false" />
      </dist:module>
      
  5. Wenn Sie mit der Konfiguration der Moduldownloadoptionen fertig sind, klicken Sie auf Fertigstellen.

Beachten Sie, dass das Android-Gradle-Plug-in lint aus Modulen mit dynamischen Funktionen. Fusseln vom wird das entsprechende Anwendungsmodul lint auf seinen Dynamic-Feature-Modulen ausführen. und geben Sie alle Probleme im Lint-Bericht der App an.

Einem vorhandenen Funktionsmodul Optionen für die bedingte Auslieferung hinzufügen

Sie können einer vorhandenen Funktion ganz einfach Optionen für die bedingte Auslieferung hinzufügen. über das Manifest des Moduls. Sie sollten sich jedoch zuerst über die Kompatibilität von Optionen für die bedingte Auslieferung mit anderen die Sie möglicherweise bereits aktiviert haben.

Migrieren Sie zuerst Ihr Manifest in die neue Version <dist:delivery>-Element. Das folgende Code-Snippet zeigt ein Beispiel für die Syntax:

<!-- This is the old syntax. -->
<dist:module
  dist:title="@string/feature_title" dist:onDemand="true">
  <dist:fusing dist:include="true"/>
</dist:module>

Die oben aufgeführten Auslieferungsoptionen sind jetzt wie folgt festgelegt.

<dist:module
  dist:title="@string/feature_title">
  <dist:delivery>
      <dist:on-demand/>
  </dist:delivery>
  <dist:fusing dist:include="true"/>
</dist:module>

Sie können dann Optionen für die bedingte Auslieferung auf Grundlage der Gerätefunktionen einschließen: folgt.

<dist:module
    dist:title="@string/feature_title">
    <dist:delivery>
      <dist:on-demand/>
      <dist:install-time>
        <dist:conditions>
          <!-- Requires that the device support AR to download the module at
          app install-time.  -->
          <dist:device-feature dist:name="android.hardware.camera.ar"/>
        </dist:conditions>
      </dist:install-time>
    </dist:delivery>
    <dist:fusing dist:include="true"/>
</dist:module>

In den folgenden Abschnitten werden weitere Optionen für die bedingte Auslieferung erläutert, z. B. nach Land oder Mindest-API-Level.

Kompatibilität mit anderen Moduldownloadoptionen

Da Funktionsmodule mehrere Optionen bieten, Funktion an das Gerät der Nutzenden geliefert wird, ist es wichtig zu verstehen, Optionen für die bedingte Auslieferung werden von anderen Einstellungen beeinflusst. In der folgenden Tabelle Fasst die Kompatibilität der bedingten Bereitstellung mit dem Download anderer Module zusammen Optionen.

Option zum Herunterladen des Moduls Kompatibilität mit bedingter Auslieferung
Wird zusammengeführt (<dist:fusing dist:include="true"/>) Wenn diese Option von einem Modul auf „true“ gesetzt wird, berücksichtigt Google Play die Optionen für die bedingte Auslieferung, die Sie beim Bereitstellen Ihrer App auf Geräten mit API-Level 19 oder niedriger angeben, nicht. Funktionsmodule, die das Zusammenführen ermöglichen, sind also bei Geräten mit API-Level 19 oder niedriger immer bei der Installation enthalten.
Instant-Version aktiviert (<dist:module dist:instant="true"/>) Optionen für die bedingte Bereitstellung werden für Funktionsmodule mit aktivierter Instant-Version nicht unterstützt.
On demand (<dist:on-demand/>) Wenn Sie Optionen für die bedingte Auslieferung angeben, ist das Modul standardmäßig auch on demand verfügbar.

Bedingungen basierend auf dem Land angeben

Bei der bedingten Auslieferung können Sie auch angeben, in welchen Ländern das Modul bei der App-Installation ausschließen (oder einschließen) Die Angabe dieser Bedingung kann beispielsweise nützlich sein, wenn Ihr Modul eine Zahlungsmethode implementiert, die in bestimmten Regionen nicht verfügbar ist.

In diesem Kontext wird das Land auf dem Gerät in der Regel durch die Rechnungsadresse, die im Google Play-Konto registriert ist

Nehmen Sie Folgendes in die Funktion auf, um Länder für Ihr Modul anzugeben: im Manifest des Moduls.

<dist:conditions>
   <!-- Set to "true" to specify countries to exclude from downloading
   this module at app install-time. By default, modules are available
   for download to all user countries. -->
  <dist:user-countries dist:exclude="true">
    <!-- Specifies the two-letter  CLDR country code for regions that should
    not download the module at app install-time. -->
    <dist:country dist:code="CN"/>
    <dist:country dist:code="HK"/>
  </dist:user-countries>
</dist:conditions>

Bedingungen für API-Ebene angeben

Die Angabe einer Bedingung basierend auf dem API-Level eines Geräts kann nützlich sein, wenn ein hängt von APIs ab, die nur in bestimmten Versionen der Android-Plattform.

Um eine Bedingung auf Grundlage eines minimalen oder maximalen API-Levels für Geräte festzulegen, fügen Sie den Parameter im Manifest deines Funktionsmoduls folgen.

<dist:conditions>
    <!-- Specifies the minimum API level that the device must satisfy
         in order to download your module at app install-time. The API level you
         specify must be greater or equal to the module's own minSdkVersion. -->
   <dist:min-sdk dist:value="21"/>
    <!-- Specifies the maximum API level that the device cannot exceed
         in order to download your module at app install-time. The API level you
         specify must be less than or equal to the module's own maxSdkVersion. -->
   <dist:max-sdk dist:value="24"/>
</dist:conditions>