在Linux环境下怎么编译Android源码?

http://www.linuxidc.com/Linux/2011-10/44236.htm

JDK的安装:

Linux Mint 13 中自带有OpenJDK,但这个不是我想要的,我们要的是sun-java6。

1、在安装sun的jdk前,先删除OpenJDK,打开新立得,搜索OpenJDK,彻底删除所有的包。

或者执行 sudo apt-get autoremove openjdk-6-jre

2、在sun的官网上http://www.oracle.com/technetwork/java/javase/downloads/jdk6-downloads-1637591.html 下载最新的安装文件(如:jdk-6u34-linux-x64.bin)。

增加执行权限:sudo chmod u+x jdk-6u34-linux-x64.bin

将安装文件拷贝到 /usr/lib/java/ 目录下

执行安装命令  ./jdk-6u34-linux-x64.bin

 成功安装完JDK后,接下来我们将要进行JDK的配置,使用命 $ sudo gedit /etc/environment 对environment文件进行修改并添加以下代码:

     PATH="/usr/lib/java/jdk1.6.0_34/bin"  

    CLASSPATH="/usr/lib/java/jdk1.6.0_34/lib"

    JAVA_HOME="/usr/lib/java/jdk1.6.0_34"   

 若PATH已存在,则用冒号作间隔,将jdk的bin目录地址加上,这样java的环境变量将配置成功了,但这样默认使用的JDK可能还不是我们 刚才安装的,因为ubuntu可能还会有默认的jdk,如openjdk;所以,为了使默认使用的是我们安装的jdk,还需执行如下命令:

     $ sudo update-alternatives --install /usr/bin/java java /usr/lib/java/jdk1.6.0_34/bin/java 300

    $ sudo update-alternatives --install /usr/bin/javac javac /usr/lib/java/jdk1.6.0_34/bin/javac 300 

    $ sudo update-alternatives --config java    

 成功执行命令后,我们安装的JDK就是系统默认的了,执行命令 $ java -version  就可以成功看到 JDK的相关信息了如:

     java version "1.6.0_34"

    Java(TM) SE Runtime Environment (build 1.6.0_34-b04)
    Java HotSpot(TM) 64-Bit Server VM (build 20.9-b04, mixed mode) 

一、步骤如下:

$ cd [android系统所在目录]    //先进入到要编译的目录下面

$  .   build/envsetup.sh  //这个脚本用来设置ANDROID的编译环境(注意  . 后面有一个空格)

$  choosecombo   //这个命令也要再 build 目录下年进行,他是用来选择编译目标(如目标硬件屁股你太、eng还是user等)。一般而言,厂商会设置自己特有的编译选项

 补充:执行玩上面两个步骤就可以编译系统了,android平台提供了三个命令用于编译:make、mmm、mm,使用方法与环境如下:

make:不带任何参数,用于编译整个系统,时间比较长,若不想编译整个系统 最好不要用

make  + 模块名称:编译单个模块,会把与他有关的模块一起编译,

mm:这个命令要进入源码目录使用,他只编译当前目录下的模块,他和mmm一样的

注意:如果知道模块名称,则用 make + 模块名 即可 ;如果不知到模块名称但知道模块所在目录,用mmh或者 mmm,这两个编译时间比较短

$    make     //编译整个源码

说明:要想编译单个工程的源码,必须先把整个工程的源码编译一遍,然后再对单个源码进行编译

android 模块编译,mm 命令

如果你只需要修改某一个模块的内容,但是却每次都要执行make, 最后等待很长时间。
使用模块编译,那只需要在你所在的模块的目录或者其子目录,执行mm,便可以编译出一个单独的apk,这样岂不快哉!
具体步骤:
        1)打开~/.baserc文件,加入source ~/I850/build/envsetup.sh. 加入你自己该文件所在的路径,这样就免去了每次启动新的终端执行mm命令之前,需要引用此文件。
        2)完成步骤1之后,就可以在你的模块里面随意执行mm了,要想使用其他快速命令,可以查看envsetup.sh文件,比如cgrep,jgrep,resgrep在不同类型的文件里面进行相应的查询。还有m,mmm等等
        3)还可以使用adb push 将你的apk push到模拟器或者手机终端,也可以在工程根目录通过make -snod生成新的system.img

二、找编译源码后对应的apk的位置路径:

/home/wangxianming/aw813/AP/out/target/product/aw813/system/app/Mms.apk       //找短信对应的apk

三、怎么在手机中利用编译的adb,把编译出的adb烧到手机中:

(1)$ cd  /aw813/AP/out/host/linux-x86/bin

$  ./adb kill-server     //杀死手机中有的adb

(2)$ ./adb devices   //识别编译出的adb

(3)如果说权限不够,No Permissions  就改用root权限:

$ su       密码:

注意:数据库一定要一致!否则烧录的版本会报错!

四、安装APK

$ adb install  xxx.apk        //直接安装APK

$ adb install -r   xxx.apk   //安装并覆盖已经存在的APK

你可能感兴趣的:(linux,android,java)