- 论坛徽章:
- 0
|
Android编译生成系统-译文
生成系统
下边就是生成系统的命令:
初始化
用envsetup.sh脚本初始化环境。 也可以用”.”来代替source。
$ source build/envsetup.sh
or
$ . build/envsetup.sh
选择一个目标
选择那个目标build lunch,具体的配置可以作为参数,例如
$ lunch full-eng
上边给的例子就是build一个全部可以调试的emulator。
如果你直接使用lunch 没有参数的话,会弹出选择目标菜单。
所有的目标可以从BUILD-BUILDTYPE中查阅到,BUILD可以为下边的几个:
Build name
Device
Notes
full
emulator
fully configured with all languages, apps, input methods
full_maguro
maguro
full build running on Galaxy Nexus GSM/HSPA+ ("maguro")
full_panda
panda
full build running on PandaBoard ("panda")
BUILDTYPE可以是下边的几个:
Buildtype
Use
user
limited access; suited for production
userdebug
like "user" but with root access and debuggability; preferred for debugging
eng
development configuration with additional debugging tools
开始Build代码
全部Build使用 make命令, GNU make通过-jN 参数全力的发挥cpu的功能,一般N为1或2倍硬件的线程数,例如dual-E5520 machine (2 CPUs, 4 cores per CPU, 2 threads per core)最快的Build,我们使用命令 make -j16 或 make -j32。
$ make -j4
运行它
你不仅可以在emulator上运行,也刷到设备上。主要要选择指定的设备lunch,不建议在不一样的设备上使用。
刷到设备中
为了刷到设备中,你必须使用fastboot工具,如果你Build成功,这个会自动加到你的路径中,可以直接使用,在boot下通过合适的key手动设置你的设备为fastboot模式,亦或者你可以通过shell命令。
$ adb reboot bootloader
只要设备进入fastboot模式,就可以运行
$ fastboot flashall -w
这个-w 参数是消除 你设备/data下的数据的。第一次刷的时候尽量使用这个参数,以后在刷就没有必要消除了。
在设备上运行
这个emulator命令自动加到你的path路径中了,可以直接运行
$ emulator
使用ccache
ccache就是C/C++编译器缓存,它能够使Build的更快,在源码根目录下进行操作
$ export USE_CCACHE=1
$ export CCACHE_DIR=/<path_of_your_choice>/.ccache
$ prebuilt/linux-x86/ccache/ccache -M 20G
通过下边命令,你可以查看ccache的使用情况
$ watch -n1 -d prebuilt/linux-x86/ccache/ccache -s
如果在OSX,你应该替换linux-x86 为 darwin-x86。
一般Build遇到的问题
错误的Java版本
如果你试图使用JDK1.6Build froyo或之前版本,亦或者你试图使用JDK1.5Build gingerbread或值后版本,make 的时候会报下边错误。
************************************************************
You are attempting to build with the incorrect version
of java.
Your version is: WRONG_VERSION.
The correct version is: RIGHT_VERSION.
Please follow the machine setup instructions at
http://source.android.com/download
************************************************************
这个可能是因为下边原因导致的
错误的使用JDK的版本,Building源码需要版本对应的Sun JDK 5 or 6。
另一个JDK也在你的path路径中,使用的是另一个JDK,这种情况你可以使用下边的命令删除那个没有用的JDK。
$ export PATH=${PATH/\/path\/to\/jdk\/dir:/}
Python版本3
Repo的使用使用搞的是Python 2.x不兼容Python 3,如果想用repo那就安装Python 2.x:
$ apt-get install python
没有USB权限
在大多Linux系统,普通的用户默认是没有访问USB端口的权限的,你可能会遇到没有权限的错误信息,下边配置下USB的访问权限。
如果adb正在运行并且不能连接设备,你可以使用 adb kill-server,这样adb会根据配置文件重新运行的。 |
|