qemuandroid
用最新的Ubuntu 16.04,请首先确保自己已经安装了Git.没安装的同学可以通过以下命令进行安装:
sudo apt-get install git git config –global user.email “[email protected]” git config –global user.name “test”
其中[email protected]为你自己的邮箱.
简要说明
android源码编译的四个流程:1.源码下载;2.构建编译环境;3.编译源码;4运行.下文也将按照该流程讲述.
源码下载
由于某墙的原因,这里我们采用国内的镜像源进行下载.
目前,可用的镜像源一般是科大和清华的,具体使用差不多,这里我选择清华大学镜像进行说明.(参考:科大源,清华源)
repo工具下载及安装
通过执行以下命令实现repo工具的下载和安装
mkdir ~/binPATH=~/bin:$PATHcurl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repochmod a+x ~/bin/repo
补充说明
这里,我来简单的介绍下repo工具,我们知道AOSP项目由不同的子项目组成,为了方便进行管理,Google采用Git对AOSP项目进行多仓库管理.在聊repo工具之前,我先带你来聊聊多仓库项目:
我们有个非常庞大的项目Pre,该项目由很多个子项目R1,R2,...Rn等组成,为了方便管理和协同开发,我们为每个子项目创立自己的仓库,整个项目的结构如下:
这里写图片描述
执行完该命令后,再使用make命令继续编译.某些情况下,当你执行jack-admin kill-server时可能提示你命令不存在,此时去你去out/host/linux-x86/bin/目录下会发现不存在jack-admin文件.如果我是你,我就会重新repo sync下,然后从头来过.
错误三:使用emulator时,虚拟机停在黑屏界面,点击无任何响应.此时,可能是kerner内核问题,解决方法如下:
执行如下命令:
通过使用kernel-qemu-armv7内核 解决模拟器等待黑屏问题.而-partition-size 1024 则是解决警告: system partion siez adjusted to match image file (163 MB >66 MB)
如果你一开始编译的版本是aosp_arm-eng,使用上述命令仍然不能解决等待黑屏问题时,不妨编译aosp_arm64-eng试试.
结束吧
到现在为止,你已经了解了整个android编译的流程.除此之外,我也简单的说明android源码的多仓库管理机制.下面,不妨自己动手尝试一下.
‘贰’ android模拟器中命令参数主要有哪些
1、Help
-help打印模拟器参数列表。
-help-all打印所有启动参数明细。
-help-<option>打印指定启动参数的信息。
-help-debug-tags打印所有被-debug <tags>打开的列表。
-help-disk-images打印正在使用的磁盘镜像信息。
-help-environment打印模拟器环境变量信息。
-help-keys打印当前的键盘映射。
-help-keyset-file打印一个自定义的键盘映射文件的定义。
2、Disk Images
-cache <filepath>使用<filepath> 指定网络缓存分区镜像。自定义,您可以指定一个当前工作目录的相对路径。如果没有指定缓存文件,模拟器会指定一个零时文件作为缓存文件。
-data <filepath>使用<filepath>作为用户数据磁盘镜像。自定义,您可以指定一个当前工作目录的相对路径。如果-data没有被使用,模拟器会在<datadir>指定的目录下寻找名叫"userdata-qemu.img"的镜像文件。默认情况下,模拟器会寻找~/.android (on Linux/Mac)或者C:/Documents and Settings/<user>/Local Settings/Application Data/Android (on Windows)。如果您使用了-data <filepath>,但是文件并不存在,模拟器将创建同名文件。
-image <filepath>使用<filepath>作为系统镜像。自定义,您可以指定一个当前工作目录的相对路径。默认为<system>/system.img。
-initdata <filepath>重写用户数据镜像时,(使用 -wipe-data),复制此文件内容到新用户数据文件镜像中。默认方式下,模拟器拷贝<system>/userdata.img。自定义,您可以指定一个当前工作目录的相对路径。
-kernel <filepath>使用<filepath>作为模拟器内核。自定义,您可以指定一个当前工作目录的相对路径。
-nocache启动模拟器时无缓存分区。
-ramdisk <filepath>使用<filepath>作为虚拟内存镜像。默认<system>/ramdisk.img. 自定义,您可以指定一个当前工作目录的相对路径。
-sdcard <filepath>使用<file>作为SD卡镜像。默认为<system>/sdcard.img. 自定义,您可以指定一个当前工作目录的相对路径。
-system <dirpath>在指定的<dir>下搜索系统、虚拟内存和用户数据镜像文件。<dir>为当前路径的相对目录。
-wipe-data重至用户数据镜像文件。(that is, the file specified by -datadir and -data, or the default file)。 模拟器删除所有用户数据,然后复制右-inidata参数指定的数据到镜像文件,在启动之前。
3、Debug
-debug <tags>开启/关闭指定tag的调试信息。
<tags>是一个被空格/逗号/纵列所分割的调试组建名称列表。
-debug-<tag>开启/关闭指定tag的调试信息。使用-help-debug-tags获得您可以指定为<tag>的调试组件列表。
-debug-no-<tag>关闭指定tag的调试信息。
-logcat <logtags>打开指定tag的日志输出。如果环境变量ANDROID_LOG_TAGS被指定且不为空,她的值将成为日志输出的默认值。
-shell创建一个拥有root权限的命令行窗口。即使模拟器的UI界面无法使用了,您依然可以使用命令行窗口。按Ctr-c键中断模拟器运行。
-shell-serial <device>打开具有root权限的脚本窗口。<device>必须是一个QEMU类型的设备。
-show-kernel <name>显示内核信息。
-trace <name>Enable code profiling (press F9 to start), written to a specified file.
-verbose开启冗长输出。Equivalent to -debug-init. 您可以定义ANDROID_VERBOSE环境变量作为冗长输出参数。定义你想用到的参数,用逗号分割。这样可以省略像-debug-<tags>这样的参数。
4、Media
-audio <backend>使用指定的音频后端。
-audio-in <backend>使用指定的音频输入后端。
-audio-out <backend>使用指定的音频输出后端。
-noaudio在当前虚拟机实例中关闭音频支持。
-radio <device>重新定向收音机接口到本地的字节设备。
-useaudio打开模拟器实例的音频支持。默认状态为打开。
5、Network
-dns-server <servers>使用指定的DNS服务器。<servers>必须是以逗号分割,多于4个的服务器名或IP地址。
-http-proxy <proxy>配置TCP连接使用HTTP/HTTPS代理。
<proxy>必须符合以下格式:http://<server>:<port>
http://<username>:<password>@<server>:<port> 前缀http://可以被忽略。如果-http-proxy <proxy>未被指定,模拟器将寻找http_proxy环境变量,并且自动寻找所有符号格式要求的<proxy> 值。
-netdelay <delay>设置网络延迟默认值为none。
-netfast快捷的 -netspeed full -netdelay none
-netspeed <speed>指定模拟器网络速度为<speed>,默认值为full。
-port <port>指定模拟器网络端口为<port>,控制台端口号必须介于5554和5584之间,并且<port>+1必须留作ADB使用。
-report-console <socket>启动前向第三方同志此模拟器实例的网络端口。<socket> 必须是以下几种格式:
tcp:<port>[,server][,max=<seconds>]
unix:<port>[,server][,max=<seconds>]
6、System
-cpu-delay <delay>降低模拟器CPU的速度到<delay>。<delay>支持0到100的整数。注意<delay>与具体的时钟或其他的绝对频率无关。它只表现为一种抽象的,相对于当前模拟器运行状况的速度调节。
-gps <device>重定向NMEA GPS到字节设备。
使用此参数通知模拟器模拟一个NMEA-compatible GPS,连接到一个扩展的设备或socket端口。<device>格式必须符合QEMU-specific所指定的设备格式。
-nojni在Dalvik运行时关闭JNI检查
-qemu传递参数到qemu。
-qemu -h关闭qemu帮助。
-radio <device>重定向录音机模块到制定的字符设备。<device>格式必须符合QEMU规定的序列设备。
-timezone <timezone>设定模拟器时区为<timezone>,替换为系统时区。<timezone>必须按照时区格式指定。比如:"America/Los_Angeles","Europe/Paris"
-version显示模拟器版本号。
7、UI
-dpi-device <dpi>修改模拟器的分辨率适配物理设备。默认值为165。参见-scale.
-no-boot-anim关闭模拟器启动时的动画。禁用启动动画可以加快启动速度。
-no-window关闭模拟器的绘制窗口。
-scale <scale>调整模拟器窗口。<scale> 是介于0.1到3的数字,它是调整屏幕的比例因子。您也可以指定一个DPI值,在添加dpi前缀的情况下。Auto参数告诉模拟器选择自己最合适的尺寸。
-raw-keys关闭Unicode键盘reverse-mapping.
-noskin不使用任何模拟器皮肤。
-keyset <file>用指定的键盘设置文件代替默认。指定宿主键盘和模拟器之间的键盘映射文件。
-onion <image>用图片覆盖屏幕。不支持JPEG,只支持PNG。
-onion-alpha <percent>指定onion皮肤透明值(百分比) 默认为50.
-onion-rotation <position>指定onion皮肤旋转。<position> 必须是 0, 1, 2, 3中的一个。
-skin <skinID>启动模拟器,搭配指定皮肤。
-skindir <dir>在指定目录<dir>下搜索皮肤
以上就是android模拟器中的一些常用参数及其作用,可能还有整理得不够全面得地方,欢迎大家补充分享。
‘叁’ qemu 怎么运行 android
qemu从某种意义上功能类似于vmware/virtual box之类的软件,可以让你在当前OS中运行其它的操作系统,但是这仅仅是qemu的一种功能 qemu还可以模拟不同的cpu架构下的系统,比如在普通的个人pc上运行 arm linux之类,这个vmware之类的可能没有 关于qemu的使用 先到官网上下载qemu的源代码,目前是 1.2,如果使用的是linux系统,这个好办,直接编译安装,网上有不少说明的文档 使用的过程一般分为三步 1. 创建虚拟机文件系统 qemu-img create /f qcow2 xxx.img 10G 2. 在虚拟机文件系统中安装操作系统 qemu-system-i386 -hda xxx.img -cdrom xxx.iso -boot d 以xxx.img为文件系统,xxx.iso是系统安装ISO文件 3. 运行安装好的操作系统 qemu-system-i386 -hda xxx.img 运行xxx.img中的系统 以上的命令参数都比较简单,实际使用中需根据具体情况自己配置
‘肆’ 安卓怎么使用修改过的源码编译程序
1、Android的文件系统结构是怎样的,我们安装的程序放在那里?
编译Android源码之后,在out/target/proct/generic一些文件:
ramdisk.img、system.img、userdata.img、 system、 data、root
其中, system.img是由 system打包压缩得到的, userdata.img是由 data打包压缩得到的。
ramdisk.img是模拟器的文件系统,把ramdisk.img解压出来可知道,ramdisk.img里的文件跟root文件夹的文件基本一样。模拟器装载ramdisk.img并解压到内存,接着分别把system.img和userdata.img挂载到 ramdisk下的system和data目录。我们编译出来的应用程序就是放在system/app下的。用户安装的程序则是放在data/app下。
2、Android SDK和android源码能为我们提供什么工具?
AndroidSDK提供有很多工具,如adb,ddms,emulator,aapt等,并提供kernel-qemu、ramdisk.img、system.img、userdata.img。因此,只要有android SDK,我们就可以在模拟器上把android跑起来。
Android源码可以编译出android SDK、adb等工具、android文件系统,以及ADT插件,也就是说,我们可以从android源码编译出所有android相关的东西。
3、 把Android源 码”make”之后会生成许多工具和android文件系统(system.img等),我们又可以使用“makesdk”来生成android SDK,android
SDK也包括有工具和android文件系统(system.img等),而原来安装的时候我们也安装了androidSDK,那么我们在开发时应该使用那些工具和android文件系统呢?