ubuntu 12.04 amd64 编译android源码的JAVA环境配置

http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

下载JDK。


我修改的是root下的profile,没有修改bashrc



root@ubuntu64:/home/zhangbin# cat /root/.profile

# ~/.profile: executed by Bourne-compatible login shells.




echo -n "configure env for jdk and android ...\n"
export JAVA_HOME=/opt/jdk1.6.0_37
export JRE_HOME=$JAVA_HOME/jre  
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH  
export PATH=${PATH}:$JAVA_HOME/bin:$JRE_HOME/bin


export ANDROID_HOME=/home/zhangbin/android_src
export ANDROID_SRC=${ANDROID_HOME}/bin
export ANDROID_PRODUCT_OUT=${ANDROID_SRC}/out/target/product/generic
export ANDROID_PRODUCT_OUT_BIN=${ANDROID_SRC}/out/host/linux-x86/bin
export PATH=${PATH}:${ANDROID_PRODUCT_OUT}:${ANDROID_PRODUCT_OUT_BIN}



if [ "$BASH" ]; then
  if [ -f ~/.bashrc ]; then
    . ~/.bashrc
  fi
fi


mesg n

root@ubuntu64:/home/zhangbin# 



root@ubuntu64:/home/zhangbin# cat /root/.bashrc
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples


# If not running interactively, don't do anything
[ -z "$PS1" ] && return


# don't put duplicate lines in the history. See bash(1) for more options
# ... or force ignoredups and ignorespace
HISTCONTROL=ignoredups:ignorespace


# append to the history file, don't overwrite it
shopt -s histappend


# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=1000
HISTFILESIZE=2000


# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize


# make less more friendly for non-text input files, see lesspipe(1)
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"


# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then
    debian_chroot=$(cat /etc/debian_chroot)
fi


# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
    xterm-color) color_prompt=yes;;
esac


# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
#force_color_prompt=yes


if [ -n "$force_color_prompt" ]; then
    if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
# We have color support; assume it's compliant with Ecma-48
# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
# a case would tend to support setf rather than setaf.)
color_prompt=yes
    else
color_prompt=
    fi
fi


if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt


# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
    PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
    ;;
*)
    ;;
esac


# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
    alias ls='ls --color=auto'
    #alias dir='dir --color=auto'
    #alias vdir='vdir --color=auto'


    alias grep='grep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias egrep='egrep --color=auto'
fi


# some more ls aliases
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'


# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.


if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi


# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
#if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
#    . /etc/bash_completion
#fi
root@ubuntu64:/home/zhangbin# 

=====================================================


为啥是空的呢??

root@ubuntu64:/home/zhangbin# echo $JAVA_HOME


root@ubuntu64:/home/zhangbin# 



root@ubuntu64:/home/zhangbin# ls /opt/jdk1.6.0_37
bin        jre      README.html          src.zip
COPYRIGHT  lib      register.html        THIRDPARTYLICENSEREADME.txt
db         LICENSE  register_ja.html
include    man      register_zh_CN.html
root@ubuntu64:/home/zhangbin# 



root@ubuntu64:/home/zhangbin# java --version 
程序 'java' 已包含在下列软件包中:
 * default-jre
 * gcj-4.6-jre-headless
 * openjdk-6-jre-headless
 * gcj-4.5-jre-headless
 * openjdk-7-jre-headless
请尝试:apt-get install <选定的软件包>
root@ubuntu64:/home/zhangbin# 



==============================================================


