免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1976 | 回复: 1
打印 上一主题 下一主题

Android编译生成系统-译文 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-08 21:05 |只看该作者 |倒序浏览
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会根据配置文件重新运行的。

论坛徽章:
0
2 [报告]
发表于 2011-12-23 22:29 |只看该作者
谢谢分享  希望于楼主多多交流
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP