热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

编译android源码

首先搭建android编译环境。     (一)安装配置java5     1先安装java6(编译android需要java5,此处为推荐)        打开终端,执行以下命令

首先搭建android编译环境。

      (一)安装配置java5

      1 先安装java6(编译android需要java5,此处为推荐)

         打开终端,执行以下命令,或使用Adept/新立得软件管理器,在其中分别搜索"sun-java6-jre"和"sun-java6-jdk"并标记安装。 

         sudo apt-get install sun-java6-jre
         如果空间富裕,建议安装一个JDK。

         sudo apt-get install sun-java6-jdk
         提示:安装过程中需要你回答是否同意使用协议(终端中红蓝色的提示界面),此时按tab键至OK,再按回车即可正常安装。

      2 安装java5

        

      如果是ubuntu910版本,安装java5时需要更新源,方法:

         将下面更新放到更新源最前面
          更新的源:sudo gedit /etc/apt/sources.list
      deb http://cn.archive.ubuntu.com/ubuntu/ jaunty multiverse
      deb http://cn.archive.ubuntu.com/ubuntu/ jaunty-updates multiverse

 

      sudo apt-get install sun-java5-jre

       sudo apt-get install sun-java5-jdk 

      3 设置当前默认的java解释器和编译器: (ubuntu9.10如果没有安装多个java虚拟机的话可以跳过这一步。)

         sudo update-alternatives --config java
         执行后会出现类似如下的画面:

There are 2 alternatives which provide `java'.

Selection Alternative
-----------------------------------------------
+        1    /usr/lib/jvm/java-6-openjdk/jre/bin/java
          2    /usr/lib/jvm/java-6-sun/jre/bin/java
*         3    /usr/lib/jvm/java-1.5.0-sun/jre/bin/java
Press enter to keep the default[*], or type selection number:

输入 有包含 "sun" 的行的前面的数字。如上面显示,则输入3,然后回车确定。(编译android需要配置java5

sudo update-alternatives --config javac

操作和前面类似。

       4 配置JAVA环境变量:

     sudo gedit /etc/environment

        在其中添加如下两行:

     JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun
     ANDROID_JAVA_HOME=$JAVA_HOME
     CLASSPATH=.:/usr/lib/jvm/java-1.5.0-sun/lib

        要使配置生效必须重启机器或者在命令行输入

     . /etc/environment

       5 配置JVM的优先级: (ubuntu9.10如果没有安装多个java虚拟机的话可以跳过这一步。)

     sudo gedit /etc/jvm

        将文件中的

     /usr/lib/jvm/java-1.5.0-sun

        这一行填入到配置块的顶部

 

 (二)安装交叉编译器及其他编译工具

 

1.1.1       FLEX

Flex is a tool for generating scanners.

# sudo apt-get install flex

1.1.2       BISON

Bison is a general-purpose parser generator.

       # sudo apt-get install bison

 

1.1.3       gperf

gperf is a program that generates perfect hash functions.

       # sudo apt-get install gperf

 

1.1.4       libsdl-dev

SDL is a library that allows programs portable low level access to a video framebuffer, audio output, mouse, and keyboard.

       # sudo apt-get install libsdl-dev

1.1.5       libesd0-devl

This program is designed to mix together several digitized audio streams for playback by a single device.

       # sudo apt-get install libesd0-dev

 

1.1.6       libwxgtk2.6-dev

This package provides files needed to compile wxWidgets programs.

# sudo apt-get install libwxgtk2.6-dev

 

1.1.7       zlib1g-dev

zlib is a library implementing the deflate compression method.

       # sudo apt-get install zlib1g-dev

 

1.1.8       build-essential

This package contains an informational list of packages which are considered essential for building Debian packages.

       # sudo apt-get install build-essential

 

1.1.9       libncurses5-dev

This package contains the header files, static libraries and symbolic links.

       # sudo apt-get install libncurses5-dev

1.1.10 Uboot-mkimage

This package contains the mkimage utility.

       # sudo apt-get install uboot-mkimage

 

1.2             Cross Tool

1. Copy the cross tool package to /usr/local/arm

   If the arm directory is not exist in host pc then create the directory

       # mkdir /usr/local/arm

       # cp 4.3.1-eabi-armv6-20080707.tar.bz2 /usr/local/arm

      

2. unzip the code using tar command

       # tar xvjf 4.3.1-eabi-armv6-20080707.tar.bz2

 

3. Add source path in your environment file

# vi ~/.bashrc

Add the source path

PATH=$PATH:/usr/local/arm/4.3.1-eabi-armv6/usr/bin

# source ~/.bashrc

 

4 unzip the code using tar command

# tar xvjf cross-4.2.2-eabi.tar.bz2 -C /usr/local/arm

 

 

1.3             Build Android

1. 用tar命令将源码解压到某路径下path/.     

2. Move to android directory and build it.

       # cd path/android(这个是你解压android源码后的路径)

       # make(这步是编译,可能会需要很长时间)

-------------------------------------------------------------------------------------------------------------

明天再写如何在Eclipse下调试android源码

 


推荐阅读
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文比较了eBPF和WebAssembly作为云原生VM的特点和应用领域。eBPF作为运行在Linux内核中的轻量级代码执行沙箱,适用于网络或安全相关的任务;而WebAssembly作为图灵完备的语言,在商业应用中具有优势。同时,介绍了WebAssembly在Linux内核中运行的尝试以及基于LLVM的云原生WebAssembly编译器WasmEdge Runtime的案例,展示了WebAssembly作为原生应用程序的潜力。 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文由编程笔记小编整理,介绍了PHP中的MySQL函数库及其常用函数,包括mysql_connect、mysql_error、mysql_select_db、mysql_query、mysql_affected_row、mysql_close等。希望对读者有一定的参考价值。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • Oracle分析函数first_value()和last_value()的用法及原理
    本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
  • 本文详细介绍了在ASP.NET中获取插入记录的ID的几种方法,包括使用SCOPE_IDENTITY()和IDENT_CURRENT()函数,以及通过ExecuteReader方法执行SQL语句获取ID的步骤。同时,还提供了使用这些方法的示例代码和注意事项。对于需要获取表中最后一个插入操作所产生的ID或马上使用刚插入的新记录ID的开发者来说,本文提供了一些有用的技巧和建议。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • 纠正网上的错误:自定义一个类叫java.lang.System/String的方法
    本文纠正了网上关于自定义一个类叫java.lang.System/String的错误答案,并详细解释了为什么这种方法是错误的。作者指出,虽然双亲委托机制确实可以阻止自定义的System类被加载,但通过自定义一个特殊的类加载器,可以绕过双亲委托机制,达到自定义System类的目的。作者呼吁读者对网上的内容持怀疑态度,并带着问题来阅读文章。 ... [详细]
author-avatar
译林hy_774
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有