Wo ist das Problem eine (völlig losgelöste) ID beim ersten Start der Anwendung zu erzeugen?
Dann wird eine Verbindung zum Lizenzserver aufgebaut und es wird eine Lizenz mit dieser Geräte-ID und den Account-Informationen abgerufen. Sind keine Lizenzen mehr verfügbar, dann kann der Kunde einfach Lizenzen freigeben (am dem Gerät selber oder ohne das Gerät - weil zerstört oder nicht mehr da).
Zur Überprüfung schaut die Anwendung ab und an beim Lizenzserver vorbei und prüft, ob die Geräte-ID noch mit einer Lizenz verknüpft ist. Diese Info (Geräte-ID xy ist jetzt ungültig) könnte man auch per Push-Notification übertragen und sobald das Gerät eine Verbindung hat wird die Lizenz von dort entfernt.
Doch das ist absolut in Ordnung, selbige ID darf nur einfach nicht von einem gerooteten Gerät auf ein anderes Kopiert werden können. Wir haben das schon mehrfach erlebt das Kunden durch Kopieren ganzer Anwendungsordner so eine "Installations-ID" versehentlich mit kopiert haben.
Genauso habe ich es auch gemacht. Eine ID beim ersten Start (= wenn noch keine vorhanden), die wird in den Global-Store gespeichert damit sie ggf. ein Update o.ä. überlebt. Die wird übermittelt. Wenn der User das Gerät komplett neu installiert, dann wird halt eine neue ID erzeugt, geht bis zu x mal. Und so oft installiert man sein Handy/Mac ja nun nicht neu. Kannst Du ggf. auch verschlüsseln, dann kann man die nicht ändern wenn man mit Tools nach der Datei sucht.
Funktioniert 1a.
Das will ich haben. Wo ist der Globale Store? Bei aktuellen Android Versionen kann ich doch nichts außerhalb der Sandbox hinterlassen oder?
Das ist die
sinnvolle Lösung.
Hilft dem TE aber wenig, wenn irgendein Vertragswerk (oder Chef) eine Lizenz pro physischem Gerät vorschreiben
Eine Installations-Identifizierung wäre auch ok, wenn alle Android-Useraccounts auf dem Gerät Zugriff auf diese global im Gerät gespeicherte ID haben.