扣丁书屋

制作可独立分发的Android模拟器

如果我们编写了一个Android应用程序,想在一台没有Android SDK或者BUILD环境的机器显示给别人看,应该怎么办呢?通常,我们开发Android应用程序的时候,都是使用模拟器来运行程序,要么是SDK环境下,要么是在源代码BUILD环境下使用。在SDK环境下,结合Eclipse和ADT,使用模拟器很方便,而BUILD环境下,也是很简单地使用emulator命令就可以了,具体可以参考在Ubuntu上下载、编译和安装Android最新源代码一文。这篇文章介绍另外一种方法在Windows下环境下使用Android模拟器,它不依赖于SDK或者BUILD环境,可以独立分发和使用。

要运行Android模拟器emulator,只要具备4个系统镜像就可以了,分别是system.img、userdata.img、ramdisk.img和kernel-qemu,这4个文件均可以在从SDK环境中得到,此外,最好还要添加模拟器皮肤和adb工具,这样功能才算完整。以下介绍具体制方法。

一. 下载Android SDK。官方下载http://dl.google.com/android/android-sdk_rXX-windows.zip,XX是指你要下载的版本号,例如我下载的是08。此链接可能已经被和谐,,可以在网上搜索一下,用其它办法下载。下载好之后,运行SDK Manager工具,下载完整的SDK。假设SDK放在D:\android-sdk-windows目录下。

二. 新建一个目录,例如,在D盘下新建目录D:\AndroidEmulator。进入到D:\android-sdk-windows\tools目录下,将emulator.exe拷拷贝到D:\AndroidEmulator中,同时进入到D:\android-sdk-windows\platform-tools目录下,拷贝adb.exe和AdbWinApi.dll两个文件到D:\AndroidEmulator中。注意,有的SDK把adb.exe和AdbWinApi.dll放在D:\android-sdk-windows\tools目录下。

三. 在D:\AndroidEmulator新建目录images,用来存放上面提到的4个系统镜像。例如要制作Android2.1模拟器,则到D:\android-sdk-windows\platforms\android-7\images目录下,把里面的文件全部拷贝到D:\AndroidEmulator\images目录下,D:\android-sdk-windows\platforms\android-7\images目录包含了system.img、userdata.img、ramdisk.img和kernel-qemu这4个文件。

四. 在D:\AndroidEmulator新建目录skins,用来存放模拟器皮肤文件。继续以制作Android2.1模拟器为例,到D:\android-sdk-windows\platforms\android-7\skins目录下,把里面所有的文件夹拷贝到D:\AndroidEmulator\skins目录下,D:\android-sdk-windows\platforms\android-7\skins目录包含了模拟器皮肤文件。

五. 启动命令行窗口,进入到D:\AndroidEmulator目录,执行以下命令:

D:\AndroidEmulator>start /b emulator.exe -sysdir d:\AndroidEmulator -system images\system.img -data images\userdata.img -ramdisk images\ramdisk.img -kernel images\kernel-qemu -skindir d:\AndroidEmulator\skins -skin HVGA

start /b表示在后台运行emulator,其它emulator命令选项请执行emulator -help查看。这样,模拟器就运起来了。

六. 如果要在模拟器上安装APK程序,则执行adb install XXX.apk命令,运行adb install命令时,如果遇到下面输出:

**D:\AndroidEmulator>adb install Renju.apk

  • daemon not running. starting it now on port 5037 *
  • daemon started successfully * error: device offline**

不用理会,重新运行,直到提示成功为止。

这样,如果我们编写了一个Android应用程序,想拿到一台没有Android SDK和Android Build环境的机器上显示给别人看,就可以打包D:\AndroidEmulator这个文件夹,再带上你的Android应用程序,就可以显示了,是不是很方便呢。

附我自己制作的一个Android2.1模拟器,可以下载使用:

程序员联合开发网:http://www.pudn.com/downloads367/sourcecode/comm/android/detail1590288.html

新浪爱问:Part-1:http://ishare.iask.sina.com.cn/f/16902616.html

Part-2:http://ishare.iask.sina.com.cn/f/16902614.html

ART运行时Compacting GC堆创建过程分析

发布于:2年以前  |  3174次阅读  |  详细内容 »

Android系统进程间通信Binder机制在应用程序框架层的Java接口源代码分析

在前面几篇文章中,我们详细介绍了Android系统进程间通信机制Binder的原理,并且深入分析了系统提供的Binder运行库和驱动程序的源代码。细心的读者会发现,这几篇文章分析...

发布于:2年以前  |  1983次阅读  |  详细内容 »

Android应用程序窗口(Activity)的运行上下文环境(Context)的创建过程分析

