最近在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. 編譯源碼模組:(http://blog.csdn.net/luoshengyang/article/details/6566662)
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 (來自http://lostghoul.blog.163.com/blog/static/11172199920112842738688/)
在檔案 夾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. 將檔案修改回來後,重啟電腦即可
摘自 mmvc2010的專欄