Google Play-Lizenzierung ist ein netzwerkbasierter Dienst, mit dem eine Anwendung einen vertrauenswürdigen Google Play-Lizenzierungsserver abfragen kann, um festzustellen, ob die Anwendung für den aktuellen Gerätebenutzer lizenziert ist. Der Lizenzierungsservice basiert auf der Fähigkeit des Google Play-Lizenzierungsservers, festzustellen, ob ein bestimmter Nutzer eine Lizenz zur Verwendung einer bestimmten Anwendung hat. Ein Nutzer gilt bei Google Play als lizenziert, wenn er als Käufer der Anwendung registriert ist.
Die Anfrage beginnt, wenn Ihre Anwendung eine Anfrage an einen Dienst stellt, der von der Google Play-Clientanwendung gehostet wird. Die Google Play-Anwendung sendet dann eine Anfrage an den Lizenzierungsserver und empfängt das Ergebnis. Die Google Play-Anwendung sendet das Ergebnis an Ihre Anwendung, die die weitere Verwendung der Anwendung nach Bedarf zulassen oder untersagen kann.
Hinweis:Wenn sich eine Version einer App in einem Geschlossener-Test-Track oder Offener-Test-Track befindet, gelten alle Nutzer, die berechtigt sind, diese App herunterzuladen und zu installieren, als lizenzierte Nutzer der App. Weitere Informationen finden Sie unter Test-Tracks verwenden, um wertvolles Feedback von Nutzern zu erhalten.

