`
kryptonum
  • 浏览: 97692 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

编译Windows版Android Emulator(Cupcake)

阅读更多

Android SDK提供了一个基于Qemu的模拟器来模拟Android系统的智能手机,得益于Qemu的跨平台特性,不论是Linux、Mac OS还是Windows的用户都可以通过模拟器大大提高开发效率。不过归根结底,Qemu还是在类Unix平台上发展起来的项目,所以在Windows平 台上的编译还是值得一看。Google在git上描述如何编译Android Eclipse插件ADT的时候顺带提到了如何构建Windows版的Android SDK,国内也有朋友写了构建Windows版的Android SDK(此为转帖,原作者blog已无法访问)的文章,但是对于如何单独构建Windows版的Android模拟器目前并没有任何官方的文档提及,William只是在网络上找到一些零碎的讨论,今天就结合自己的实践整理出来和大家共享。

在Windows下编译Android模拟器的两种方法

Android给出的构建Windows版SDK的make_windows_sdk.sh脚本中,包含有make -j 4 emulator,即编译模拟器的命令,所以看起来模拟器能在Cygwin环 境下构建出来的。另外,由于Android模拟器是基于Qemu,Android只是在其基础上添加了新的虚拟设备,定义了自己的skin机制等,所以只 要是标准Qemu能够正常编译的环境,Android模拟器也就没有问题。The QEMU forum有一篇很详尽的关于在Windows环境编译Qemu的文章,Step-by-step QEMU compilation under Windows ,是在MinGW/MSYS下完成的,因而在MinGW/MSYS环境下构建看来也可行。

既然使用make_windows_sdk.sh依赖的Cygwin看起来更像是官方制作SDK发布的环境,那么它应当是几乎100% working,下面还是先来尝试一下非官方的做法吧。

MinGW/MSYS环境的准备

MinGW和MSYS的环境不算复杂,官方网站也有详细的帮助文档,下面就说说我的安装过程。

需要下载的安装包包括:
1、MinGW-5.1.4.exe, 这是MinGW的自动安装工具(Automated MinGW Installer)
2、MSYS-1.0.11.exe
3、msysDTK-1.0.1,MSYS Developer Tool Kit,包括autoconf、automake、libtool、cvs等工具
4、pthreads-w32-2-8-0-release.exe,emulator所需要的pthread库。

zlib、libpng、SDL以及它依赖的directx-devel库就不需要下载了,zlib和libpng已经包含在Android Emulator源码包中,SDL我们也可以用Android Prebuilt中提供的binary,稍后会给出链接。

安装MinGW时,除非有特别的需要,我们安装常用的gcc core、g++编译器就行。如果网络条件实在不好,可以打开mingw.ini找出文件名,然后通过下载工具到MinGW网站下载。另外值得一提的是,MinGW为了更好的管理软件包的发布,使用了current、previous和candidate来区分不同版本软件包的组合,这里我选择的是current,gcc版本为3.4.5。安装路径随意,这里假设是c:\mingw

安装MSYS时会询问是否有安装MinGW,选择Y的话会要求输入MinGW的安装路径,输入之后很快就可以完成MSYS安装。这里我们假设MSYS的安装路径是c:\msys。 接下来安装好msysDTK-1.0.1,我们就可以通过桌面上的快捷方式来进入MSYS了。这里我们要通过“ls /mingw”命令确认一下MinGW是否被正确挂载到MSYS的/mingw目录,如果可以看到bin、doc、include等目录就说明挂载成功, 否则请检查MSYS安装目录中etc下的fstab文件,格式请参考fstab.sample。挂载成功以后,试试“gcc -v”,能够正常返回gcc version 3.4.5等字样,我们就可以进入到下一步了。

取得Android Emulator源代码和Prebuilt中的SDL库

请参考我之前的文章Git和Repo扫盲——如何取得Android源代码来取得Android Emulator源代码和Prebuilt中的SDL库,或者你也可以简单的从GitWeb下载EmulatorPrebuilt的snapshot版本。

下载完成以后,把Emulator解压缩到c:\msys\home\< 当前登陆的用户名 >目录下,Prebuilt我们只需要其中Windows目录下的sdl目录就可以了,同样放到c:\msys\home\< 当前登陆的用户名 >目录。

这里有必要提一下Android Emulator的build system,在Google发布的源码包android-emulator-1.0_r2.tar.bz2中, 我们可以很方便的使用build-emulator.sh脚本来编译(中间可能会遇到些问题),在这个脚本中我们可以看到,构建Emulator的脚本是 android-rebuild.sh,而它则会调用同一目录下的android-configure.sh来完成configure。回到 Cupcake中的External/qemu目录,我们可以看到android-rebuild.sh和android-configure.sh这两 个脚本同样存在(一开始我确实是以为只有以源码包形式发布的Emulator中才包含了这几个脚本),所以我们可以在编译整个Android Cupcake代码树时编译Emulator,同样也利用这个平行的build system来单独的构建Emulator。从这个角度来说,单独的构建Emulator,无论是Cygwin还是MinGW/MSYS,方法就不会有什 么差别了。

编译Android Emulator的过程

做好前面的几步之后,打开MSYS,进入到Emulator(qemu)目录,执行./android-rebuild.sh –sdl-config=/home/< 当前登陆的用户名 >/sdl/bin/sdl-config 命令即可,它会自动调用android-configure.sh脚本进行configure,随后开始编译,–sdl-config则指定了sdl库的 路径。

这里我们可能遇到的问题是缺少libpthread,如果遇到的话解开pthreads-w32-2-8-0-release.exe,把Pre- built.2中的libpthreadGC2.a改名为libpthread.a复制到c:\mingw\lib目录,pthread.h复制到c: \mingw\include目录即可解决。

除此之外,编译Cupcake中的Android Emulator相当的顺利,之前编译android-emulator-1.0_r2.tar.bz2时遇到过的“unsupported cpu”, “bad ELF header”等错误都没有遇到。

测试生成的Android Emulator

测试生成的emulator.exe能否正常工作,最简单的办法就是把它复制到当前安装好的Android SDK的tools目录下,连-kernel,-ramdisk,-system这些参数都省的加了。新建一个avd,比如“test_avd”,然后在 控制台运行“emualtor.exe @test_avd” 即可,如果有什么不正常,加上-debug-all和-show-kernel参数可以有助debug。

好了,有图有真相!标题栏中的“Build with MSYS/MINGW”是我自己加的。



 
欢迎留言提问!

 

本文同时发布在我的blog上, http://www.williamhua.com/2009/07/22/build-android-emulator-for-windows/

  • 大小: 204.9 KB
分享到:
评论

相关推荐

    android emulator数据库文件查看软件

    标题中的“android emulator数据库文件查看软件”指的是在Android模拟器中用于查看SQLite数据库文件的工具。在Android系统中,SQLite是一种轻量级的、关系型的数据库,常用于存储应用程序的数据。开发者或测试人员...

    Android emulator 谷歌手机模拟器入门

    ### Android Emulator 谷歌手机模拟器入门详解 #### 引言 在现代软件开发领域,尤其是移动应用开发中,模拟器扮演着至关重要的角色。对于Android开发者而言,掌握如何使用Android Emulator(谷歌手机模拟器)是基础...

    在Android Emulator上安装App Market-g

    在Android Emulator上安装App Market-g是一个常见的任务,特别是对于开发者和测试人员而言,他们需要在模拟器上体验和测试各种应用。这篇文章将详细介绍如何在Android Emulator中安装Market-g,以便获取更多的应用...

    Ubuntu下编译Android源码并运行Emulator2.pdf

    Ubuntu 下编译 Android 源码并运行 Emulator 2 在 Ubuntu 环境中编译 Android 源码并运行 Emulator 2 需要经过多个步骤,包括安装环境、设置环境变量、安装 repo、下载 Android 源码、编译 Android 源码等。 一、...

    android emulator using command line

    - 在Windows系统中,可以通过开始菜单中的“运行”命令打开命令提示符(CMD),输入“cmd”并按回车键。 2. **进入指定目录**: - 使用`cd &lt;sdk_root&gt;/platform-tools`命令切换到含有adb工具的目录。 3. **执行...

    如何快速启动安卓模拟器(Android_Emulator)

    快速启动安卓模拟器(Android_Emulator)的方法 Android 模拟器是一种非常有用的工具,对于 Android 应用程序的开发和测试来说非常重要。然而,每次启动 Android Emulator 都需要等待很长一段时间,几分钟甚至十几...

    android编译系统分析(很详细)

    Android 编译系统分析 Android 编译系统是 Android 操作系统的核心组件之一,它负责将源代码编译成可执行文件。Android 编译系统的分析对于Android 开发者来说非常重要,因为它可以帮助开发者更好地理解 Android 的...

    android emulator

    1. **下载与安装**:首先,你需要从Android开发者官方网站下载Android Studio,它内置了Android Emulator。安装完成后,打开Android Studio并创建一个新的项目或加载现有项目。 2. **配置虚拟设备(AVD, Android ...

    Android emulator

    Android模拟器是Android开发环境中的一个重要工具,它允许开发者在没有物理Android设备的情况下测试和调试应用程序。这个模拟器是Google官方提供的,与Android Studio紧密集成,为开发者提供了一个虚拟的Android设备...

    android-emulator-hypervisor-driver-for-amd-processors

    适用于 AMD 处理器的 Android Emulator Hypervisor Driver 作为 Windows 驱动程序运行。 用户空间支持适用于 AMD 处理器的 Android 模拟器管理程序驱动程序可从 Android 模拟器获得。 下载并安装 通过发行了适用于...

    emulator,允许您模拟android arm32和/或arm64本机库.zip

    Emulator在IT行业中扮演着至关重要的角色,尤其是在Android应用开发和测试中。标题中的"emulator"是指Android Emulator,它是Google提供的一款强大的工具,可以让开发者在没有物理设备的情况下运行和测试Android应用...

    ubuntu上在androidstudio中启动emulator闪退的解决方法

    在 Ubuntu 上 Android Studio 中启动 Emulator闪退的解决方法 在 Android Studio 中点击模拟器的启动按钮后,模拟器界面弹出后,又立刻闪退。这是非常常见的问题,本文将为大家分享 Ubuntu 上在 Android Studio 中...

    WINDOWS CE5 EMULATOR

    WINDOWS CE5 EMULATOR,need sdk support where microsoft cite

    emulator.exe(Android SDK tools下文件)

    **Android SDK中的emulator.exe详解** 在Android应用开发过程中,Android SDK(Software Development Kit)扮演着至关重要的角色。它提供了一系列工具,使得开发者能够在没有实际设备的情况下,通过模拟器(Android...

    Windows Mobile Device Emulator v1.0 Share Source

    《深入解析Windows Mobile Device Emulator v1.0 Share Source》 Windows Mobile Device Emulator v1.0 Share Source,是微软发布的一个重要的开发工具,它允许开发者在桌面环境中模拟Windows Mobile设备的功能,...

    如何单独编译Android源代码中的模块

    USER-NAME@MACHINE-NAME:~/Android$ emulator 这样,一切就搞定了。 使用 Android 提供的命令可以快速地编译和管理模块,从而提高开发效率。在编译和管理模块时,我们需要注意模块的依赖关系和编译顺序,以免出现...

    AndroidAuto Desktop Head Unit Emulator

    Android Auto Desktop Head Unit Emulator(DHU)是谷歌推出的一款强大的工具,专为开发者设计,用于测试和调试针对Android Auto平台的应用程序。Android Auto是一种车载信息娱乐系统,它允许用户在驾驶时安全地与...

    android-sdk-windows\\tools 解决更新后任务栏图标显示异常问题用的emulator.exe文件

    标题中的“android-sdk-windows\\tools”指的是Android开发者工具包在Windows操作系统中的路径,这个工具包是Android开发必不可少的一部分。在Android SDK中,“tools”目录包含了各种用于开发、测试和调试Android...

Global site tag (gtag.js) - Google Analytics