Verwenden der neuen Android Advertiser-ID in einem SDK
Macht es sehr viel Sinn, dass Android ad-SDKs wird die Verwendung von Android ist die neue Werbetreibenden-id.
Es scheint, dass Sie bekommen nur die id mit Hilfe der google-Dienste-sdk, wie hier erwähnt:
http://developer.android.com/google/play-services/id.html.
Mithilfe der google play services sdk benötigt die Referenzierung der google-play-services_lib Projekt, das bewirkt, dass mehrere Probleme:
- Eine Menge von SDKs sind Gläser, das heißt, Sie nicht verwenden können, google-play-services_lib da ist (weil Sie es nicht können, gehören Ressourcen).
- Wenn ich will nur die Werbetreibenden-ID, ich muss hinzufügen, google-play-services_lib zu meinem Projekt, die GEWICHTE fast 1 MB.
Gibt es eine Möglichkeit, nur bekommen die Werbetreibenden-id, ohne die Verwendung von Ressourcen?
InformationsquelleAutor der Frage dors | 2013-11-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich lief in das gleiche Problem, wenn Sie nur die advertiserId Sie könnte die Interaktion mit der Google-Play-Dienst direkt mit einem Vorsatz. Beispiel einer eigenen Klasse:
Stellen Sie sicher, dass Sie nicht den Aufruf dieser von der Haupt-UI-thread.
Zum Beispiel, verwenden Sie so etwas wie:
InformationsquelleAutor der Antwort Adrian
HINWEIS: Meine Antwort ist veraltet für Gradle da nun können Sie auswählen, welche Teile der GooglePlayServices Bibliothek, die Sie einschließen möchten in Ihrem Projekt
Ich lief in das gleiche problem in letzter Zeit, wenn das Projekt an dem ich arbeitete, erreichte die 65k dex limit.
Hier ist, wie ich es gelöst:
Gehen https://code.google.com/p/jarjar/downloads/list und laden Sie die neueste Jar Jar Links .jar-format. Legen Sie die Datei in einem Ordner Aufgaben. Für dieses Beispiel verwende ich die desktop.
Gehen Sie zu [Android-SDK-Pfad]\extras\google\google_play_services\libproject\google-play-services_lib\libs und kopieren google-play-services.jar zu den gleichen Ordner Aufgaben.
Im gleichen Ordner eine Textdatei mit dem Namen rules.txt (der name ist eigentlich egal).
Innerhalb der rules.txt fügen Sie den text ein (ohne die Anführungszeichen):
Wenn Sie möchten, dass andere Klassen, die Sie behalten möchten, können Sie diese hier hinzufügen.
Öffnen Sie eine Eingabeaufforderung-Datei und ändern Sie den Pfad zum Arbeitsordner. Unter Windows verwenden Sie den [cd] - Befehl.
Schreiben Sie den folgenden Befehl ein:
Finden Sie mehr details über die JarJar-Links-Befehle und Regeln hier: https://code.google.com/p/jarjar/wiki/CommandLineDocs
Nur um ein Beispiel zu geben, den Befehl, den ich schreiben musste, sah wie folgt aus (Veränderung ihrigen nach Ihren Datei-Namen):
WAS ES TUT:
WIE ES ZU BENUTZEN:
Import von google-play-Dienste aus dem sdk in Ihrem Projekt wie üblich, stellen Sie sicher, dass Sie es in Ihrem Arbeitsbereich. In den libs-Ordner, ersetzen Sie die google-play-services.jar mit dem Glas, das Sie zuvor erstellt haben.
Wenn Sie dort sind, können Sie löschen Sie die Ressourcen, um kostenlos weitere 0,5 mb. Stellen Sie sicher zu halten values/common_strings.xml und values/version.xml.
Vergessen Sie nicht, fügen Sie manifest Metadaten für google play-Dienste.
Dies hat mir geholfen, zu reduzieren der Größe des Projektes mit mehr als 2,5 mb und bleiben unter dem 65k dex Klassen und Methoden beschränken, während Sie in der Lage, den Zugriff auf die Google-Werbetreibenden-id.
Hoffe, es wird Ihnen auch helfen.
InformationsquelleAutor der Antwort Andrei Lupsa
Adrian ' s Lösung ist sehr gut, und ich verwende es selbst.
Aber heute habe ich entdeckt, dass es einen Fehler bei Google Play-Dienste nicht auf dem Gerät installiert. Sie erhalten eine Meldung über eine undichte
ServiceConnection
wenn Ihre Tätigkeit/Dienst gestoppt wird. Das ist tatsächlich ein bug inContext.bindService
: wenn die Bindung an den Dienst nicht (in diesem Fall, da Google Play Services nicht installiert ist),Context.bindService
gibt false zurück, aber es nicht klar, der Verweis auf dieServiceConnection
und erwartet von Ihnen zu nennenContext.unbindService
obwohl der Dienst nicht vorhanden!Ist die Problemumgehung ändern Sie den code der
getAdvertisingIdInfo
wie diese:So
Context.unbindService
genannt werden, auch wennContext.bindService
zurückfalse
.InformationsquelleAutor der Antwort Avi
MoPub und ein paar andere big Player sind nicht mit GPS in Ihren SDKs. Von MoPub Hilfe-Seite:
Überprüfen Sie diesen link für eine, viel mehr Details:
http://help.mopub.com/customer/portal/articles/1523610-google-advertising-id-faqs
Hoffe, das hilft.
InformationsquelleAutor der Antwort ankit
Ist die einzige unterstützte Methode für den Zugriff auf Werbe-ID ist durch die direkte Anbindung an den Play Services SDK und den Zugriff auf Werbe-ID über diese APIs. Google nicht empfehlen oder unterstützen keine Problemumgehung, vermeidet direkten Zugang zum Play-Services-APIs, weil es bricht der Benutzer die Verkleidung Funktionalität (wie zum Beispiel Fehlerbehandlung in Fällen, in denen die Play-Dienste app auf dem Gerät veraltet ist), und sein Verhalten wird unberechenbar sein mit Zukunft-Play-Services-releases.
Den Google Play Developer Program Policies verlangen, dass Sie Zugriff auf den Google-Play-APIs nur in einer genehmigten Art und Weise.
InformationsquelleAutor der Antwort Eric Leichtenschlag