Android 源码 (AOSP) - 编译 ( 模拟器 )

1,757 阅读2分钟

前言

走到这一步, 我们终于可以启动一下模拟器玩玩了, 经过两天编译, 感觉什么都好,就是头冷. 在这里插入图片描述

开搞,开搞.

AOSP系列

该系列链接

开搞

自己的配置

硬件
Mac mini (Late 2014)
2.6 GHz i5
8G 1600 MHz DDR3
自己换了三星的500G固态硬盘

Mac 系统版本: Mojave 10.14.4

源码
版本: android-6.0.1_r78

JDK 7

Python verison: 2.7.10

Git
version 2.21.0

启动模拟器

emulator

command not found

出现该错误的话, 你肯定是在没有导入环境的窗口执行 emulator 了

-bash: emulator: command not found

这里要先导入环境, 如下

. build/envsetup.sh

选择运行的项目 (这个和你编译的一样)

lunch aosp_arm-eng

ANDROID_PRODUCT_OUT

找不到环境变量 ANDROID_PRODUCT_OUT

emulator: ERROR: Can't access ANDROID_PRODUCT_OUT as '源码路径/out/target/product/geneic_aosp_arm-eng'

直接在当前终端窗口增加这个环境变量, 改到你已经编译好的项目路径

export ANDROID_PRODUCT_OUT=源码路径/out/target/product/generic_aosp_arm-eng

然后再次

emulator

启动成功

打印如下

emulator: WARNING: system partition size adjusted to match image file (1536 MB > 200 MB)

emulator: WARNING: data partition size adjusted to match image file (550 MB > 200 MB)

Creating filesystem with parameters:
    Size: 69206016
    Block size: 4096
    Blocks per group: 32768
    Inodes per group: 4224
    Inode size: 256
    Journal blocks: 1024
    Label: 
    Blocks: 16896
    Block groups: 1
    Reserved block group size: 7
Created filesystem with 11/4224 inodes and 1302/16896 blocks
emulator: ### WARNING: /etc/localtime does not point to /usr/share/zoneinfo/, can't determine zoneinfo timezone name

开机等了十来分钟(网上都说几分钟, 估计是我机子太垃圾...)

上一下效果图吧

在这里插入图片描述在这里插入图片描述

partition

分区大小问题, 启动的时候带上分配大小参数就行了

emulator: WARNING: system partition size adjusted to match image file (1536 MB > 200 MB)
emulator: WARNING: data partition size adjusted to match image file (550 MB > 200 MB)

解决如下 (3000 单位是 M, 如果你那边提示需要更大, 那么就分配更多就行了)

emulator -partition-size 3000

时区问题

时区问题, 未解决(那位大神知道咋搞, 评论留一下呗)
我这边 etc/localtime 指向的是 /private/var/db/timezone/tz/2019a.1.0/zoneinfo/Asia/Shanghai ( 为啥只有上海, 没有北京??? )
但是 /usr/share/zoneinfo/ 也是一个快捷方式而已, 也是 link 到 /private/var/db/timezone/tz/2019a.1.0/zoneinfo

emulator: ### WARNING: /etc/localtime does not point to /usr/share/zoneinfo/, can't determine zoneinfo timezone name

参考文章

Google 官方介绍
Android emulator 介绍