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

題記:編譯花了將近4小時,因此編譯源碼是很費時的哦,能夠在編譯的時候能夠學習其餘的知識java

編譯環境準備linux

  軟件:WorkStation10android

  系統:ubuntu14.04 ubuntu

  內存:8G工具

  處理器:4個學習

  磁盤大小:100G測試

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

1、內核編譯spa

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

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

 

  二、安裝必要的一些包(如下的包,都是採坑一個個過來的,因此請務必都安裝)

    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

  

  三、不出意外的話,就能夠看到以下成功編譯結果

 

2、安卓源碼編譯

   一、進入安卓源碼目錄,執行如下命令

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

 

  二、啓動lunch命令,選擇平臺(通常選22),以下圖所示。

  這些系統平臺含義以下:

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

  

  三、執行如下命令,編譯安卓源碼

    $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代碼編譯成安卓的字節碼編譯器

 

 但願這些能夠幫助你們!

相關文章
相關標籤/搜索