最近在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. 將文件修改回來後,重啟電腦即可。