当前位置:首页 » 安卓系统 » qemuandroid

qemuandroid

发布时间: 2023-03-11 08:36:08

‘壹’ 自己可以编译安卓源码

用最新的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内核问题,解决方法如下:
执行如下命令:

  • ./out/host/linux-x86/bin/emulator -partition-size 1024 -kernel ./prebuilts/qemu-kernel/arm/kernel-qemu-armv7

  • 通过使用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文件系统呢?

    热点内容
    俄罗斯方块的编程 发布:2025-05-13 20:51:08 浏览:610
    python开发项目 发布:2025-05-13 20:44:17 浏览:736
    安卓手机怎么样刷国行系统 发布:2025-05-13 20:44:14 浏览:320
    云服务器端口如何设置断网间隔 发布:2025-05-13 20:43:15 浏览:131
    linux系统休眠 发布:2025-05-13 20:30:05 浏览:906
    安卓手表进水了怎么搞 发布:2025-05-13 20:11:31 浏览:515
    linuxc语言随机数 发布:2025-05-13 20:09:16 浏览:240
    c语言通用链表 发布:2025-05-13 19:53:04 浏览:806
    lol挂机脚本后台 发布:2025-05-13 19:51:23 浏览:574
    红米note3怎么锁屏密码忘了怎么办 发布:2025-05-13 19:51:03 浏览:192