als MH. in this question hingewiesen, muss GoogleAdMobAdsSdk-x.x.x.jar in ihrem Android-Projekt nicht mehr enthalten, wenn sie Google Play Services enthalten (siehe migration guide). Wie auch immer, ich möchte und habe Probleme.Verwenden Sie beide Play Services und AdMob SDK
Das Problem: Das Projekt google-play-services_lib enthält eine Definition für com.google.ads.AdRequest
, die veraltet ist und einen privaten Konstruktor hat. Es endet im Klassenpfad vor dem AdMob-Jar (innerhalb des Eintrags "Android Private Libraries"). Wenn ich versuche, es in meinem Code zu verwenden, versucht es daher, den veralteten Code zu verwenden, was zu folgendem Fehler führt: The constructor AdRequest() is not visible
. Ich sehe keine Möglichkeit, die Einträge in "Android Private Libraries" neu zu ordnen.
Warum möchte ich beide verwenden, fragen Sie? Ich habe ein einzelnes Bibliotheksprojekt mit vielen nützlichen Klassen, einschließlich einiger Hilfsklassen für die Bereitstellung von Play Services und AdMob. Einige meiner Apps, die dieses Bibliotheksprojekt verwenden, verwenden die AdMob-Hilfsklassen, jedoch keine Play Services.
Können Sie nicht einen anderen Konstruktor verwenden, die in beiden Bibliotheken vorhanden ist? Ansonsten teile es in 2 Bibliotheken oder entferne das Admob nur Zeug und implementiere es direkt in deinen Apps (ich kann mir nicht vorstellen, dass es wirklich viel gemeinsamen Code gibt, da der Admob-Code so einfach ist). – William
Soweit ich feststellen kann, ist der einzige Zweck der neuen, veralteten Klasse in der Play Services-Bibliothek, den Fehler zu verursachen, den ich erhalten habe. Die Klasse, die in der Services-Bibliothek verwendet werden soll, befindet sich in einem anderen Paket. Es erscheint mir seltsam, dass sie absichtlich die Kompatibilität zwischen zwei ihrer Produkte brechen würden.Meine einzige Vermutung ist, dass sie das eigenständige AdMob-Glas auslaufen lassen werden. Ich würde jedoch gerne einen Workaround finden, zumindest für den Moment. –