2017-03-06 279 views
8

我有一個使用Google地圖的Android應用程序。突然之間,它停止在釋放模式下工作。地圖視圖告訴谷歌播放服務正在模擬器和真實設備上更新。在網上搜索大家都在談論API密鑰文件,但這不是我的問題!Google Play API中的「Google Play服務正在更新」

我已經試過的發佈設置,每一個可能的不同組合,並我發現,當我在構建配置設置debuggable = false(與debuggable = true它的工作原理)出現問題。我不明白爲什麼地圖不工作,因爲當然,APK不可調試。我也嘗試了多種版本的Google Play服務,甚至是最新的(10.2.0)。沒有不同。

我該怎麼辦?請幫助,因爲我無法在Play商店發佈任何新版本,直到我修復此錯誤。

enter image description here

+0

是否啓用Google Maps Android API的api密鑰? –

+0

當然@ShaSmith –

+0

@GuidoLodetti你使用的是proguard嗎? –

回答

3

「如果我設置可調試爲false它停止工作」

這表明你的API訪問僅限於調試模式。考慮到沒有用於調試和發佈的單獨的API密鑰,它會顯示你的密鑰已經綁定到你的調試證書。

引述「更多的API密鑰限制」的documentation

您可以選擇添加的限制。對於Android應用,您限制關鍵看你的應用程序的SHA-1指紋

如果你有地方這樣的限制,釋放證書的不同指紋會破壞你的API訪問。

看看上面鏈接,以獲得正確的(釋放)證書指紋

+0

SHA-1是正確的。如果我將debuggable設置爲true,並用生產證書對其進行簽名,則一切正常。如果我切換到假,一切都會中斷。 –

+0

您使用生產認證的調試模式?那麼你使用什麼實際生產建設? –

+0

在發佈此問題之前,我嘗試分析可能會導致問題的原因,因爲在調試所有工作時,以及在發佈到Google Play時,它不再起作用。結果發現導致錯誤的唯一因素是「可調試」到「錯誤」。如果我嘗試單獨使用生產證書,則不會出現問題。 –

0

假如同一個問題的文件的「獲取自己的證書信息」一節。嘗試從gradle更新您的谷歌播放服務,然後檢查它。可能會幫助你。還有一件事,請使用最新的gradle版本,並且目標請設置爲17以上。

0

有同樣的「錯誤」,可以通過使用以下步驟來解決:

https://productforums.google.com/forum/#!topic/play/ey7qIRBYj-o

我知道你的感受,當你不斷收到一條消息說 「谷歌Play服務已停止」 。要解決此問題,我建議您爲Google Play服務(轉到設置>應用或 應用管理器> Google Play服務>清除緩存>確定)和 Google Play商店推薦使用 明確緩存。一旦你清除了緩存,重新啓動你的設備到 檢查它是否工作。

2

我有同樣的問題,我設法修復它。 當minifyEnabled選項設置爲true時(如果錯誤未發生問題),會發生此問題。

總之,我就是這樣做是爲了添加一行:

-keep class com.google.** {*; } 

到ProGuard的規則文件(proguard-rules.pro),以避免谷歌被混淆播放服務的依賴。 至少在我的情況下,如果添加這個規則,結果APK看起來不會大得多。

我認爲當從另一個模塊(例如共享庫)中使用地圖組件時會出現問題,但我沒有檢查它。