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
對於在編譯早期版本的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
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 等引數。