kongkong's Blog

No Silver Bullet --- Computer Language is just a tool.

终于成功编译freescale android

| Comments

这两周一直在编译android,期间遇到很多问题。所以只有来个彻底的重新洗牌。这个方法果然奏效,快刀斩乱麻:)

下载Andorid Source Code

为了节约时间,使用Local Mirror,以后可以直接从local mirror下载源代码,参考Android website

  • 首先下载mirror到本地。
$ mkdir  -p  ~/aosp/mirror
$ cd  ~/aosp/mirror
$ repo init -u https://android.googlesource.com/mirror/manifest -b android-4.2.2_r1  --mirror
$ repo sync
  • 从本地mirror下载source code
$ mkdir -p ~/myandroid
$ cd ~/myandroid
$ repo init -u ~/aosp/mirror/platform/manifest.git -b android-4.2.2_r1
$ repo sync
  • 最后如果要更新本地的源代码,需要先将本地镜像与远程服务端进行sync,然后本地source code与本地镜像进行sync(因为本地source code 在进行repo init -u选择的url是本地的mirror路径,所以需要先更新本地mirror与远程服务端同步,然后本地源代码与本地镜像同步)。

    $ cd  ~/aosp/mirror
    $ repo sync
    $ cd ~/myandroid
    $ repo sync
    

    编译过程出现的几个问题与解决

  • Checking API: checkapi-last (unknown): error 17 ,通常是修改了google开放出来的API或者变量。解决方法:

  1. 找到错误所在的文件的所在行,对于API,在其前添加/** @hide * / ; 对于变量,在其前添加/** {@hide} * /.
  2. 使用make update-api PRODUCT-eng.(这个方法简洁)
  • frameworks/base/core/java/com/android/internal/widget/LockPatternUtils.java:1280: error 114: @deprecated tag with no explanatory comment。 解决方法:在这个java文件中去除@deprecated这一行。

  • 这次编译没有出现上次的error with -llzo2 and -luuid ,通过查看~/myandroid/external/mtd-utils/mkfs.ubifs/Android.mk,发现这个liblzo2和uuid是在/usr/lib/x86_64-linux-gnu(原文中LOCAL_LDFLAGS += -L /usr/lib/x86_64-linux-gnu)。这个路径填写正确,就不会出现64bit不兼容的问题。

最后就是漫长的编译了。

Comments

comments powered by Disqus