我在发现Android模拟器。我的目的是为我的一个应用程序(这可能是另一篇文章的主题)自动截图捕获。当我开始我的第一个Android虚拟设备(运行Lollipop)时,我惊讶的是,每次我点击应用程序启动器图标,我得到“不幸的是,启动程序已停止。" ("Unfortunately, Launcher has stopped" )
为了解决这个问题,我的想法是使用adb -e logcat查看logcat提供的日志。在我的情况下使用-e选项将adb命令指向唯一正在运行的模拟器实例,因为我经常让一个或多个物理设备插入。
运行上一个命令会显示许多信息,但如果您查看与应用启动器图标的点击时间相对应的日志消息,则会显示一条非常有意义的消息:
事实上,问题来自内存分配。要解决这个问题,你只需要增加与虚拟设备相关联的vm堆大小(在我的例子中是从64 MB到256)。你可以通过图形界面(Android Studio或通过执行android avd)。另一种方法是从与您创建的虚拟设备对应的配置文件中编辑行vm.heapSize = 64。此文件位于〜/ .android / avd / AVD_NAME.avd / config.ini其中AVD_NAME是您创建的虚拟设备的名称。
为了解决这个问题,我的想法是使用adb -e logcat查看logcat提供的日志。在我的情况下使用-e选项将adb命令指向唯一正在运行的模拟器实例,因为我经常让一个或多个物理设备插入。
运行上一个命令会显示许多信息,但如果您查看与应用启动器图标的点击时间相对应的日志消息,则会显示一条非常有意义的消息:
E/AndroidRuntime( 1794): FATAL EXCEPTION: main
E/AndroidRuntime( 1794): Process: com.android.launcher, PID: 1794
E/AndroidRuntime( 1794): java.lang.OutOfMemoryError: Failed to allocate a 13063692 byte allocation with 4194304 free bytes and 9MB until OOM
事实上,问题来自内存分配。要解决这个问题,你只需要增加与虚拟设备相关联的vm堆大小(在我的例子中是从64 MB到256)。你可以通过图形界面(Android Studio或通过执行android avd)。另一种方法是从与您创建的虚拟设备对应的配置文件中编辑行vm.heapSize = 64。此文件位于〜/ .android / avd / AVD_NAME.avd / config.ini其中AVD_NAME是您创建的虚拟设备的名称。