最近在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. 将文件修改回来后,重启电脑即可。