UBUNTU 12.04 (AMD64)编译android开发环境全记录




    本文介绍在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进行进一步的测试。



 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值