41

我想创建三星 Galaxy S II 的 AVD。唯一的目的是使用其默认 Web 浏览器测试网站,以查看它们在纵向和横向模式下的外观。

由于它现在是最受欢迎的 Android 智能手机,我想在我的网站上对其进行测试。

我只想知道最基本的设置,这样我至少可以大致了解一下。我正在使用带有 GUI 前端的 Andriod SDK。

我正在寻找您在 Andriod 虚拟设备管理器中单击“新建”后出现的那些设置。

例如:

目标:SD 卡:皮肤:硬件:抽象 LCD 密度 最大 VM 应用程序堆大小 设备 RAM 大小

等等。

我尝试了三星的在线远程测试实验室,但我发现它过于严格(似乎无法在某些端口关闭的 Internet 热点上使用它),启动速度很慢,而且我最终还是会出现黑屏。所以,我真的更喜欢将我自己的版本作为 AVD 运行。

4

6 回答 6

53

AVD 管理器的界面已更改。因此,需要对流程进行更改。现在有一个设备定义和一个虚拟设备定义,而不是单个文件。不幸的是,用户界面并不能完全控制两者的内容。

这些说明适用于 Android SDK 工具修订版 21。它们引用了 Windows 7 路径。如果您使用的是不同的操作系统,则需要确定文件所在的位置。

