2013-11-01 48 views
19

作爲MH。在this question中指出,如果Google項目包含Google Play服務(請參閱migration guide),則不再需要在其Android項目中包含GoogleAdMobAdsSdk-x.x.x.jar。但是,我想,而且我遇到了麻煩。同時使用Play服務和AdMob SDK

問題:google-play-services_lib項目包含com.google.ads.AdRequest的定義,該定義已被棄用,並且具有私有構造函數。它最終在AdMob jar前面的類路徑中(在「Android專用庫」條目中),所以當我嘗試在我的代碼中使用它時,它最終嘗試使用已棄用的代碼,導致錯誤:The constructor AdRequest() is not visible。我無法重新排列「Android私人圖書館」內的條目。

爲什麼我要使用兩種,你問?我有一個包含許多有用類的單個庫項目,其中包括用於處理Play服務和AdMob的一些實用工具類。我的一些使用該庫項目的應用程序使用AdMob實用程序類,但不使用Play服務。

+0

你能不能使用備用構造可用在兩個庫?否則將其分成2個庫或刪除Admob唯一的東西,並直接在你的應用程序中實現它(我無法想象有很多通用代碼,因爲Admob代碼非常簡單)。 – William

+0

據我所知,Play服務庫中新的棄用類的唯一目的是導致我收到的錯誤。應在服務庫中使用的類位於不同的包中。我覺得他們會故意破壞他們兩個產品之間的兼容性,這似乎很奇怪。我唯一的猜測是他們將逐步淘汰獨立的AdMob廣告瓶。儘管如此,至少現在我想找到解決方法。 –

回答

18

我一直在對此進行測試,爲了使其在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

我認爲就是這樣。祝你好運!

+6

感謝您的指點,但這些是使用新的Play服務包的說明。我正在問如何在包含Play服務的項目中使用舊的.jar。 –

+0

不要使用舊的罐子。使用GPS並使用新的com.google.android.gms.ads.AdRequest類。如果您有一個項目不需要包含GPS的其他部分,那麼使用Proguard將這些API刪除。 – William

+0

@William確實; 「你不能」似乎是我的問題的答案,從我能看到的一切。爲了迴應您的評論的其他部分,Proguard似乎沒有做好很好的工作來剝離服務庫。在一個項目中,我現在只將它用於AdMob,而且我仍然從最終產品中的.games,.maps,.plus和.wallet中獲得一些類。但我想現在我正在切線。 –

6

詳細谷歌Play服務遷移讓AdMob可以在這裏找到:https://developers.google.com/mobile-ads-sdk/docs/admob/play-migration

+4

我不想通過遷移來使用新的AdMob類。您甚至可能會注意到我在原始問題中包含了相同的鏈接。我正在尋找在也使用Google Play服務的項目中使用單獨的.jar。我已經基本放棄了這一點,假設它是不可能的。 –

+0

@EricSimonton你有沒有找到解決你的原始問題?我也面臨同樣的問題... –

+1

@IgorGanapolsky不,我沒有。 「解決方案」是:不要這樣做。請使用Play服務 - 或 - .jar。你不能使用兩者。 (除非像sagis指出的那樣,如果需要的話,作爲一個臨時解決方案。) –

10

您可以使用谷歌播放服務V12其中不包含重疊的名稱空間。可以使用Android的SDK管理器在「Extras」 - >「Google Play Services for Froyo」下進行下載。此版本將與AdMob獨立SDK共存。

隨着時間的推移谷歌可能會不贊成這兩個。

更新:谷歌已經宣佈了deprecation of the stand alone AdMob SDK,你必須遷移到谷歌播放SDK:

On August 1, 2014, Google Play will stop accepting new or updated apps that use the old standalone Google Mobile Ads SDK v6.4.1 or lower. You must upgrade to the Google Play version of the Mobile Ads SDK by then.

+1

這很有趣(和預期)。我有一個應用程序,可以在Google Play和其他商店中部署這些應用程序,以便無法訪問Google Play的設備。棄用舊的ASK迫使我加入Google Play,因爲我無法在Google Play之外再播放廣告。很好,Google。 – Michael

+0

@Michael:實際上,Google Play服務在Google Play商店外運行良好。唯一的問題是,如果播放器設備沒有GPS,除非您推送新版本,否則不會自動更新庫。 –

+0

@Michael_A:但GPS APK可再發行? – Michael

相關問題