ubuntu14.04+安卓7.1(全志源碼)+openjdk-8編譯


題記:編譯花了將近4小時,所以編譯源碼是很費時的哦,可以在編譯的時候可以學習其他的知識

編譯環境准備

  軟件:WorkStation10

  系統:ubuntu14.04 

  內存:8G

  處理器:4個

  磁盤大小:100G

以下是安卓7.1源碼(全志)和內核編譯步驟:

一、內核編譯

  1、安裝jdk8(注本人使用的是openjdk8)

    sudo add-apt-repository ppa:openjdk-r/ppa
    sudo apt-get update
    sudo apt-get install openjdk-8-jdk
    java -version #檢測jdk安裝

 

  2、安裝必要的一些包(以下的包,都是采坑一個個過來的,所以請務必都安裝)

    sudo apt-get install gawk  #解決:awk: line 2: function strtonum never defined
    apt-get install fakeroot  #解決:../scripts/build_rootfs.sh: line 19: fakeroot: command not found
    sudo apt-get install g++-multilib gcc-multilib  #解決:lichee/tools/pack/pctools/linux/android/mkbootimg: No such file or directory

  

  3、不出意外的話,就可以看到如下成功編譯結果

 

二、安卓源碼編譯

   1、進入安卓源碼目錄,執行以下命令

  $cd ../android/   #安卓源碼目錄
  $source build/envsetup.sh    #啟動源碼編譯環境(即添加編譯命令)
  $lunch    #選擇平台編譯選項

 

  2、啟動lunch命令,選擇平台(一般選22),如下圖所示。

  這些系統平台含義如下:

    eng: 工程機,
    user:最終用戶機
    userdebug:調試測試機
    tests:測試機

  

  3、執行以下命令,編譯安卓源碼

    $extract-bsp
    $make -j4  #編譯(make -j4表示處理器4個,根據電腦配置選擇)
    $pack  #將編譯成功的系統打包成img鏡像。

 

你以為步驟3這么容易?  No 。我大概花了4個晚上才成功,每天有不同的問題出現,主要是編譯環境的問題,下面貼出我編譯過程中出現的問題以及解決方法。

FAQ

問題一:出現*****prebuilts/misc/linux-x86/bison/bison.......

解決方法:sudo apt-get install bison

 

問題二:出現ninja: build stopped: subcommand failed Android 或者GC overhead limit exceeded.

解決方法:
修改prebuilts/sdk/tools/jack-admin 文件內容

將JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -cp $LAUNCHER_JAR $LAUNCHER_NAME" 改為
JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -Xmx4096m -cp $LAUNCHER_JAR $LAUNCHER_NAME"

注:
-Xmx4096m或者-Xmx4g ,表示使用主機內存的一半,前面我說本人使用的內存是8G哦,當然如果你的內存大,可以使勁的用

 

  問題三:出現Failed to contact Jack server: Problem reading .jack-server/client.pem. Try 'jack-diagnose'

  解決方法:

  jack-admin kill-server  #殺死jack進行

  jack-admin uninstall-server  #卸載jack服務

  make    # 編譯

注:Jack編譯器工具是一套新的Android編譯工具用來將Java代碼轉換為Android dex字節代碼,所以你jack就是用來將java代碼編譯成安卓的字節碼編譯器

 

 希望這些可以幫助大家!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM