Ubuntu下编译Android2.3源码问题集


最近在Ubuntu下编译Android2.3的源码,并修改了某些模块,以下是遇到到一些问题,待续....

1. 解决Ubuntu安装sun-java6-jre时无法选择ok键的问题

先点一下tab键才能选ok键

2. 删除原来的JDK:

sudo apt-get remove sun-java6-jre sun-java6-plugin sun-java6-bin sun-java6-fonts

3.  make clean   --->  make update-api   -->  make

4. /etc/apt/sources.list,

执行 apt-get update 更新软件库

5. 无法获得锁 /var/lib/dpkg/lock

sudo rm /var/cache/apt/archives/lock

sudo rm /var/lib/dpkg/lock

6. 错误:

arm-eabi-gcc: error trying to exec 'cc1': execvp: No such file or directory

make: *** [out/target/product/generic/obj/EXECUTABLES/dalvikvm_intermediates/Main.o] 错误 1

---解决办法:可能是权限问题,到android源码目录下,直接chmod -R 777 *

7. 编译源码模块:

a.  首先在Android源代码目录下的build目录下,有个脚本文件envsetup.sh,执行这个脚本文件后,就可以获得一些有用的工具:

build下的一个文件:

source build/envsetup.sh    (前面要加上source,否则找不到mmm等命令)(不同的shell窗口都得运行该命令后才能使用mmm等命令)

b.   使用mmm命令来编译指定的模块,例如QuickSearchBox应用程序:

mmm packages/apps/QuickSearchBox/

c.  编译好模块后,还要重新打包一下system.img文件,这样我们把system.img运行在模拟器上时,就可以看到我们的程序了。

make snod

d.  模拟器到环境变量 运行模拟器

export PATH=$PATH:/mydroid2.30/mydroid/out/host/linux-x86/bin

export ANDROID_PRODUCT_OUT=/mydroid2.30/mydroid/out/target/product/generic

//注释 ~/Android/out/host/linux-x86/bin有我们要执行的emulator命令,而~/Android/out/target/product/generic是Android镜像存放目录,下面执行emulator命令时会用到。

emulator

8. 源码中存放app到路径 out/target/product/generic/system/app

刷机时,该路径中到apk都会成为系统自带应用。

9. 错误:  ./adb devices 提示????????????    no permissions

----解决办法:切换到root用户,使用adb kill-server, adb start-server 就可以了

----原因:adb需要在root权限时再启动才有权限。

10. 错误:编译的源码apk在真机上安装时会出现INSTALL_FAILED_OLDER_SDK问题

---解决办法:修改源码下build/core/version_defaults.mk文件,将

PLATFORM_VERSION := 2.3.1

PLATFORM_VERSION_CODENAME := REL

然后重新编译整个源码。

11. android分辨率的修改 && hdpi-mdpi

在文件 夹 build\target\product\generic.mk加入

CUSTOM_LOCALES:= hdpi mdpi ldpi

12. 错误:root用户使用gedit和emacs带图形界面的都出错

在终端切换至root,然后gedit某文件,结果报错:

(gedit:4987): EggSMClient-WARNING **: Failed to connect to the session manager: None of the authentication protocols specified are supported**

GLib-GIO:ERROR:gdbusconnection.c:2270:initable_init: assertion failed: (connection->initialization_error == NULL)

Aborted (core dumped)

-----解决方法:就是在管理员用户的 .bashrc 文件尾部添加:

export DBUS_SESSION_BUS_ADDRESS=""

13. 错误:进不了系统。修改了profile文件后,可能导致进不了系统(输入密码后,又返回输入密码的界面)

解决办法:a.在输入密码界面,按ctrl+alt+F1 键,进入命令行模式

b. 输入用户名和密码login

c. 执行命令 /usr/bin/sudo vi /etc/profile

d. 将文件修改回来后,重启电脑即可。

相关内容