天天看點

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、不出意外的話,就可以看到如下成功編譯結果

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

二、安卓源碼編譯

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

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

 

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

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

  這些系統平台含義如下:

    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代碼編譯成安卓的位元組碼編譯器

 希望這些可以幫助大家!

轉載于:https://www.cnblogs.com/ywjfx/p/9960817.html