2013-04-14 160 views
14

在Android應用中集成Google Plus登錄按鈕時,我觀察到按鈕在實際設備和仿真器上的顯示方式存在一些差異。我知道Google Plus服務APK未安裝在模擬器中,但可以通過從設備中拉出APK並使用APK將它們安裝到模擬器中解決。Google Play服務模擬器,實現Google Plus登錄按鈕等

我目前的「執行」簡單地包括在佈局中的登錄按鈕,參照按鈕具有以下XML代碼:

<com.google.android.gms.common.SignInButton 
    android:id="@+id/sign_in_button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 

當我測試設備上的應用程序,該按鈕會出現全紅並有光澤,根據這裏提到的指導https://developers.google.com/+/mobile/android/sign-in。但是當在模擬器上運行時,它只是一個正常的按鈕(帶黑色文本的灰色背景),表示「使用Google登錄」。

任何想法爲什麼結果不同?我確定我正在運行相同的API級別,並且該資源似乎也在仿真器上正確拉入,因爲它顯示了實際的登錄按鈕(但具有不同的外觀)。

更新:發現在logcat的線索;消息「未找到登錄按鈕,而是使用佔位符」。幾乎可以解釋爲什麼我看到模擬器上的灰色沉悶按鈕。仍然需要弄清楚爲什麼;可能是「從設備複製谷歌加apk安裝程序」黑客無法正常工作。

+0

是Android API的水平不變在設備和模擬器? – WarrenFaith

+0

是的,正如我在我的問題中寫的。 –

回答

52

Google Play服務適用於4.2.2版本的Android模擬器,並正式支持,如Android documentation: Setup Google Play Services中所述。

更新

您現在可以使用Intel/x86映像(HAXM兼容)的API 19和更高版本,對於ARM,谷歌播放服務是可以在大多數的圖像。

設置圖像

爲了得到正確的形象,爲您的虛擬設備管理器:

  • 打開Android SDK管理器
  • 打開組的Android 4.2.2(API 17)
  • 檢查Google API
  • 檢查ARM EABI v7a系統映像

enter image description here

要創建虛擬設備:

  • 打開Android虛擬設備管理器
  • 創建新的設備
  • 輸入一個AVD名稱
  • 將目標谷歌API(Google Inc.) - API級別17
  • 保存您的虛擬設備並啓動...

注意CPU/ABI將被固定爲ARM

enter image description here

現在,你應該能夠使用谷歌播放服務在模擬器中。值得注意的是,爲了讓Google Play服務起作用,您需要在Android項目中將您的目標適當設置爲Google API。

+3

)是否有任何計劃使其與英特爾Atom x86映像?ARM仿真器幾乎不可用 – jophde

+0

我同意@jophde ARM模擬器是狗慢,需要4到5倍的時間才能啓動並執行操作。 –

+0

im無法在仿真器中運行映射,可以üPLZ幫助我的那 – Richa

0

檢查ldpi,mdpi,hdpi等...文件夾的不同按鈕圖形。您的模擬器幾乎可以肯定是與您的設備不同的DPI。

+0

我認爲模擬器和手機具有相同的設置;我正在使用Galaxy Nexus仿真器進行設置並使用Galaxy Nexus手機進行測試。無論如何,模擬器上完全沒有圖形,只是一個普通的舊按鈕,而在手機上則有「g +」徽標和本地化文本。 –

+0

根據API等級,屏幕分辨率和DPI應用了不同的樣式。你看過這些嗎? –

3

我試圖運行仿真器的大多數組合,但是並沒有谷歌的API,這意味着我在x86和ARM模式下進行測試。我發現沒有辦法讓我們的Galaxy Nexus手機上的apk文件在模擬器上正確運行。

猜測這是一定的相關性越來越Play商店運行起來,我決定嘗試,以及看看,如果我有更多的運氣。我沒有;也無法得到那個工作。 Play商店圖標出現並可以啓動,但會立即自行關閉。

什麼做的工作不過是下載並在頁面的底部,這裏安裝的APK:

http://umut.tekguc.info/en/content/google-android-map-v2-step-step

安裝自動售貨機後和GMS包,登錄按鈕出現在它的下充滿美感模擬器。由於我還沒有真正實現實際的登錄功能,我不能確定它會實際工作,但至少按鈕現在在我的設備和仿真器上的應用中看起來完全相同。

您還需要下載Google Play服務軟件(請參閱Android SDK管理器中的「附加」),並在您的項目中安裝庫google-play-services_lib(File-Import-Android-Existing Android Code Into工作區,然後瀏覽至/ opt/adt-bundle-linux/sdk/extras/google/google_play_services/libproject並選擇google-play-services_lib)。

另一個有趣的花絮是,這將只在「純」 Android模擬器的設置工作,而不是用「谷歌API」設置。看起來後者已經在模擬器中安裝了這些應用程序的某些部分(不可見和不可用),並且我還沒有設法刪除現有版本以安裝按上述方式工作的自定義apk文件。我測試了adb remove,adb install,adb install -r,甚至從/ data中刪除了也失敗的目錄。這看起來非常像谷歌正在努力使這一難題。

我很失望谷歌正在這麼做,谷歌可能有一些奇怪的許可原因使得這些東西不能在模擬器中使用,但是如果他們真的希望人們在他們的Android應用中使用他們的服務,他們需要在模擬器中提供這些服務。迫使人們總是在一個設備上開發(有其他優秀的模擬器可用),或者讓人們跳躍(大量的谷歌搜索,安裝非官方/黑客攻擊的版本等)只是邪惡的。

最終更新在接受我的答案之前;雖然正確的樣式正確的按鈕現在顯示在模擬器中,但我仍然無法使「選取帳戶」對話框出現在模擬器中。當/如果我這樣做,我會在這裏分享適當的解決方案。

+0

我以爲他們的座右銘是「不要做惡」! :) – GilliMonsta

+0

當我嘗試安裝APK時,收到消息:「Failure [INSTALL_FAILED_SHARED_USER_INCOMPATIBLE]」。 – GilliMonsta

+0

正如您所說的,只有通過「純粹的」Android模擬器系統映像才能安裝帶有adb的Google Play服務。但有了這樣的系統映像,您無法將Google帳戶添加到手機中!如果您檢查Google Play服務與GoogleApiAvailability.getInstance()。isGooglePlayServicesAvailable(activity)的兼容性,它會告訴您「您的設備不支持Google Play服務」:( – FlorianT

0

Android image with google API implemented我注意到,從API 21有與谷歌的API ARM和x86圖像實現 也許如果您在使用沒有問題仿真機器人5它將作品而不提取的APK

+0

我用谷歌Api的Android 6.0。但它不顯示Play商店.. – curiousMind

+0

Google播放服務是否有效?我沒有嘗試在模擬器中使用Play商店,但選擇使用API​​實現的圖像允許我使用Play服務,也許您可​​以嘗試在使用該Google API圖像時使用apk文件安裝Play商店? – Fuseteam

相關問題