无法在安卓4.4中旋转模拟器

57

我已将我的SDK更新到最新版本(Android 4.4),并启动了模拟器,但现在似乎无法使用CTRL + F11旋转屏幕,屏幕会改变但所有应用程序都不会改变。我不知道是否与此相关,但我可以看到即使我使用“菜单”HW按钮创建了一个新的模拟器,现在所有的应用程序都有溢出按钮。

9个回答

59

新的运行时编译器ART也破坏了模拟器:http://www.xda-developers.com/android/new-runtime-compiler-in-android-4-4/ - mreichelt
2
@mreichelt:这是你必须在模拟器中特别启用的功能,而不是今天普通的Android应用程序开发中的方向更改和溢出方式。话虽如此,感谢您指出这一点,即使只是为了帮助解释我在各种推文中看到的Art是谁。 :-) - CommonsWare
SDK 中似乎有很多错误。例如,您可以看到:http://stackoverflow.com/questions/19725265/license-error-with-android-4-4-emulator。此外,如果我在我的应用程序中打开地图(Google 地图 API v2),它会崩溃并显示分段错误。但我的应用在我的设备和 4.3 模拟器上运行得非常好。Google,你在做什么? - greywolf82
9
是的,在前五分钟就发现了(因为在我的电脑上加载4.4 KitKat模拟器需要那么长时间),屏幕方向使用Ctrl + F11和模拟器的“菜单”按钮都不起作用。Google在测试期间错过这些漏洞真是可惜。 - ChuongPham
1
这也会发生在 L 开发者预览版模拟器中。 - IgorGanapolsky
显示剩余2条评论

54

根据CommonsWare的描述,仿真器似乎存在一个bug, 但是,如果你迫切需要在4.4仿真器上以横屏模式调试应用,则可以:

  1. 启动仿真器上的相机应用程序,它会旋转屏幕。
  2. 现在退出该应用程序,主屏幕应该是横向的。
  3. 按Ctrl + F11 (Mac为Ctrl + fn + F11)即可解决问题。

运作得非常好!先旋转,然后打开相机应用程序。 - NathofGod
太棒了...但是安卓有这么多的故障,真是可惜。 - Solostaran14
相机应用在我的Nexus 10 AVD上无法启动,所以我无法尝试这个技巧。难过脸 - Synesso
你也可以使用Google日历应用程序来完成这个操作。 - Abhishek
@VM4,你是怎么发现这个的? - Pacerier
@Pacerier:不小心的。 - VM4

13

在它被修复之前,我使用这个免费应用程序 "Set Orientation"。 使用adb install安装apk到模拟器中。


1
你是如何获取apk文件的? - IgorGanapolsky
1
是的,但是你如何在模拟器上安装它? - IgorGanapolsky
1
兄弟,Google Play不提供独立的APK文件。 - IgorGanapolsky
1
在已经root的设备上从市场安装应用程序,然后使用以下命令提取apk文件:adb pull /data/app/com.googlecode.eyesfree.setorientation-1.apk。使用adb install将其安装到模拟器中。 - vldmrrr
@vldmrrr,既然这不是官方的,这样做会不会感染病毒? - Pacerier
显示剩余4条评论

7
我发现此错误取决于我选择的虚拟机设备类型。如果我将设备类型设置为“Nexus 7”,则无法进行旋转。但是,如果我将设备类型设置为通用的7英寸平板电脑,并选择所有相同的选项,则旋转功能将正常工作。

2
所以,这仍然是一个错误。 - ChuongPham
我没有注意到任何区别。对我来说,使用7英寸平板设备唯一的不同之处在于它默认为横向模式。否则,它与手机设备的行为相同:窗口会物理旋转,但布局不会调整。 - Edward Brey
2
这个解决方案对我很有帮助,谢谢! - Victor Oliveira
这最终对我有用了。我花了几个小时在谷歌上搜索。我尝试了4.4.2、4.3.1、4.1.2系统镜像,但都没有成功。我在Ubuntu 14.04上使用Idea。 - Will

1

这个问题有一个解决方法。看起来GUI的设置没有保存到ini文件中。我需要手动编辑config.ini和hardware-qemu.ini中的"hw.keyboard=no"字段,它们都在你的avd目录中。


1
为什么“hw.keyboard”设置会产生影响? - IgorGanapolsky
我不知道原因,但它确实有效。当我第一次创建自定义avd时,由于我禁用了所有非必要选项,所以一切都很正常。当我稍后回来编辑它时,我注意到一旦打开它,它会改变操作系统屏幕的方向而不是设备的方向。我仍然处于纵向模式,但界面却是横向垂直的。那时我注意到我的GUI更改没有应用于ini文件。我不确定两者是否都需要更改,但我还是这样做了,然后它恢复正常了。 - idwebmedia

1
在manifestfile.xml中可以放置android:screenOrientation="landscape"。当它被加载后,您将会看到每个应用程序都处于横屏模式。

谢谢你的建议。我正在使用vldmrr上面提出的建议来进行测试,作为解决方法还不错。 - greywolf82

0
作为解决方法,我克隆了设备,在克隆版本中交换了宽度/高度,并取消了竖屏选项。然后基于克隆的横屏版本启动我的avd。也许这对你有用?

如果您想进行onConfigurationChange测试以测试onSaveInstanceState和onrRestoreInstanceState方法的工作情况怎么办?当然,使用您的解决方案,您可以测试为同一片段或活动编写的不同方向的布局。 - Abhinav Saxena

0

在使用模拟器运行 Android 5.0.1 时,我遇到了同样的问题。但是,我通过使用带有 Intel x86 原子系统镜像的模拟器而不是 Intel x86 Atom_64 系统镜像来解决了这个问题。


-1

我已经找到了解决这个问题的方法 -

  • 创建模拟器并设置任何所需的设置,但将目标设置为低于Android 4.4。

例如 -

我将其设置为以下内容 -->

enter image description here

注意:

因为我想要使用Android 4.4与Google Maps API,所以我在这里使用了Android 4.2.2与Google Maps API。

  • 创建AVD后,启动它并等待完全启动。

  • 现在回到这个AVD并进行编辑。在这里,您将目标设置为Android 4.4与Google Maps API。

例如 -

我将其设置为以下内容 -->

enter image description here

  • 现在启动应用程序并随意旋转。它运行得非常好!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接