在Android应用中集成Google Plus登录按钮时,我观察到按钮在实际设备和模拟器中的显示方式存在一些差异。我知道Google Plus服务APK并未安装在模拟器中,但可以通过从设备中提取APK并使用APK将其安装到模拟器中来解决此问题。
我当前的“实现”只是在布局中包含登录按钮,通过引用带有以下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中找到线索;消息“未找到登录按钮,而是使用占位符”。几乎可以解释为什么我在模拟器上看到灰色的暗淡按钮。还需要找出原因;可能是“从设备上复制google plus apk”hack无法正常工作。
答案 0 :(得分:53)
Google Play服务适用于Android模拟器的4.2.2版本,并且正如Android documentation: Setup Google Play Services中所述受到官方支持。
<强>更新强>
现在,您可以将Intel / x86图像(HAXM兼容)用于API 19及更高版本,而对于ARM,大多数图像都可以使用Google Play服务。
设置图片
为您的虚拟设备管理器获取正确的图像:
创建虚拟设备:
注意 CPU / ABI将修复为ARM
现在,您应该可以在模拟器中使用Google Play服务。值得注意的是,您需要在Android项目中将目标设置为适当的Google API才能使Google Play服务正常运行。
答案 1 :(得分:4)
我尝试了运行模拟器的大多数组合,但是使用和不使用Google API,这意味着我使用x86和arm模式进行了测试。我发现没有办法让我的Galaxy Nexus手机上的apk从仿真器上正确运行。
猜测这与让Play商店运行起来有些相关,我决定尝试一下,看看我是否有更多的运气。我没有;无法做到这一点。 Play商店图标出现并可以启动,但它会立即关闭。
在这里下载和安装apks的工作是什么呢?
http://umut.tekguc.info/en/content/google-android-map-v2-step-step
安装了自动售货机和gms包后,登录按钮出现在模拟器下的完整美观中。由于我还没有真正实现实际的登录功能,我不能确定它实际上是否可行,但至少该按钮在我的设备和模拟器中的应用程序中看起来相同。
您还需要下载Google Play服务软件(在Android SDK管理器中的“附加内容”下查看),并在项目中安装库google-play-services_lib(文件导入-Android-Existing Android Code into Workspace ,然后浏览到例如/ opt / adt-bundle-linux / sdk / extras / google / google_play_services / libproject并选择google-play-services_lib)。
另一个有趣的消息是,这只适用于“纯”Android模拟器设置,而不适用于“Google API”设置。似乎后者已经在模拟器中安装了这些应用程序的某些部分(不明显且不起作用),并且我没有设法删除现有版本以安装如上所述工作的自定义apk文件。我测试了adb remove,adb install,adb install -r,甚至从/ data中删除了也失败的目录。它看起来非常像谷歌正在努力解决这个问题。
我很失望谷歌这么努力;谷歌可能有一些奇怪的许可证原因要求将这些东西保留在模拟器之外,但如果他们真的希望人们在他们的Android应用程序中使用他们的服务,他们需要在模拟器中提供这些服务。迫使人们总是在设备上开发(提供其他优秀的模拟器)或让人们跳过篮球(大量的谷歌搜索,安装apks的非官方/黑客版本等)只是邪恶。
在接受我的回答之前的最后更新;虽然现在在模拟器中显示具有正确样式的正确按钮,但我仍然无法在模拟器中显示“选择帐户”对话框。当/如果我这样做,我将在这里分享适当的解决方案。
答案 2 :(得分:0)
检查ldpi,mdpi,hdpi等文件夹以查找其他按钮图形。您的模拟器几乎肯定是与您的设备不同的DPI。
答案 3 :(得分:0)