Используйте как Play Services, так и SDK AdMob
Как MH. указано в этом вопросе, больше не нужно включать GoogleAdMobAdsSdk-xxxjar в свой Android-проект, если они включают службы Google Play (см. руководство по миграции). Тем не менее, я хочу, и у меня проблемы.
Проблема: проект google-play-services_lib включает определение для com.google.ads.AdRequest
, которое устарело, и имеет частный конструктор. Он попадает в путь класса перед банком AdMob (в записи "Частные библиотеки Android" ), поэтому, когда я пытаюсь использовать его в своем коде, он пытается использовать устаревшее, что приводит к ошибке: The constructor AdRequest() is not visible
. Я не вижу возможности переупорядочивать записи внутри "Частных библиотек Android".
Почему я хочу использовать оба, спросите вы? У меня есть один проект библиотеки со многими полезными классами, включая некоторые классы полезности для работы как с Play Services, так и с AdMob. Некоторые из моих приложений, которые используют этот проект библиотеки, используют служебные классы AdMob, но не Службы Службы.
Ответы
Ответ 1
Я тестировал это, и некоторые изменения необходимы для того, чтобы это работало через Службы Google Play.
Во-первых, вы должны удалить все импортные ссылки со старыми com.google.ads.*
, так как они теперь расположены на com.google.android.gms.ads.*
.
Как вы уже упоминали, необходимо сделать еще несколько изменений:
Вы не можете создать экземпляр AdRequest так, как он использовался, но используя AdRequest.Builder
следующим образом:
AdRequest adRequest = new AdRequest.Builder().build();
Кроме того, убедитесь, что вы заменили имя пакета на всех макетах, поэтому они вызывают <com.google.android.gms.ads.AdView
вместо <com.google.ads.AdView
.
Я думаю, что все. Удачи!
Ответ 2
Вы можете использовать Google Play Services v12, который не включает перекрывающиеся пространства имен. Его можно загрузить с помощью Android SDK Manager в разделе "Дополнительно" → "Службы Google Play для Froyo". Эта версия будет сосуществовать с автономным SDK AdMob.
Со временем Google, вероятно, будет осуждать оба.
Обновление: Google анонсировала отказ автономного SDK AdMob, вы должны перейти в SDK Google Play:
1 августа 2014 года Google Play перестанет принимать новые или обновленные приложения которые используют старый автономный Google Mobile Ads SDK v6.4.1 или ниже. Вы к тому моменту должен обновиться до версии Google Play для мобильных объявлений.
Ответ 3
Подробные службы Google Play Migration для AdMob доступны здесь: https://developers.google.com/mobile-ads-sdk/docs/admob/play-migration
Ответ 4
Я думаю, что я привлек внимание Google/Android к проблеме,
https://code.google.com/p/android/issues/detail?id=63007