2013-04-14 119 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

相关问题