参考http://blog.youkuaiyun.com/tyearlin/article/details/8144929



   本文介绍在ubuntu12.04(amd64) 下编译android源码及sdk,ndk等全过程



                            

          一:编译环境

                   系统:ubuntu12.04 amd64 (uname -a查看你的系统架构) 

                    

                    我的x86_64

                    源码版本:4.1.1+ (全部)这里没-b 取分支

                    系统更新过:sudo apt-get update upgrade  (这个应该不碍)

          二:准备编译环境

                 (一)  编译器

                    由于Ubuntu 12.04采用了GCC4.6,版本太高。

                     这里 使用gcc4.5版本进行编译.
                     4.4的版本据说可以,但没试过.
   
                                                sudo apt-get install gcc-4.5 g++-4.5 g++-4.5-multilib gcc-4.5-multilib
                            
                     装完后在/usr/bin目录下查看下gcc和g++版本号及配置项:如图

                    
                  
                    g++同理 系统默认安装了4.6 如果没有先卸载  应该修改下gcc 连接 图中gcc - > gcc -4.5 安装前指向4.6 修改如下
                                                         sudo mv gcc gcc.bak                sudo ln -s gcc-4.5   gcc  (创建软连接)
                    ln  是linux中一个非常重要命令,这里有几点要注意: 
                    1,ln命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化; 
                    2,ln的链接又软链接和硬链接两种,软链接就是ln -s ** **,它只会在你选定的位置上生成一个文件的镜像,不会 占用磁盘空间,硬链接没有参 -s,                     
                    它会在你选定的位置上生成一个和源文件大小相同的文件,无论是软链 接还是硬链接,文件都保持同步变化。 
                   3,软链接是可以跨分区的,但是硬链接只能在同一分区内。 
                   如果你用ls察看一个目录时,发现有的文件或文件夹的颜色和别的不一样,我机子上是蓝色的,那就是一个用ln命令生成的文件,用ls -l命令去察看
               ,就可以看到显示的link的路径了。
              
                (二)JDK    
              需要安装jdk6 官网下载 amd64包 注意匹配,安装成功后配置
              /etc/profile 
            我这里直接进行系统你也可以重定位追加到~/.bashrc
           
            java --version 测试下 是否安装成功  
      
             (三)相关包安装

          安装编译Android需要的工具包,这个步骤是关键,提前安装好一次争取不要make第二次,减少无用功。
            
           sudo apt-get install  bison    gnupg     flex   lunch   gperf     build-essential   zlib1g-dev   libc6-dev  lib32ncurses5-dev    ia32-libs   x11proto-core-dev   
           libx11-dev ib32readline-gplv2-dev lib32z1-dev   libgl1-mesa-dev  mingw32 tofrodos python-markdown   libxml2-utils  xsltproc  lib32readline6-dev

       三 编译
            切入源码根目录
              source  build/envsetup.sh  (可以写入.bashrc )    envsetup.sh 会引入vendor/和device /目录下的vendorsetup.sh脚本  可 新增mmm 模块编译等命令

              我们可以使用mmm来编译指定目录的模块,如编译联系人:mmm   packages/apps/Contacts/                 

              lunchu full-eng                 关于其分析请参考    http://hi.baidu.com/mzatuungrrdpqxr/item/b8966a1fdf547954f0090e79
              
             make  -j4    (开了4个线程来处理) 看机子配置 
           
             漫长的等待.............................................

           期间可能出现的问题(我的没什么问题)

           摘了一部分:
           如按以上顺序执行,应该比较顺畅,我的一路绿灯啊,呵呵,下面是以往编译留下的种类还算全。主要看解决思路
         
           http://blog.163.com/zhaolin53636848@126/blog/static/490866682012133373414/
           如果机子配置了vim taglist  有时可以方便的定位问题。 以往遇到过函数头文件丢失,
           或函数未定义等问题 都可以通过vim -t funname 定位.h 文件。

     四、编译SDK安装ADT
         make & make sdk in Android

                   make

                      主要输出是 ~/android/src/out/target/product/generic下面的镜像文件

                       Generated: (out/target/product/generic/android-info.txt)
                       Target system fs image: out/target/product/generic/obj/PACKAGING/systemimage_unopt_intermediates/system.img
                        Install system fs image: out/target/product/generic/system.img
                       Target ram disk: out/target/product/generic/ramdisk.img
                       Target userdata fs image: out/target/product/generic/userdata.img
                        Installed file list: out/target/product/generic/installed-files.txt

                        载入模拟器运行

                              export ANDROID_PRODUCT_OUT=out/target/product/generic

                               cd out/host/linux-x86/bin

                             ./emulator

                       make sdk

                      不仅提供make产生的镜像文件,同时,提供编写application的环境,比如adb, android, emulator等等

                      所以后续工作。  。

         1)

            编译sdk。

                配置环境变量

               vim ~/.bashrc
          新增:
               export ECLIPSE_HOME=/usr/lib/eclipse

               export PATH=${PATH}:${ECLIPSE_HOME}

          编译sdk。

                make  PRODUCE-sdk-sdk         

               如果没有添加环境变量会出现以下错误:

               Installation Error: Eclipse plugin org.eclipse.equinox.launcher...jar not detected. Found ''. Aborting.

        2)

           安装eclipse编译adt。

            安装eclipse

                     方式一 :手动安装

                                      sudo apt-get install eclipse     (默认安装位子/usr/lib/eclipse

                                      cp /usr/lib/jni/libswt-*3740.so ~/.swt/lib/linux/x86_64/               

                                      启动

                                      eclipse

                      方式二:cd  源码根目录/sdk/eclipse/scripts   

                                      ./setup_eclipse.sh     .

                                       (这部有点问题也可能是我没配置好,执行 ./setuo_eclipse.sh  制定其他安装目录,

                                       后面解压部分找不到文件 路

                                      径问题,这里我只指定为当前目录 没问                              

                                      题)vi setup_eclipse.sh  (没仔细差原因大家可帮我修正下)

                                       这步 执行什么操作呢? 1 下载安装包并解压 2

                                     下载cdt c c++插件并解包

                     编译adt
                     sdk/eclipse/scripts/build_server.sh/home.lin/source/sdk/adt (adt存放的绝对路径)-j4       

       3)

           安装adt

           打开eclipse
           1,Help->Install New Software->Add.. -> archive...
            添加编译好~/adt下的android-eclipse-j4.zip文件睡觉 安装 adt---->sdk
           2 .  创建Android Virtual Device

            编译出来的SDK是没有AVD(Android Virtual Device)的,我们可以通过Android工具查看:

           Android list

            输出为:

 
  1. Available Android targets:  
  2. [1] Android 1.5  
  3.      API level: 3  
  4.      Skins: HVGA-P, QVGA-L, HVGA-L, HVGA (default), QVGA-P  
  5. Available Android Virtual Devices: 

         表明没有AVD。如果没有AVD,eclipse编译工程时会出错

        创建AVD:

         Android create avd -t 1 -c ~/sdcard.img -n myavd

        可以Android –help来查看上面命令选项的用法。创建中有一些选项,默认就行了

        再执行Android list,可以看到AVD存放的位置

        以后每次运行emulator都要加-avd myavd或@myavd选项,这里eclipse才会在你打开的emulator中调试程序

        注意:

        这样,SDK和ADT就生成了,就按照官方文档把他们整合到Eclipse,这里不再细说了。

        建个Android的新工程,试试你自己编译的sdk。

       五、编译内核

           1. 下载samsung内核源码,checkout jb源码 

      你可以下载这个通用版    git clone http://github.com/iDroid-Project/kernel_common.git

              git clone https://android.googlesource.com/kernel/samsung.git

              cd samsung

              git branch -a 

              git checkout -b android-samsung-3.0-jb origin/android-samsung-3.0-jb

          2. 下载android交叉编译链


            git clone https://android.googlesource.com/platform/prebuilt 
    

          3 设置交叉编译环境

          export PATH=~/android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin:$PATH
          export ARCH=arm
          export SUBARCH=arm
          export CROSS_COMPILE=arm-eabi-
 

         4 配置内核
      

         make herring_defconfig

         make menuconfig  菜单方式


        5. 编译内核      

           make -j4


  六 安装ndk    http://ice-k.iteye.com/blog/1174153

          

         下载安装:

          a、下载NDK包,下载地址:

http://www.ideasandroid.com/android/sdk/android-ndk-r4-linux-x86.zip

http://dl.google.com/android/ndk/android-ndk-r4b-linux-x86.zip


        b、解压,我们这里将解压到/home/ideasAndroid/dev/目录下。

       解压后目录结构为:/home/ideasAndroid/dev/android-ndk-r4

        c、配置path路径

         命令行执行sudo gedit /etc/profile,在文件末尾加入如下内容:

         #set NDK env

         NDKROOT=/home/myleft/Android-ndk-r4b

           export PATH=$NDKROOT:$PATH

           保存后,重启机器。至此 Android NDK 安装完毕。

         二.源码设置:

         配置path路径

         命令行执行sudo gedit /etc/profile,在文件末尾加入如下内容:

         #set NDK env

         NDK_HOME=源码目录/ndk

           export PATH=$ NDK_HOME:$PATH


       d、编译sample工程:

        执行命令 cd /home/myleft/Android-ndk-r4b/samples/hello-jni 进入示例项目根目录,然后执行如下命令:

          ndk-build

         您将看到系统会编译出libhello-jni.so

        至此示例项目编译完成,可将hello-jni项目导入ADT进行进一步的测试。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

等风来不如迎风去

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值