按照从 mwalter 到第 6 步的步骤进行操作(以获得适当的皮肤)。然后执行以下操作:

  1. 在 Android 虚拟设备管理器中,单击“设备定义”选项卡,然后按“新设备”

  2. 输入名称“Samsung Galaxy SII”(名称必须准确,以下文件才能正常工作。如果更改它,请务必对以下文件中的名称进行等效更改。)

  3. 填写屏幕尺寸、分辨率和内存。我们将覆盖内容,因此值并不重要,但正确的值是: 屏幕尺寸:4.3 分辨率:480 x 800 内存:1024 密度:hdpi 按钮:硬件

  4. 点击创建设备,然后关闭 AVD 管理器

  5. 在您喜欢的 XML 编辑器中打开文件 C:\Users\[用户名]\.android\devices.xml

  6. 将名为“Samsung Galaxy SII”的 <d:device>...</d:device> 元素替换为以下内容:

    <d:device>
      <d:name>Samsung Galaxy SII</d:name>
      <d:manufacturer>Samsung</d:manufacturer>
      <d:meta/>
      <d:hardware>
        <d:screen>
          <d:screen-size>normal</d:screen-size>
          <d:diagonal-length>4.30</d:diagonal-length>
          <d:pixel-density>hdpi</d:pixel-density>
          <d:screen-ratio>long</d:screen-ratio>
          <d:dimensions>
            <d:x-dimension>480</d:x-dimension>
            <d:y-dimension>800</d:y-dimension>
          </d:dimensions>
          <d:xdpi>216.97</d:xdpi>
          <d:ydpi>216.97</d:ydpi>
          <d:touch>
            <d:multitouch>jazz-hands</d:multitouch>
            <d:mechanism>finger</d:mechanism>
            <d:screen-type>capacitive</d:screen-type>
          </d:touch>
        </d:screen>
        <d:networking>
          Bluetooth
          <!--NFC (put this back in if you have an S2 model that supports NFC-->
          Wifi
        </d:networking>
        <d:sensors>
          Compass
          Accelerometer
          GPS
          ProximitySensor
          LightSensor
          Gyroscope
        </d:sensors>
        <d:mic>true</d:mic>
        <d:camera>
          <d:location>back</d:location>
          <d:autofocus>true</d:autofocus>
          <d:flash>true</d:flash>
        </d:camera>
        <d:keyboard>nokeys</d:keyboard>
        <d:nav>nonav</d:nav>
        <d:ram unit="GiB">1</d:ram>
        <d:buttons>hard</d:buttons>
        <d:internal-storage unit="GiB">16</d:internal-storage>
        <d:removable-storage unit="GiB">32</d:removable-storage>
        <d:cpu>Generic CPU</d:cpu>
        <d:gpu>Generic GPU</d:gpu>
        <d:abi>
          armeabi-v7a
          armeabi
        </d:abi>
        <d:dock/>
        <d:power-type>battery</d:power-type>
      </d:hardware>
      <d:software>
        <d:api-level>10-</d:api-level>
        <d:live-wallpaper-support>true</d:live-wallpaper-support>
        <d:bluetooth-profiles>
          HSP
          HFP
          A2DP
          AVRCP
          OPP
          PBAP
          HID
        </d:bluetooth-profiles>
        <d:gl-version>2.0</d:gl-version>
        <d:gl-extensions>
          <!-- No clue why the tool is unhappy declaring these, but it is.  (Doesn't complain about their presence in the 'official' devices.)  Comment them out for now.
          GL_OES_rgb8_rgba8
          GL_OES_depth24
          GL_OES_vertex_half_float
          GL_OES_texture_float
          GL_OES_texture_half_float
          GL_OES_element_index_uint
          GL_OES_mapbuffer
          GL_OES_fragment_precision_high
          GL_OES_compressed_ETC1_RGB8_texture
          GL_OES_EGL_image
          GL_OES_EGL_image_external
          GL_OES_required_internalformat
          GL_OES_depth_texture
          GL_OES_get_program_binary
          GL_OES_packed_depth_stencil
          GL_OES_standard_derivatives
          GL_OES_vertex_array_object
          GL_OES_egl_sync
          GL_EXT_multi_draw_arrays
          GL_EXT_texture_format_BGRA8888
          GL_EXT_discard_framebuffer
          GL_EXT_shader_texture_lod
          GL_IMG_shader_binary
          GL_IMG_texture_compression_pvrtc
          GL_IMG_texture_npot
          GL_IMG_texture_format_BGRA8888
          GL_IMG_read_format
          GL_IMG_program_binary
          GL_IMG_multisampled_render_to_texture
          -->
        </d:gl-extensions>
        <d:status-bar>true</d:status-bar>
      </d:software>
      <d:state default="true" name="Portrait">
        <d:description>The device in portrait orientation</d:description>
        <d:screen-orientation>port</d:screen-orientation>
        <d:keyboard-state>keyssoft</d:keyboard-state>
        <d:nav-state>nonav</d:nav-state>
      </d:state>
      <d:state name="Landscape">
        <d:description>The device in landscape orientation</d:description>
        <d:screen-orientation>land</d:screen-orientation>
        <d:keyboard-state>keyssoft</d:keyboard-state>
        <d:nav-state>nonav</d:nav-state>
      </d:state>
    </d:device>
    
  7. 重新打开 AVD 管理器并返回设备定义选项卡,选择三星 Galaxy SII 设备并选择创建 AVD。将其命名为您认为合适的名称并点击“确定”。(同样,我们将覆盖它,所以不要太担心设置。)

  8. 关闭 AVD 管理器并在您喜欢的文本编辑器中打开文件 C:\Users\[user name]\.android\avd\[avd name]\config.ini

  9. 将文件的内容替换为以下内容:

    avd.ini.encoding=ISO-8859-1
    abi.type=armeabi
    hw.accelerometer=yes
    hw.audioInput=yes
    hw.battery=yes
    hw.cpu.arch=arm
    hw.device.hash=-1902399403
    hw.device.manufacturer=Samsung
    hw.device.name=Samsung Galaxy SII
    hw.dPad=no
    hw.gps=yes
    hw.gsmModem=yes
    hw.keyboard=no
    hw.lcd.density=240
    hw.mainKeys=yes
    hw.ramSize=1024M
    hw.sdCard=yes
    hw.sensors.orientation=yes
    hw.sensors.proximity=yes
    hw.touchScreen=yes
    hw.trackBall=no
    image.sysdir.1=platforms\android-10\images\
    skin.dynamic=yes
    skin.name=galaxy_s2
    skin.path=platforms\android-10\skins\GALAXY_S2
    vm.heapSize=32
    disk.dataPartition.size=2G
    hw.camera.back=webcam0
    sdcard.size=200M
    
  10. 您可能需要编辑最后 3 个条目以更改可用存储空间以及如何/是否更改相机。我发现如果我将 disk.dataPartition.size 设置为应有的大小(16G),模拟器将无法正常启动。sdcard.size 也是一样,最大可以到 32G。如果您愿意,可以将 hw.camera.back 设置为“None”或“Emulated”。同样,检查 hw.device.hash 值是否与原始文件中的值相同。如果它不同,则该文件将不起作用。

祝你好运。

于 2013-01-07T03:54:05.857 回答
32

执行以下操作来创建三星 Galaxy S2 皮肤:

  1. 从三星页面下载皮肤(按照 anshumans 发布的链接)
  2. 转到目录[Android-SDK directory]/platforms/android-10/skins
  3. 创建一个名为 GALAXY_S2 的新目录
  4. 将下载的 ZIP 文件中的所有文件解压缩到新目录
  5. 编辑文件manifest.ini并将行更改api=9api=10
  6. 启动 AVD 并单击“新建...”
  7. 在目标下选择“Android 2.3.3 - API Level 10”
  8. 在皮肤下从下拉列表中选择“GALAXY_S2”
  9. 单击“创建 AVD”

您可能已经注意到,AVD 将基于 Android API 10 级别。因此,例如,如果您选择目标 Android API 级别 16,则不会显示 Galaxy S2 皮肤。

于 2012-07-10T20:33:44.800 回答
16

三星在他们的开发者网站上有 S II 皮肤

于 2012-05-21T22:45:55.830 回答
1

您可以从三星的开发网站http://developer.samsung.com/technical-doc/view.do?v=T000000075&pi=1&ps=10&pb=Y&ct=CT350000&sc=下载并添加 s2 模拟器

还有关于如何使用它们的详细说明 - http://developer.samsung.com/technical-doc/view.do?v=T000000095

于 2015-05-12T05:33:23.077 回答
0

我不是盲目复制粘贴的忠实粉丝。此外,最佳答案引用了第二个,而第二个又引用了第三个;最后,SDK Tools v24.1.2 有一些新的变化,这意味着如果您不测试蓝牙,则绝对不需要编辑文件。因此,我想我会发布一个更新和整合的解决方案。完全归功于anshumansmwalterLloyd和评论者

路径使用 Windows 约定。OS X/Linux 用户通常只需将反斜杠 (\) 切换为正斜杠 (/),安装文件夹除外。这些环境变量可能会或可能不会在您的系统上设置:

<ADT_HOME>AVD Manager.exe(默认为C:\Program Files (x86)\Android\android-sdk)的位置

<ANDROID_SDK_HOME>.android是AVD 用来存储设备定义的文件夹的位置(默认为HOMEPATH[并且与您的 SDK 的位置无关 :)])


三星皮肤

三星的开发者网站包含许多皮肤的链接,包括 S2;它还包含使用带有ADT 插件的Eclipse 安装它们的说明,这是不必要的,已被Android Studio取代。要获得 S2 皮肤,请使用三星页面上的链接,然后单击带有软盘符号的 Zip 文件(或单击此处)。

如果您没有使用三星的 Eclipse 安装说明,则步骤如下:

  1. 确定您所针对的 Android 版本。请注意,S2 是在 API 级别 9(姜饼)上发布的,并且皮肤反映了这一点。以后的版本和更新包括 API 级别 10、15 和 16。(根据Wikipedia)。
  2. 您在上面步骤 1 中选择的目标在哪里??,将下载的 zip 文件的内容提取到新文件夹(例如Galaxy_S2)下

      <ADT_HOME>\platforms\android-??\skins
    
  3. 编辑提取的manifest.ini,更改行api=9以反映其当前位置(例如api=15)。(这实际上似乎没有必要,但在我确认之前留了下来。)
  4. 对要测试的每个版本重复步骤 1-3。

设备定义

选择 AVD Manager 上的Device Definitions选项卡,然后单击Create Device...按钮。在创建新设备屏幕上,

  • 接受所有默认值,除非另有说明
  • 名称:三星 Galaxy SII(或其他)
  • 屏幕尺寸:4.3(或 I9210 型号为 4.5)
  • 分辨率:480x800
  • 内存:1024 MiB(或 1 GiB)
  • 密度:hdpi
  • 按钮:硬件
  • 点击创建设备

<ANDROID_SDK_HOME>\.android\devices.xml将使用您的新设备定义进行更新。

作为一般规则,除非您基于它创建大量 AVD,否则您不必手动编辑devices.xml. 另请注意,为匹配 SII 的硬件而提出的许多编辑实际上没有最终结果。如果您确实希望进行编辑,请首先关闭 AVD 管理器(以及 Eclipse IDE,如果适用)。

  • 找到d:device您刚刚创建的节点<d:name>Samsung Galaxy SII</d:name>

    • d:manufacturer(可选)将值从用户更改为三星
    • d:networking(可选)删除/注释掉 NFC(例如<!-- NFC -->),除非您想针对包含它的稀有模型进行测试
    • d:sensors删除气压计线
    • d:internal-storage(可选)将值从 4 更改为 16(或 32),但在创建 AVD 时无论如何都会忽略它
    • d:removable-storage不需要添加这个,因为它被忽略了
    • d:abi无需削减它,因为它被忽略了
    • d:bluetooth-profiles将自闭标签替换为

      <d:bluetooth-profiles>
          HSP
          HFP
          A2DP
          AVRCP
          OPP
          PBAP
          HID
      </d:bluetooth-profiles>
      
    • d:status-bar将值更改为真

    • d:nav-state将两个条目(在纵向和横向下)更改为“nonav”

Android 虚拟设备 (AVD) 定义(最终)

重新启动 AVD 管理器

  1. 选择您刚刚创建的设备定义
  2. 单击创建 AVD...

或者

  1. 单击虚拟设备选项卡上的创建...
  2. 选择您在设备下创建的定义

然后

  1. 除非另有说明,否则接受所有默认值
  2. AVD名称:AVD_for_Samsung_Galaxy_SII(或其他)
  3. 设备:已设置为您的设备定义的名称
  4. 目标:选择适当的 API 级别——此时我通常也将其附加到 AVD 名称中
  5. CPU/ABI:ARM
  6. 键盘:取消选中/禁用“存在硬件键盘”
  7. 皮肤:Galaxy_S2(如果您在所选目标 API 下提取皮肤)
  8. 后置摄像头:网络摄像头0(或其他任何东西;你在与它互动吗?)
  9. RAM : 如果在 Windows 上考虑降低到 768
  10. 内部存储:虽然 SII 有 16GB 和 32GB 两种,但考虑保留 200MiB。
  11. SD 卡大小:留空,除非它是您测试的一部分。它越大,所需的资源就越多。(考虑 200MiB)

要在 Windows 上进行更快的仿真,请考虑在 Windows 功能中禁用 HyperV 并启用 HAXM。如果这样做,请更改以下内容:

  1. CPU/ABI:选择任何英特尔

    仿真:选中/启用“使用主机 GPU”

单击确定。

<ANDROID_SDK_HOME>\avd\<AVD_NAME>.avd\config.ini反映了您上面的所有设置(AVD_NAME您在 4. 中设置的内容在哪里)。劳埃德给出的例子只显示了一个区别skin.dynamic=yes- 我在运行时看不到区别。

于 2015-04-27T09:17:45.800 回答
0

虽然票数最高的答案是正确的,但您很可能最终会遇到分辨率显示问题,这将损害您想要测试/开发的几乎所有应用程序。

为了解决该特定问题,您还需要更改此设置:

hw.lcd.density

它位于 AVD 皮肤的 hardware.ini 中。你可以在这里找到它:

<ANDROID_SDK_PATH>\sdk\platforms\android-<APIversion>\skins\<YourSkin>\hardware.ini

300218

于 2014-05-31T22:05:25.393 回答