Abbildung 1: Ihre Anwendung initiiert über die License Verification Library und den Google Play-Client, der die Kommunikation mit dem Google Play-Server übernimmt, eine Lizenzprüfung.
Hinweis:Bisher konnten Sie eine App testen, indem Sie eine unveröffentlichte „Entwurfsversion“ hochgeladen haben. Diese Funktion wird nicht mehr unterstützt. Stattdessen müssen Sie sie in den Tracks für geschlossene oder offene Tests veröffentlichen. Weitere Informationen finden Sie unter Draft Apps are No Longer Supported.
Damit der Lizenzierungsserver den Nutzer richtig identifizieren und den Lizenzstatus ermitteln kann, sind Informationen zur Anwendung und zum Nutzer erforderlich. Ihre Anwendung und der Google Play-Client arbeiten zusammen, um die Informationen zusammenzustellen, und der Google Play-Client übergibt sie an den Server.
Das Android SDK bietet eine herunterladbare Reihe von Bibliotheksquellen, die Sie in Ihr Anwendungsprojekt einbinden können: das Google Market Licensing-Paket. Die Bibliothek für Lizenzbestätigungen (License Verification Library, LVL) ist eine Bibliothek, die Sie Ihrer Anwendung hinzufügen können. Sie übernimmt die gesamte lizenzbezogene Kommunikation mit dem Google Play-Lizenzdienst. Wenn Sie die LVL in Ihre Anwendung einfügen, kann Ihre Anwendung den Lizenzierungsstatus für den aktuellen Nutzer ermitteln, indem sie einfach eine Methode aufruft und einen Callback implementiert, der die Statusantwort empfängt.
Ihre Anwendung fragt den Lizenzierungsserver nicht direkt ab, sondern ruft stattdessen den Google Play-Client über Remote-IPC auf, um eine Lizenzanfrage zu starten. In der Lizenzanfrage:
- Ihre Anwendung stellt Folgendes bereit: den Paketnamen, eine Nonce, die später zum Validieren von Antworten vom Server verwendet wird, und einen Callback, über den die Antwort asynchron zurückgegeben werden kann.
- Der Google Play-Client erhebt die erforderlichen Informationen zum Nutzer und zum Gerät, z. B. den Nutzernamen des primären Google-Kontos des Geräts, die IMSI und andere Informationen. Anschließend wird die Lizenzprüfanfrage im Namen Ihrer Anwendung an den Server gesendet.
- Der Google Play-Server wertet die Anfrage anhand aller verfügbaren Informationen aus und versucht, die Identität des Nutzers mit hinreichender Sicherheit festzustellen. Der Server prüft dann die Nutzeridentität anhand der Kaufdatensätze für Ihre Anwendung und gibt eine Lizenzantwort zurück, die der Google Play-Client über den IPC-Callback an Ihre Anwendung zurückgibt.
Sie können festlegen, wann und wie oft Ihre Anwendung die Lizenz prüfen soll. Außerdem haben Sie die volle Kontrolle darüber, wie die Antwort verarbeitet, die signierten Antwortdaten überprüft und die Zugriffssteuerung durchgesetzt wird.
Beachten Sie, dass Ihre Anwendung während einer Lizenzprüfung keine Netzwerkverbindungen verwaltet oder lizenzbezogene APIs auf der Android-Plattform verwendet.
Lizenzantworten sind sicher
Um die Integrität jeder Lizenzanfrage zu gewährleisten, signiert der Server die Lizenzantwortdaten mit einem RSA-Schlüsselpaar, das ausschließlich zwischen dem Google Play-Server und Ihnen verwendet wird.
Der Lizenzierungsdienst generiert für jede Anwendung ein einzelnes Lizenzschlüsselpaar und stellt den öffentlichen Schlüssel auf der Seite Dienste & APIs Ihrer Anwendung in der Play Console zur Verfügung. Sie müssen den öffentlichen Schlüssel aus der Play Console kopieren und in den Quellcode Ihrer Anwendung einbetten. Der Server behält den privaten Schlüssel intern bei und verwendet ihn zum Signieren von Lizenzantworten für die Anwendungen, die Sie mit diesem Konto veröffentlichen.
Wenn Ihre Anwendung eine signierte Antwort empfängt, werden die Daten mit dem eingebetteten öffentlichen Schlüssel überprüft. Durch die Verwendung von Public-Key-Kryptografie im Lizenzierungsdienst kann die Anwendung Antworten erkennen, die manipuliert oder gefälscht wurden.
Bibliothek für Lizenzbestätigungen
Das Android SDK bietet ein herunterladbares Paket namens „Google Market Licensing package“, das die License Verification Library (LVL) enthält. Die LVL vereinfacht das Hinzufügen von Lizenzen zu Ihrer Anwendung erheblich und trägt zu einer sichereren und robusteren Implementierung bei. Die LVL bietet interne Klassen, die die meisten Standardvorgänge einer Lizenzanfrage verarbeiten, z. B. das Kontaktieren des Google Play-Clients zum Initiieren einer Lizenzanfrage sowie das Überprüfen und Validieren der Antworten. Außerdem werden Schnittstellen bereitgestellt, über die Sie ganz einfach Ihren benutzerdefinierten Code zum Definieren der Lizenzierungsrichtlinie und zum Verwalten des Zugriffs nach Bedarf Ihrer Anwendung einfügen können. Die wichtigsten LVL-Schnittstellen sind:
Policy
- Ihre Implementierung bestimmt, ob der Zugriff auf die Anwendung basierend auf der vom Server empfangenen Lizenzantwort und allen anderen verfügbaren Daten (z. B. von einem mit Ihrer Anwendung verknüpften Backend-Server) zugelassen werden soll. Bei der Implementierung können die verschiedenen Felder der Lizenzantwort ausgewertet und bei Bedarf weitere Einschränkungen angewendet werden. Mit der Implementierung können Sie auch die Verarbeitung von Lizenzprüfungen verwalten, die zu Fehlern führen, z. B. Netzwerkfehler.
LicenseCheckerCallback
- Ihre Implementierung verwaltet den Zugriff auf die Anwendung basierend auf dem Ergebnis der Verarbeitung der Lizenzantwort durch das
Policy
-Objekt. Ihre Implementierung kann den Zugriff auf beliebige Weise verwalten, z. B. das Lizenzierungsergebnis in der Benutzeroberfläche anzeigen oder den Nutzer zum Kauf der Anwendung weiterleiten (falls keine Lizenz vorhanden ist).
Um Ihnen den Einstieg in die Policy
zu erleichtern, bietet LVL zwei vollständige Policy
-Implementierungen, die Sie ohne Änderungen verwenden oder an Ihre Bedürfnisse anpassen können:
ServerManagedPolicy
- Ein flexibles
Policy
, das die vom Lizenzierungsserver bereitgestellten Einstellungen verwendet, um das Zwischenspeichern von Antworten und den Zugriff auf die Anwendung zu verwalten, wenn das Gerät offline ist (z. B. wenn sich der Nutzer in einem Flugzeug befindet). Für die meisten Anwendungen wird die Verwendung vonServerManagedPolicy
dringend empfohlen. StrictPolicy
- Eine restriktive
Policy
, die keine Antwortdaten im Cache speichert und der Anwendung nur Zugriff gewährt, wenn der Server eine lizenzierte Antwort zurückgibt.
LVL ist als herunterladbares Paket des Android SDK verfügbar. Das Paket enthält sowohl die LVL selbst als auch eine Beispielanwendung, die zeigt, wie die Bibliothek in Ihre Anwendung eingebunden werden sollte und wie Ihre Anwendung Antwortdaten, UI-Interaktionen und Fehlerbedingungen verwalten sollte.
Die LVL-Quellen werden als Android-Bibliotheksprojekt bereitgestellt. Das bedeutet, dass Sie einen einzelnen Satz von Bibliotheksquellen verwalten und für mehrere Anwendungen freigeben können. Über das SDK ist auch eine vollständige Testumgebung verfügbar. So können Sie die Lizenzierungsimplementierung in Ihren Anwendungen entwickeln und testen, bevor Sie sie veröffentlichen, auch wenn Sie keinen Zugriff auf ein physisches Gerät haben.
Anforderungen und Einschränkungen
Mit der Google Play-Lizenzierung können Sie Lizenzkontrollen auf Apps anwenden, die Sie über Google Play veröffentlichen. Der Dienst ist nicht dafür konzipiert, den Zugriff auf Anwendungen zu steuern, die nicht über Google Play veröffentlicht werden oder auf Geräten ausgeführt werden, die den Google Play-Client nicht anbieten.
Hier sind einige Punkte, die Sie bei der Implementierung der Lizenzierung in Ihrer Anwendung beachten sollten:
- Eine Anwendung kann den Dienst nur verwenden, wenn der Google Play-Client auf dem Hostgerät installiert ist und auf dem Gerät Android 1.5 (API‑Level 3) oder höher ausgeführt wird.
- Damit eine Lizenzprüfung durchgeführt werden kann, muss der Lizenzierungsserver über das Netzwerk erreichbar sein. Sie können das Verhalten beim Zwischenspeichern von Lizenzen implementieren, um den Zugriff auf Ihre Anwendung zu verwalten, wenn keine Netzwerkverbindung besteht.
- Die Sicherheit der Lizenzierungsfunktionen Ihrer Anwendung hängt letztendlich vom Design Ihrer Implementierung ab. Der Dienst bietet die Bausteine, mit denen Sie Lizenzen sicher prüfen können. Die tatsächliche Durchsetzung und Verarbeitung der Lizenz liegt jedoch in Ihrer Verantwortung. Wenn Sie die Best Practices in den folgenden Dokumenten befolgen, können Sie dazu beitragen, dass Ihre Implementierung sicher ist.
- Das Hinzufügen einer Lizenzierung zu einer Anwendung hat keine Auswirkungen auf die Funktionsweise der Anwendung, wenn sie auf einem Gerät ausgeführt wird, das Google Play nicht unterstützt.
- Sie können Lizenzierungsfunktionen für eine kostenlose App implementieren, aber nur, wenn Sie den Dienst zum Bereitstellen von APK-Erweiterungsdateien verwenden.
Ersatz für den Kopierschutz
Google Play-Lizenzen sind ein flexibler, sicherer Mechanismus zur Steuerung des Zugriffs auf Ihre Anwendungen. Sie ersetzt den Kopierschutzmechanismus (nicht mehr unterstützt), der zuvor bei Google Play angeboten wurde, und bietet Ihnen ein größeres Vertriebspotenzial für Ihre Anwendungen.
Mit der Lizenzierung können Sie zu einem lizenzbasierten Modell wechseln, das auf allen Geräten, die Zugriff auf Google Play haben, durchgesetzt werden kann. Der Zugriff ist nicht an die Eigenschaften des Hostgeräts gebunden, sondern an Ihre Anwendung bei Google Play (über den öffentlichen Schlüssel der App) und die von Ihnen definierte Lizenzierungsrichtlinie. Ihre Anwendung kann auf jedem Gerät und in jedem Speicher installiert und verwaltet werden, auch auf einer SD-Karte.
Obwohl kein Lizenzierungsmechanismus jegliche unautorisierte Nutzung vollständig verhindern kann, können Sie mit dem Lizenzierungsdienst den Zugriff für die meisten Arten der normalen Nutzung auf allen kompatiblen Geräten steuern, unabhängig davon, ob sie gesperrt oder entsperrt sind.
Wenn Sie die App-Lizenzierung in Ihre App einfügen möchten, fahren Sie mit Lizenzierung einrichten fort.