在前文中,我们简要介绍了Android应用程序窗口的框架。Android应用程序窗口在运行的过程中,需要访问一些特定的资源或者类。这些特定的资源或者类构成了Android应用程序的...

发布于:2年以前  |  1700次阅读  |  详细内容 »

解开Android应用程序组件Activity的"singleTask"之谜

在Android应用程序中,可以配置Activity以四种方式来启动,其中最令人迷惑的就是"singleTask"这种方式了,官方文档称以这种方式启动的Activity总是属于一个任务的根Activit...

发布于:2年以前  |  1379次阅读  |  详细内容 »

ART运行时Mark-Compact( MC)GC执行过程分析

除了Semi-Space(SS)GC和Generational Semi-Space(GSS)GC,ART运行时还引入了第三种Compacting GC:Mark-Compact(MC)GC。这三种GC虽然都是Compacting GC,不过它们的...

发布于:2年以前  |  2426次阅读  |  详细内容 »

Android系统匿名共享内存Ashmem(Anonymous Shared Memory)在进程间共享的原理分析

在前面一篇文章Android系统匿名共享内存Ashmem(Anonymous Shared Memory)驱动程序源代码分析中,我们系统地介绍了Android系统匿名共享内存的实现原理,其中着重介绍了它...

发布于:2年以前  |  2563次阅读  |  详细内容 »

Android窗口管理服务WindowManagerService的简要介绍和学习计划

在前一个系列文章中,我们从个体的角度来分析了Android应用程序窗口的实现框架。事实上,如果我们从整体的角度来看,Android应用程序窗口的实现要更复杂,因为它们的类型和...

发布于:2年以前  |  3685次阅读  |  详细内容 »

Android应用程序组件Content Provider的共享数据更新通知机制分析

在Android系统中,应用程序组件Content Provider为不同的应用程序实现数据共享提供了基础设施,它主要通过Binder进程间通信机制和匿名共享内存机制来实现的。关于数据共享...

发布于:2年以前  |  3015次阅读  |  详细内容 »

Dalvik虚拟机为新创建对象分配内存的过程分析

在前面一文中,我们分析了Dalvik虚拟机创建Java堆的过程。有了Java堆之后,Dalvik虚拟机就可以在上面为对象分配内存了。在Java堆为对象分配内存需要解决内存碎片和内存不足...

发布于:2年以前  |  1621次阅读  |  详细内容 »

Dalvik虚拟机JNI方法的注册过程分析

在前面一文中,我们分析了Dalvik虚拟机的运行过程。从中可以知道,Dalvik虚拟机在调用一个成员函数的时候,如果发现该成员函数是一个JNI方法,那么就会直接跳到它的地址去...

发布于:2年以前  |  3290次阅读  |  详细内容 »

Android日志系统Logcat源代码简要分析

在前面两篇文章Android日志系统驱动程序Logger源代码分析和Android应用程序框架层和系统运行库层日志系统源代码中,介绍了Android内核空间层、系统运行库层和应用程序框架...

发布于:2年以前  |  2243次阅读  |  详细内容 »

Dalvik虚拟机Java堆创建过程分析

发布于:2年以前  |  3066次阅读  |  详细内容 »

ART运行时Java堆创建过程分析

发布于:2年以前  |  3043次阅读  |  详细内容 »

Android应用程序注册广播接收器(registerReceiver)的过程分析

前面我们介绍了Android系统的广播机制,从本质来说,它是一种消息订阅/发布机制,因此,使用这种消息驱动模型的第一步便是订阅消息;而对Android应用程序来说,订阅消息其...

发布于:2年以前  |  2302次阅读  |  详细内容 »

Android应用程序启动过程源代码分析

前文简要介绍了Android应用程序的Activity的启动过程。在Android系统中,应用程序是由Activity组成的,因此,应用程序的启动过程实际上就是应用程序中的默认Activity的启动...

发布于:2年以前  |  3853次阅读  |  详细内容 »

Android源代码仓库及其管理工具Repo分析

发布于:2年以前  |  2102次阅读  |  详细内容 »

最多阅读

Android包管理框架:APK的打包流程 2年以前  |  4520次阅读
Android应用程序启动过程源代码分析 2年以前  |  3853次阅读
Android包管理框架:APK的安装流程 2年以前  |  3712次阅读
Android应用程序安装过程源代码分析 2年以前  |  3677次阅读
Dalvik虚拟机垃圾收集(GC)过程分析 2年以前  |  3530次阅读
Android应用优化:启动优化 2年以前  |  3332次阅读
Dalvik虚拟机JNI方法的注册过程分析 2年以前  |  3290次阅读

手机扫码阅读