1. 程式人生 > >Android 原始碼編譯遇到的幾個錯誤

Android 原始碼編譯遇到的幾個錯誤

前幾天編譯Android原始碼的時候遇到了幾個錯誤,記錄一下解決辦法:

1.Error : Can’t locate Switch.pm in @INC

這個錯誤的解決方法是:

sudo apt-get install libswitch-perl 

2.Error : javac: target release 1.5 conflicts with default source release 1.7

關於這個錯誤,在官網的文件中有說道:
To develop older versions of Android, download and install the corresponding version of the

Java JDK
對於在編譯早期版本的Android原始碼時,就不要按照上邊說的安裝OpenJDK 7了,而是應該去Oracle下載JDK5或者JDK6.
我是從網上Down的別人共享的4.1.1版本的Android原始碼,所以我下載了 jdk-6u45-linux-x64.bin 這個JDK進行的配置修改:

chmod +x jdk-6u45-linux-x64.bin
./jdk-6u45-linux-x64.bin
sudo mv jdk1.6.0_45 /usr/lib/jvm/
sudo rm ./jdk-6u45-linux-x64.bin

然後配置一下環境變數:

sudo gedit /etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/lib/jvm/jdk1.6.0_45/bin"
CLASSPATH="/usr/lib/jvm/jdk1.6.0_45/lib" JAVA_HOME="/usr/lib/jvm/jdk1.6.0_45"

修改預設配置:


sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.6.0_45/bin/java 300
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.6.0_45/bin/javac 300
sudo update-alternatives --config java

列出來的選項中發現星號(*)標註的選擇項是我之前安裝的openjdk7,新安裝的這個jdk1.6.0_45對應的索引是2,所以直接輸入2;
這時候如果直接檢視javac -version

會發現還是之前的openjdk7,所以需要把這個openjdk7刪掉並重啟一下!

sudo remove openjdk-7-jdk
sudo reboot

3.Error : /bin/bash:line 1:VBoxManage:command not found

出現這個錯誤是因為我在make 的時候選擇生產vdi的格式(make -j4 android_disk_vdi);即在生產img系統檔案之後進行一個轉換,轉換為vdi;但是因為新機器沒有安裝VBOX軟體所以它找不到這個VBoxManage,解決方法自然就是安裝一下:

sudo apt-get install virtualbox

除了編譯時間有點長之外其他基本就沒有遇到什麼錯誤了,編譯完成之後一般都會有類似的提示:

Done with VirtualBox bootable system-disk image -[ out/target/product/vbox86p/android_system_disk.vdi ]

編譯成功之後的vdi檔案也是在上邊提到的目錄下,拷貝出來使用VBOX載入執行就可以了!

4.檢視Android原始碼

原始碼編譯完成之後肯定是要研究原始碼的了,但是Ubuntu下怎麼檢視原始碼呢?之前做Android的APP開發最熟悉的就是Android Studio了,所以也是準備使用AS來檢視:

sudo add-apt-repository ppa:paolorotolo/android-studio
sudo apt-get update
sudo apt-get install android-studio

安裝完 AS 之後,要想用 AS 開啟Android的原始碼檢視還需要一步:
在Android的原始碼根目錄下開啟終端:

. development/tools/idegen/idegen.sh

如果提示找不到idegen.jar的話就需要執行:

mmm development/tools/idegen/

如果這句還會報錯那麼就把上邊source build/envsetup.sh 還有 lunch 之類的再執行一遍,然後在執行上邊語句,正常的就能在out/host/linux-x86/framework/下找到idegen.jar了。

這時候在根目錄下會生成幾個檔案,使用 AS 開啟剛才生產的android.ipr來載入專案檢視原始碼。

1.AS 開啟android.ipr的時間回比較長,畢竟需要載入很多專案檔案的索引,多注意一下右下角的載入進度條,載入完成之後Project視窗中選擇Project檢視,在Android下是看不到什麼東西的!
2.或者按照development/tools/idegen/README 裡說的,修改一下/opt/android-studio/bin/studio64.vmoptions 這個檔案的 -Xms -Xmx 等引數。