/*****************************************************************************
* Author : Elvins Fu yeyecheng_93@163.com
*
* Info : Boway Inc,(C) 2016-11-26, All rights revseved.
*
* This document is summed up by the author for that the R&D install the
* java running environment or Java development kit and build the PRoject
* on Android 7.0 Platfrom success.
****************************************************************************/
--------------------------------------------------------
可以連接外網的情況下,使用
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-8-jdk
-------------------------------------
不能連接外網的情況下,
ahmed@Ubuntu:~$ sudo add-apt-repository ppa:webupd8team/java
ahmed@ubuntu:~$ sudo apt-get update
ahmed@ubuntu:~$ sudo apt-get install Oracle-java8-installer
問題: Unable to locate package oracle-java8-installer
解決辦法:
echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu precise main" > /etc/apt/sources.list.d/webupd8team-java.list
echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu precise main" >> /etc/apt/sources.list.d/webupd8team-java.list
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EEA14886
再重復上述操作,若還是不行,則下載源碼編譯。
--------------------------------------------------------
此時源碼安裝下載
http://hg.openjdk.java.net/jdk8u/jdk8u60/ 或者http://download.java.net/openjdk/jdk8/https://launchpad.net/ubuntu/+source/openjdk-8
1.下載Mercurial
Mercurial 是強大的分布式版本控制系統. 本文將介紹如何在 Ubuntu 下快速的最新版的安裝Mercurial, 其實只要幾條命令就可以搞定了
sudo add-apt-repository ppa:tortoisehg-ppa/releases
sudo add-apt-repository ppa:mercurial-ppa/releases
sudo apt-get update
sudo apt-get install mercurial python-nautilus tortoisehg
2.建立文件目錄,下載安裝預裝環境
bule@sky:~$ hg clone http://hg.openjdk.java.net/jdk8u/jdk8u jdk8-1773f1fd0fac.tar.gz
bule@sky:~/JDK/jdk8-1773f1fd0fac.tar.gz$ ls
ASSEMBLY_EXCEPTION get_source.sh Makefile test
common LICENSE README THIRD_PARTY_README
configure make README-builds.html
有一個 README-builds.html 描述了如何 build 整個系統,一些細節需要自己去尋找。
3.下載編譯文件源碼 (網站下載較慢,等待幾十分鐘)
bule@sky:~/JDK/jdk8-1773f1fd0fac.tar.gz$ bash ./get_source.sh
# Repositories: corba jaxp jaxws langtools jdk hotspot nashorn
corba: hg clone http://hg.openjdk.java.net/jdk8u/jdk8u/corba corba
jaxp: hg clone http://hg.openjdk.java.net/jdk8u/jdk8u/jaxp jaxp
bule@sky:~/JDK/jdk8-1773f1fd0fac.tar.gz$ ls
ASSEMBLY_EXCEPTION hotspot LICENSE README-builds.html
common jaxp make test
configure jaxws Makefile THIRD_PARTY_README
corba jdk nashorn
get_source.sh langtools README
4.安裝/更新依賴,在openJDK7上升級
bule@sky:~/JDK/jdk8-1773f1fd0fac.tar.gz$ sudo apt-get install aptitude
我下載aptitude的目的是在于aptitude比apt-get處理依賴性更好一些
bule@sky:~/JDK/jdk8-1773f1fd0fac.tar.gz$ sudo aptitude build-dep openjdk-7
bule@sky:~/JDK/jdk8-1773f1fd0fac.tar.gz$ sudo aptitude install openjdk-7-jdk
5.環境變量配置
bule@sky:~/JDK/jdk8-1773f1fd0fac.tar.gz$ vi ~/.bashrc (放在這里的好處不用說明)
export LANG=C
export PATH="/usr/lib/jvm/java-7-openjdk/bin:${PATH}"
bule@sky:~/JDK/jdk8-1773f1fd0fac.tar.gz$ source ~/.bashrc
6.配置編譯選項
bule@sky:~/JDK/jdk8-1773f1fd0fac.tar.gz$ bash ./configure
想編譯出調試版本的,可以給 configure 加參數,編譯有 release等幾種編譯級別,可以在調試時候提供更多的信息。
通常系統缺少ccache,下載該包加快編譯速度。
bule@sky:~/JDK/jdk8-1773f1fd0fac.tar.gz$ sudo apt-get install ccache
調試一下:-enable-debug 其實相當于 --with-debug-level=fastdebug, 可以通過這樣的參數選項指定編譯級別。一共可以指定三種級別: release, fastdebug, slowdebug, slowdebug 含有最豐富的調試信息,沒有這些信息,很多執行可能被優化掉,我們單步執行時,可能看不到一些變量的值。所以最好指定slowdebug 為編譯級別。
bule@sky:~/JDK/jdk8-1773f1fd0fac.tar.gz$ bash ./configure --enable-debug
注意以下信息
Configuration summary:
* Debug level: fastdebug (編譯級別release此時改變fastdebug)
* JDK variant: normal
* JVM variants: server
* OpenJDK target: OS: linux, CPU architecture: x86, address length: 64
Tools summary:
* Boot JDK: java version "1.7.0_121" OpenJDK Runtime Environment (IcedTea 2.6.8) (7u121-2.6.8-1ubuntu0.14.04.1) OpenJDK 64-Bit Server VM (build 24.121-b00, mixed mode) (at /usr/lib/jvm/java-7-openjdk-amd64)
7.編譯 (時間有點慢,耐心等待)
bule@sky:~/JDK/jdk8-1773f1fd0fac.tar.gz$ make
No CONF given, but more than one configuration found in /home/bule/JDK/jdk8-1773f1fd0fac.tar.gz//build.
Available configurations:
* linux-x86_64-normal-server-fastdebug
* linux-x86_64-normal-server-release
Please retry building with CONF=<config pattern> (or SPEC=<specfile>)
Makefile:55: *** Cannot continue. Stop. (需要指定哪種編譯器配置/我的是上面兩種64位的模式)
bule@sky:~/JDK/jdk8-1773f1fd0fac.tar.gz$ make CONF=linux-x86_64-normal-server-release
編譯成功
----- Build times -------
Start 2016-11-26 11:03:49
End 2016-11-26 11:18:12
00:00:21 corba
00:10:23 hotspot
00:00:16 jaxp
00:00:21 jaxws
00:02:35 jdk
00:00:27 langtools
00:14:23 TOTAL
-------------------------
Finished building OpenJDK for target 'default'
bule@sky:~/JDK/jdk8-1773f1fd0fac.tar.gz
bule@sky:~/JDK/jdk8-1773f1fd0fac.tar.gz/build/linux-x86_64-normal-server-fastdeb
ug/jdk/bin$ ./java -version
openjdk version "1.8.0-internal"
OpenJDK Runtime Environment (build 1.8.0-internal-fastdebug-bule_2016_11_26_10_59-b00)
OpenJDK 64-Bit Server VM (build 25.71-b00-fastdebug, mixed mode)
--------------------------------------
8.加入Ubuntu切換版本
sudo update-alternatives --install /usr/bin/java java /home/bule/JDK/jdk8-1773f1fd0fac.tar.gz/build/linux-x86_64-normal-server-release/jdk/bin/java 300
sudo update-alternatives --install /usr/bin/javac javac /home/bule/JDK/jdk8-1773f1fd0fac.tar.gz/build/linux-x86_64-normal-server-release/jdk/bin/javac 300
sudo update-alternatives --install /usr/bin/javap javap /home/bule/JDK/jdk8-1773f1fd0fac.tar.gz/build/linux-x86_64-normal-server-release/jdk/bin/javap 300
sudo update-alternatives --install /usr/bin/javah javah /home/bule/JDK/jdk8-1773f1fd0fac.tar.gz/build/linux-x86_64-normal-server-release/jdk/bin/javah 300
sudo update-alternatives --install /usr/bin/jar jar /home/bule/JDK/jdk8-1773f1fd0fac.tar.gz/build/linux-x86_64-normal-server-release/jdk/bin/jar 300
-------------------------------------
9.選擇切換的版本
sudo update-alternatives --config java
sudo update-alternatives --config javac
sudo update-alternatives --config javah
sudo update-alternatives --config javap
sudo update-alternatives --config jar
sudo update-alternatives --config javadoc
10.查看
bule@sky:~$ java -version
openjdk version "1.8.0-internal"
OpenJDK Runtime Environment (build 1.8.0-internal-bule_2016_11_26_10_58-b00)
OpenJDK 64-Bit Server VM (build 25.71-b00, mixed mode)
11.編譯Android 7.0工程
bule@sky:~/workspace/jianwen.fu/jianwen.fu/V65_7.0$ make
build/core/config.mk:600: *** Error: could not find jdk tools.jar at /home/bule/JDK/jdk8-1773f1fd0fac.tar.gz/build/linux-x86_64-normal-server-release/jdk/bin/../lib/tools.jar, please check if your JDK was installed correctly. Stop.
Android工程的build/core/config.mk 需要在jdk/bin/../lib目錄中有tools.jar文件,但是編譯的源碼是沒有的,那么查看ubuntu目錄帶有的
bule@sky:~$ find /usr/lib/jvm -name tools.jar
/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64/lib/tools.jar
拷貝tools.tar到/home/bule/JDK/jdk8-1773f1fd0fac.tar.gz/build/linux-x86_64-normal-server-release/jdk/bin/../lib/目錄中
12.此時大功告成,可以放心的編譯Android 7.0的工程
新聞熱點
疑難解答