编译SDK
xuwt@ubuntu:~/Documents/android4.3_Zip$ make sdk
make sdk
出现如下错误
build/core/main.mk:644: *** : Module 'bluetooth-health' in PRODUCT_PACKAGES has nothing to install!
使用make PRODUCT-sdk-sdk来编译,成功
编译命令:make update-api; make PRODUCT-sdk-sdk;
命令说明:1、make update-api #如果你在Android源码中添加了自定义的包、类、方法或者你修改了Android源码中标识为@hide的方法、类,你需要这些内容对 Application可见并且需要编译进SDK的Document中的话,这个命令是必须的;
2、make PRODUCT-sdk-sdk #编译源码并且声称SDK,这个方法解决了之前使用make sdk命令编译SDK的一个bug,就是R文件不能自动生成,需要手动更新一个jar文件才可以。
sdk安装在了out/host/linux-x86/sdk 下面的目录里
在该目录下有一个压缩包,里面就是我们从eclipse里更新下载指定Target的sdk包。
如果你做过app开发都会知道,我们只有下载了不同版本的sdk之后才能创建不同版本的模拟器。当我们编译完sdk之后就可以创建并运行Android4.3的模拟器了。
进入out/host/linux-x86/sdk/android-sdk_eng.xuwt_linux-x86/tools这个目录,首先,查看当前编译出来的sdk的id号,用于创建一个模拟器:
./android list targets
xuwt@ubuntu:~/Documents/android4.3_Zip/out/host/linux-x86/sdk/android-sdk_eng.xuwt_linux-x86/tools$ ./android list targets
Available Android targets:
----------
id: 1 or "android-18"
Name: Android 4.3.2.1.000.000
Type: Platform
API level: 18
Revision: 1
Skins: WSVGA, WXGA720, HVGA, WQVGA432, WQVGA400, WXGA800, WVGA800 (default), WXGA800-7in, QVGA, WVGA854
ABIs : armeabi-v7a
创建一个模拟器
./android create avd -n mydroid -t 1
注:-n 表示指定模拟器的名字, -t表示指定创建模拟的版本id
启动模拟器
./emulator -avd mydroid &
xuwt@ubuntu:~/Documents/android4.3_Zip/out/host/linux-x86/sdk/android-sdk_eng.xuwt_linux-x86/tools$ ./android create avd -n android4.3 -t 1
Auto-selecting single ABI armeabi-v7a
Android 4.3.2.1.000.000 is a basic Android platform.
Do you wish to create a custom hardware profile [no]
Created AVD 'android4.3' based on Android 4.3.2.1.000.000, ARM (armeabi-v7a) processor,
with the following hardware config:
hw.lcd.density=240
vm.heapSize=48
hw.ramSize=512
xuwt@ubuntu:~/Documents/android4.3_Zip/out/host/linux-x86/sdk/android-sdk_eng.xuwt_linux-x86/tools$ ./emulator -avd android4.3 &
[1] 24333
这样就启动成功了:
之后再次运行模拟器的时候:
source build/envsetup.sh
回车,之后再次运行 emulator 或者(emulator &) 命令就可以了。命令后面加&表示后台执行。
由于模拟器要启动android系统,它要使用几个映像文件,分别是:kernel-qemu , system.img, userdata.img, ramdisk.img
Ø kernel-qemu:内核映像文件,它是linux操作系统针对qemu模拟器编译的内核文件,里面安装有qemu的仿真硬件驱动,如果将来在开发板或手机上移植android,那么,第一步就是要先make出一个支持开发板或手机的kernel来。
Ø system.img:是android系统的文件系统,里面包含了android系统的应用程序(apk),系统用到的各种库(jar, so, a)和资源,配置文件(etc目录下),系统命令(bin,usr/bin, xbin),该映像文件是由out/target/product/PRODUCT/system目录打包生成的,我们可以对这个目录里的东西进行定制化,比如,你要想让android系统默认为安装一个应用程序,那么可以将要安装的apk文件拷贝到out/target/product/PRODUCT/system/app目录下
Ø userdata.img:用户数据映像,里面包含有程序安装信息,好比如是windows的C:/Program Files/目录
Ø ramdisk.img:内存磁盘映像,这个文件对于没有做过Linux移植的人来说,不好理解,linux内核启动起来,要挂载一个文件系统作为自己的根文件系统,通常文件系统是存放在块设备上的,也就是硬盘或flash上的,里面含有Linux内核启动过程中依赖的一些程序和配置文件,前面所述的userdata.img和system.img映像,在linux系统启动起来后挂载到其data,system目录下。
参考:
http://blog.csdn.net/mr_raptor/article/details/7958212