android 2.3 下載編譯過程(記錄)

 

編譯環境:
1.oracle vm virtualbox
2.ubuntu Linux version 4.4.0-31-generic (buildd@lgw01-43) 
(gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3) ) #50~14.04.1-Ubuntu SMP Wed Jul 13 01:07:32 UTC 2016
3.jdk 1.6
 

//先查看虛擬機中ubuntu系統存儲空間,防止空間不足導致漫長的等待結果內存不足,導致虛擬機起不來
df-TH

//pwd 查看當前目錄 /home/username/
mkdir android 
sudo apt-get install git curl
PATH=/home/username/android:$PATH
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o /home/username/android   #使用tuna的git-repo鏡像
chmod a+x ~/bin/repo
gedit repo 
#找到REPO_URL = 'https://gerrit.googlesource.com/git-repo'並替換
REPO_URL = 'https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'

//下載git倉庫Android清單
git clone  https://aosp.tuna.tsinghua.edu.cn/platform/manifest
cd manifest
//版本列表顯示不完 加上more 一個個看 
git branch -a |more
//找到android-2.3_r1(4.4的版本下載下來50G,電腦硬盤存儲不夠,虛擬機中的ubuntu系統內存爆掉,2.3相對小一點)
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-2.3_r1
//提示git 配置郵箱和名字
git config --global user.email "[email protected]" && git config --global user.name "xxx"

repo sync

//查看下載了多少,當前目錄下
du -sh

git clone https://aosp.tuna.tsinghua.edu.cn/aosp/kernel/goldfish.git 

//
安裝 python 2.7
//後續步驟安裝類庫參考
https://blog.csdn.net/ylyg050518/article/details/80480966

 

make clean

$ source build/envsetup.sh

$ lunch full-eng

$ make 


//編譯過程問題

make: *** [out/host/linux-x86/obj/SHARED_LIBRARIES/libdvm_intermediates/native/dalvik_system_Zygote.o] Error 1
解決辦法
添加頭文件#include <sys/resource.h>到以下文件
dalvik/vm/native/dalvik_system_Zygote.cpp
//
make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libext4_utils_intermediates/output_file.o] Error 1
由於系統的文件換了位置, 此時需要將 /usr/include/x86_64-linux-gnu/zconf.h 拷貝到上級目錄,此時編譯才通過
將 zconfig.h 拷貝到 /usr/include/ 目錄即可

sudo cp -r /usr/include/x86_64-linux-gnu/zconf.h /usr/include
//
[out/target/product/eve/obj/STATIC_LIBRARIES/libwebcore_intermediates/WebCore/HTMLNames.h]

解決方法:
修改文件/home/istep/android/external/webkit/WebCore/WebCore/dom/make_names.pl
my $preprocessor = "/usr/bin/gcc -E -P -x c++"; 改爲my $preprocessor = "/usr/bin/gcc -E -x c++";
//同時安裝
sudo apt-get install libswitch-perl


配置模擬器環境變量:
 

#JAVE

JAVA_HOME=/home/istep/ide/jdk1.6.0_45

export JAVA_HOME

PATH=$JAVA_HOME/bin:$PATH

# Androidemulator

emulator_HOME=/home/istep/android/out/host/linux-x86

export emulator_HOME

PATH=$emulator_HOME/bin:$PATH

ANDROID_PRODUCT_OUT=/home/istep/android/out/target/product/generic

export ANDROID_PRODUCT_OUT
啓動模擬器:
    emulator

遇到的問題:
SDL init failure, reason is: No available video device

解決辦法:
sudo apt-add-repository "deb http://archive.canonical.com/ $(lsb_release -sc) partner"    
sudo apt-get update    
sudo apt-get install libsdl1.2debian:i386

感謝http://blog.csdn.net/mldxs/article/details/8757106網友提供的解決方法

 //模塊編譯,當前源碼目錄下
 . build/envsetup.sh 
 //然後執行編譯命令
 mmm packages/apps/Launcher2
 //啓動模擬器後,就可以看到結果了
 adb install -r out/target/product/generic/system/app/Launcher2.apk

//
mount -o remount,rw rootfs /system/

Android中爲子系統重新單獨編譯動態庫的方法
https://blog.csdn.net/Qidi_Huang/article/details/53690139

//添加core service 報錯 ServiceManager: add_service('hello',62) uid=1000 - PERMISSION DENIED
找到service_manager.c 中的allowed 數組參考現有的加入自己的添加的服務

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章