Utilisant à la fois des Services et des SDK AdMob
Comme MH. souligné dans cette question, que l'on n'a plus besoin d'inclure GoogleAdMobAdsSdk-x.x.x.jar dans leur projet Android si elles comprennent des Google Play Services (voir la guide de migration). Cependant, je veux, et je vais avoir des ennuis.
Le problème: google-play-services_lib projet prévoit une définition com.google.ads.AdRequest
qui est obsolète et a un constructeur privé. Il se retrouve dans le chemin en face de la AdMob pot (au sein de la "Android Bibliothèques Privées entrée"), donc, lorsque j'essaie de l'utiliser dans mon code il de fin d'essayer d'utiliser le obsolète, l'amenant à l'erreur: The constructor AdRequest() is not visible
. Je ne vois aucune façon de ré-ordonner les entrées à l'intérieur "Android Bibliothèques Privées".
Pourquoi j'ai envie d'utiliser tous les deux, vous demandez-vous? J'ai un seul projet de bibliothèque avec de nombreuses classes utiles, y compris certaines classes utilitaires pour les Services et AdMob. Certaines de mes applications qui utilisent cette bibliothèque de projet de l'utilisation de la AdMob utilitaire de classes, mais de ne pas Jouer à des Services.
- Pouvez-vous ne pas utiliser un autre constructeur qui est disponible dans les bibliothèques? Sinon, de le diviser en 2 bibliothèques ou de retirer la Admob seulement des trucs et de les mettre en œuvre directement dans vos applications (je ne peux pas imaginer il y a vraiment beaucoup de code commune comme la Admob code est si simple).
- Aussi loin que je peux dire, le seul but de la nouvelle, classe déprécié dans les Services de la bibliothèque est à l'origine de l'erreur que j'ai reçu. La classe qui doit être utilisé dans les Services lib est dans un package différent. Il me semble étrange qu'ils auraient intentionnellement casser la compatibilité entre deux de leurs produits. Ma conjecture est qu'ils seront à l'élimination progressive de l'autonome AdMob jar. Je voudrais trouver une solution au moins pour l'instant, cependant.
Vous devez vous connecter pour publier un commentaire.
J'ai testé cette, et certaines modifications sont nécessaires afin d'obtenir ce travail par le biais de Google Play Services.
En premier lieu, vous devez supprimer toutes les importations de référencement de vieux
com.google.ads.*
, car ils sont maintenant situés surcom.google.android.gms.ads.*
.Comme vous l'avez mentionné, quelques modifications doivent être faites:
Vous ne peut pas instancier une AdRequest la façon dont il l'habitude d'être fait, mais à l'aide d'un
AdRequest.Builder
comme suit:Aussi, assurez-vous de remplacer le nom du paquet sur tous les modèles, alors ils l'appellent
<com.google.android.gms.ads.AdView
au lieu de<com.google.ads.AdView
.Je pense que c'est tout. Bonne chance!
Vous pouvez utiliser Google Play Services v12 qui ne comprennent pas le chevauchement des espaces de noms. Il peut être téléchargé à l'aide de l'Android SDK Manager sous "Extras" -> "Google Play Services pour Froyo". Cette version sera co-exister avec AdMob autonome SDK.
Au fil du temps, Google sera probablement dénigrent les deux à la fois.
Mise à jour: Google a annoncé la la dépréciation de l'autonome SDK AdMob, vous devez passer à Google Play SDK:
Détaillée Google Play Services de Migration pour AdMob est disponible ici: https://developers.google.com/mobile-ads-sdk/docs/admob/play-migration
Je crois que j'ai l'attention de Google/Android pour la question,
https://code.google.com/p/android/issues/detail?id=63007