Google Play服务模拟器,实现Google Plusloginbutton等

在Android应用程序中集成G​​oogle Plusloginbutton时,我观察到button在实际设备和仿真器上的显示方式有所不同。 我意识到Google Plus服务APK没有安装在模拟器中,但是这可以通过从设备中拉出APK并使用APK将其安装到模拟器中来解决。

我目前的“实现”只是简单的在布局中包含loginbutton,通过引用以下XML代码的button:

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

当我在设备上testing我的应用程序时,button显示全部红色和shiny,根据这里提到的准则https://developers.google.com/+/mobile/android/sign-in 。 但是在模拟器上运行时,这只是一个正常的button(带有黑色文本的灰色背景),表示“用Googlelogin”。

任何想法为什么结果是不同的? 我已经确定我正在运行相同的API级别,并且仿真器上的资源似乎也正确地拉入,因为它显示了实际的loginbutton(但具有不同的外观)。

更新:在logcat中find线索; 消息“Sign in button not found,using placeholder instead。” 几乎解释了为什么我看到模拟器上的灰暗沉闷的button。 仍然需要弄清楚为什么; 可能是“从设备复制谷歌加apk的”黑客无法正常工作。

Solutions Collecting From Web of "Google Play服务模拟器,实现Google Plusloginbutton等"

Google Play服务适用于Android模拟器的4.2.2版本,并按照Android文档中的说明正式支持:设置Google Play服务 。

更新

您现在可以使用适用于API 19和更高版本的Intel / x86映像(兼容HAXM),对于ARM,Google Play服务在大多数映像上都可用。

设置图像

为您的虚拟设备pipe理器获取正确的映像:

  • 打开Android SDKpipe理器
  • 打开组4.2.2(API 17)
  • 检查Google API
  • 检查ARM EABI v7a系统映像

在这里输入图像说明

要创build虚拟设备:

  • 打开Android虚拟设备pipe理器
  • 创build一个新的设备
  • input一个AVD名称
  • 将目标设置为Google API(Google Inc.) – API Level 17
  • 保存您的虚拟设备并启动它…

注意 CPU / ABI将被固定为ARM

在这里输入图像说明

现在,您应该可以在模拟器中使用Google Play服务。 值得注意的是,为了使Google Play服务能够正常运行,您需要在Android项目中将您的目标适当地设置为Google API。

我尝试了大多数运行模拟器的组合,但是使用和不使用Google API,这意味着我使用x86和arm模式进行了testing。 我发现没有办法使apk的从我的Galaxy Nexus手机拉到模拟器上正确运行。

猜测这与Play Store的运行有些相关,我决定试试看看我是否有更多的运气。 我没有; 也无法得到那个工作。 Play商店图标出现并可以启动,但会立即自行closures。

然而,工作是什么,下载并安装在这里的页面底部的apks:

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

在安装了自动售货机和gms软件包之后,loginbutton出现在模拟器下的美丽之中。 由于我还没有真正实现实际的loginfunction,我不能确定它会实际工作,但至lessbutton现在看起来在我的设备和模拟器中的应用程序相同。

您还需要下载Google Play服务软件(请参阅Android SDKpipe理器中的“附加”),并在您的项目中安装库google-play-services_lib(File-Import-Android-Existing Android Code Into Workspace,然后浏览到/ opt / adt-bundle-linux / sdk / extras / google / google_play_services / libproject并selectgoogle-play-services_lib)。

另一个有趣的事情是,这只会在“纯粹的”Android模拟器设置,而不是“谷歌API”设置。 看起来后者已经安装了这些应用程序的一部分(不明显,不工作),我没有设法删除现有的版本来安装上述工作的自定义apk文件。 我testing过adb remove,adb install,adb install -r,甚至从/ data中删除目录也失败了。 这看起来非常像谷歌正在努力使这个困难。

我很失望Google正在这么做, 谷歌可能有一些奇怪的授权原因,使这些东西不在模拟器中,但是如果他们真的希望人们在他们的Android应用中使用他们的服务,他们需要在模拟器中提供这些服务。 迫使人们总是在一个设备上开发(或者有其他优秀的模拟器),或者让人跳跃(大量的谷歌search,安装非官方/黑客攻击等)只是邪恶的。

接受我的答案之前最后更新; 虽然现在正在仿真器中显示正确的样式正确的button,我仍然无法让“挑选帐户”对话框出现在模拟器中。 当/如果我做,我会在这里分享适当的解决scheme。

检查ldpi,mdpi,hdpi等…文件夹的不同buttongraphics。 你的模拟器几乎肯定是一个不同于你的设备的DPI。

Android图像与谷歌API实施 我已经注意到,从API 21有ARM和x86图像与谷歌API实施,也许如果你没有问题,使用Android 5模拟,它将工作,而无需解压APK