与Android源代码编辑相关的一切操作介绍

编程入门 行业动态 更新时间:2024-10-25 16:18:48

与Android<a href=https://www.elefans.com/category/jswz/34/1769335.html style=源代码编辑相关的一切操作介绍"/>

与Android源代码编辑相关的一切操作介绍

Android源代码相关

注:以下是在ubuntu 10.04中进行的。此文章的诞生,是我在魅族实习的这两个月来所学到的,有从同事身上学习到的,有因为工作上产生了此疑问而google到的。转载请注明出处。

 

一、更新ubuntu 10.04的软件源

# 用如下两句命令修改更新软件源列表

# 编辑源列表

sudo gedit /etc/apt/sources.list

 

# 更新源列表

sudo apt-get update

# 如果有错误信息,把不能连接的源删除后再重新支行 sudo apt-get update

 

# 升级系统,此步不用执行,此处只是记录下这个操作而已

sudo apt-get upgrade

 

# 以下源列表来自 .php?title=Template:10.04source&variant=zh-cn

 

#Archive.ubuntu更新服务器(欧洲,此为官方源,电信网通用户使用):

deb / lucidmain restricted universe multiverse

deb main restricted universe multiverse

deb main restricted universe multiverse

deb / lucid-proposedmain restricted universe multiverse

deb main restricted universe multiverse

deb-src main restricted universe multiverse

deb-src main restricted universe multiverse

deb-src main restricted universe multiverse

deb-src main restricted universe multiverse

deb-src main restricted universe multiverse

 

#骨头兄亲自搭建并维护这个Ubuntu源(该源位于浙江杭州百兆共享宽带的电信机房):

deb / lucid mainrestricted universe multiverse

deb main restricted universe multiverse

deb main restricted universe multiverse

deb main restricted universe multiverse

deb main restricted universe multiverse

deb-src / lucidmain restricted universe multiverse

deb-src main restricted universe multiverse

deb-src main restricted universe multiverse

deb-src main restricted universe multiverse

deb-src main restricted universe multiverse

 

#网易163更新服务器:

deb / lucidmain restricted universe multiverse

deb main restricted universe multiverse

deb main restricted universe multiverse

deb main restricted universe multiverse

deb main restricted universe multiverse

deb-src main restricted universe multiverse

deb-src main restricted universe multiverse

deb-src main restricted universe multiverse

deb-src main restricted universe multiverse

deb-src main restricted universe multiverse

 

#sohu 更新服务器:

deb / lucidmain restricted universe multiverse

deb main restricted universe multiverse

deb main restricted universe multiverse

deb main restricted universe multiverse

deb main restricted universe multiverse

deb-src main restricted universe multiverse

deb-src main restricted universe multiverse

deb-src main restricted universe multiverse

deb-src main restricted universe multiverse

deb-src main restricted universe multiverse

 

#Mirrors.shlug更新服务器(电信服务器,UbuntuChina Official Mirror, maintained by Shanghai Linux User Group):

deb main restricted universe multiverse

deb main restricted universe multiverse

deb lucid-updatesmain restricted universe multiverse

deb main restricted universe multiverse

deb main restricted universe multiverse

deb-src main restricted universe multiverse

deb-src main restricted universe multiverse

deb-src main restricted universe multiverse

deb-src main restricted universe multiverse

deb-src main restricted universe multiverse

 

#Mirror.lupaworld更新服务器(浙江省杭州市双线服务器):

deb main restricted universe multiverse

deb main restricted universe multiverse

deb main restricted universe multiverse

deb main restricted universe multiverse

deb main restricted universe multiverse

deb-src main restricted universe multiverse

deb-src main restricted universe multiverse

deb-src main restricted universe multiverse

deb-src main restricted universe multiverse

deb-src main restricted universe multiverse

 

#厦门大学更新服务器(教育网服务器):

deb / lucidmain restricted universe multiverse

deb restricted universe multiverse

deb main restricted universe multiverse

deb main restricted universe multiverse

deb main restricted universe multiverse

deb-src main restricted universe multiverse

deb-src main restricted universe multiverse

deb-src main restricted universe multiverse

deb-src main restricted universe multiverse

deb-src main restricted universe multiverse

 

#成都市 电子科技大学更新服务器(教育网,推荐校园网和网通用户使用):

deb main multiverse restricted universe

deb main multiverse restricted universe

deb main multiverse restricted universe

deb main multiverse restricted universe

deb main multiverse restricted universe

deb-src main multiverse restricted universe

deb-src main multiverse restricted universe

deb-src main multiverse restricted universe

deb-src main multiverse restricted universe

deb-src main multiverse restricted universe

 

# == 如果无法解析uestc.edu域名,请使用以下地址 ==

 

deb main multiverse restricted universe

deb main multiverse restricted universe

deb main multiverse restricted universe

deb main multiverse restricted universe

deb main multiverse restricted universe

deb-src main multiverse restricted universe

deb-src main multiverse restricted universe

deb-src main multiverse restricted universe

deb-src main multiverse restricted universe

deb-src main multiverse restricted universe

 

#上海市上海交通大学更新服务器:

deb / lucidmain multiverse restricted universe

deb main multiverse restricted universe

deb main multiverse restricted universe

deb main multiverse restricted universe

deb main multiverse restricted universe

deb-src main multiverse restricted universe

deb-src main multiverse restricted universe

deb-src main multiverse restricted universe

deb-src main multiverse restricted universe

deb-src main multiverse restricted universe

 

#中国科学技术大学更新服务器:

deb / lucidmain multiverse restricted universe

deb main multiverse restricted universe

deb main multiverse restricted universe

deb main multiverse restricted universe

deb main multiverse restricted universe

deb-src main multiverse restricted universe

deb-src main multiverse restricted universe

deb-src main multiverse restricted universe

deb-src main multiverse restricted universe

deb-src main multiverse restricted universe

 

#中国地质大学(北京)更新服务器:

deb / lucidmain restricted universe multiverse

deb main restricted universe multiverse

deb main restricted universe multiverse

deb / lucid-proposedmain restricted universe multiverse

deb main restricted universe multiverse

deb-src / lucidmain restricted universe multiverse

deb-src main restricted universe multiverse

deb-src main restricted universe multiverse

deb-src main restricted universe multiverse

deb-src main restricted universe multiverse

 

#中国台湾 台湾大学更新服务器(推荐网通用户使用,电信PING平均响应速度41MS。强烈推荐此源,比较完整,较少出现同步问题):

deb main restricted universe multiverse

deb-src/ lucid main restricted universe multiverse

deb main restricted universe multiverse

deb-src/ lucid-updates main restricted universemultiverse

deb main restricted universe multiverse

deb-src/ lucid-backports main restricted universemultiverse

deb main restricted universe multiverse

deb-src/ lucid-security main restricted universemultiverse

deb main multiverse restricted universe

deb-src/ lucid-proposed main restricted universemultiverse

 

#mirror.rootguide更新服务器(上海市 电信):

deb main restricted universe multiverse

deb-src main restricted universe multiverse

deb main restricted universe multiverse

deb-src main restricted universe multiverse

deb main restricted universe multiverse

deb-src main restricted universe multiverse

deb main restricted universe multiverse

deb-src main restricted universe multiverse

deb main multiverse restricted universe

deb-src main restricted universe multiverse

 

#台湾的官方源速度也相当不错,有时甚至快于内地的:

deb main restricted universe multiverse

deb main restricted universe multiverse

deb main restricted universe multiverse

deb main restricted universe multiverse

deb main restricted universe multiverse

deb-src main restricted universe multiverse

deb-src main restricted universe multiverse

deb-src main restricted universe multiverse

deb-src main restricted universe multiverse

deb-src main restricted universe multiverse

 

#以下源支持IPV6,推荐可以使用IPV6的教育网用户使用,速度在200kb/s左右,如需源代码,将deb替换成deb-src即可

deb main multiverse restricted universe

deb main multiverse restricted universe

deb main multiverse restricted universe

deb main multiverse restricted universe

deb main multiverse restricted universe

 

deb main multiverse restricted universe

deb main multiverse restricted universe

deb main multiverse restricted universe

deb main multiverse restricted universe

deb main multiverse restricted universe

 

deb/ lucid mainmultiverse restricted universe

deb main multiverse restricted universe

deb/ lucid-proposed mainmultiverse restricted universe

deb/ lucid-security mainmultiverse restricted universe

deb/ lucid-updates mainmultiverse restricted universe

 

二、更改Root账户

注:此操作不执行也是可以的。

 

1、重置root密码:

利用现有管理员帐户登陆Ubuntu,在终端执行命令:sudopasswd root,接着输入密码和root密码,重复密码。这时候root用户已经设定了新的密码

2、允许以root用户登录:

默认情况是不允许用root帐号直接登陆图形界面的。这可以通过修改/etc/gdm/gdm.conf文件来允许root直接登陆,在该文件中找到 AllowRoot=false 将其改为 AllowRoot=true 切换用户就可以了。

注:gdm.conf默认是只读属性,修改前请先使用sudo chmod 777 /etc/gdm/gdm.conf 将文件权限设置为为777。

 

三、安装必要的库和包

1、Linux 32位:

官方推荐安装的包:

sudo apt-get install git-core gnupg flex bison gperf libsdl-devlibesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev

         其中官方推荐的还有sun-java5-jdk ,此包将在下一节详细介绍。

         此外,还可以安装Valgrind 工具,它可以帮助你找到内存泄露,堆栈溢出和数组越界等问题:

                   sudoapt-get install valgrind

2、Linux 64

如果是64位的操作系统,除了32位系统所需的包之外,还需要Piecesfrom the 32-bit cross-building environment和X11 development,全部命令如下:

                   sudoapt-get install git-core gnupg flex bison gperf build-essential zip curlzlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-devia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev

         然后需要设置系统将正确的Java版本(1.5)设置为默认:(此内容将在下一节详细介绍)

                   sudoupdate-java-alternatives –s java-1.5.0-sun

         最后设置X11:Ubuntudoesn't have packages for the X11 libraries, but that can be worked around withthe following command:

sudo ln -s /usr/lib32/libX11.so.6 /usr/lib32/libX11.so

3、另外,如果在编译过程中发现某些命令找不到,就apt-get它。可能还会需要的有:

sudo apt-getinstall libc6-dev

sudo apt-getinstall patch

sudo apt-getinstall texinfo

sudo apt-getinstall zlib1g-dev

sudo apt-getinstall valgrind

 

四、安装和配置JDK 1.5

         Android2.2的官方文档中说可以使用JDK 1.6来编译,据说使用JDK1.6编译时会出现Make Doc错误,所以最好还是使用JDK 1.5来编译,至于用JDK1.6来编译,我没有试过。

 

1、 安装 JDK 1.5

有两种方法,一是apt-get安装,二是使用安装包来手动安装,分别介绍如下:

apt-get安装:

由于Ubuntu10.04中已经没有了JDK 1.5的源,所以,先备份一下源列表:

           sudo cp/etc/apt/sources.list /etc/apt/sources.list.backup

然后把下面的地址添加到/etc/apt/sources.list 中:

                            deb/ jaunty multiverse

deb / jaunty-updates multiverse

 

或者如下源:

deb jaunty main restrictedmultiverse universe

deb jaunty-updates main restricteduniverse multiverse

deb jaunty-security main restricteduniverse multiverse

deb jaunty-proposed mainrestricted universe multiverse 

 

更多的源列表:

#Archive.Ubuntu更新服务器(欧洲,此为官方源,电信网通用户使用):

 

deb / jaunty main restricted universe multiverse

deb / jaunty-security main restricted universe multiverse

deb / jaunty-updates main restricted universe multiverse

deb / jaunty-proposed main restricted universe multiverse

deb / jaunty-backports main restricted universe multiverse

deb-src / jaunty main restricted universe multiverse

deb-src / jaunty-security main restricted universe multiverse

deb-src / jaunty-updates main restricted universe multiverse

deb-src / jaunty-proposed main restricted universe multiverse

deb-src / jaunty-backports main restricted universe multiverse

 

#网易163更新服务器:

 

deb / jaunty main restricted universe multiverse

deb / jaunty-security main restricted universe multiverse

deb / jaunty-updates main restricted universe multiverse

deb / jaunty-proposed main restricted universe multiverse

deb / jaunty-backports main restricted universe multiverse

deb-src / jaunty main restricted universe multiverse

deb-src / jaunty-security main restricted universe multiverse

deb-src / jaunty-updates main restricted universe multiverse

deb-src / jaunty-proposed main restricted universe multiverse

deb-src / jaunty-backports main restricted universe multiverse

 

#Mirrors.shlug更新服务器(电信服务器,Ubuntu China Official Mirror, maintained by Shanghai Linux User Group):

 

deb jaunty main restricted universe multiverse

deb jaunty-security main restricted universe multiverse

deb jaunty-updates main restricted universe multiverse

deb jaunty-backports main restricted universe multiverse

deb jaunty-proposed main restricted universe multiverse

deb-src jaunty main restricted universe multiverse

deb-src jaunty-security main restricted universe multiverse

deb-src jaunty-updates main restricted universe multiverse

deb-src jaunty-backports main restricted universe multiverse

deb-src jaunty-proposed main restricted universe multiverse

 

#Mirror.lupaworld更新服务器(浙江省杭州市双线服务器,推荐):

 

deb jaunty main restricted universe multiverse

deb jaunty-security main restricted universe multiverse

deb jaunty-updates main restricted universe multiverse

deb jaunty-backports main restricted universe multiverse

deb jaunty-proposed main restricted universe multiverse

deb-src jaunty main restricted universe multiverse

deb-src jaunty-security main restricted universe multiverse

deb-src jaunty-updates main restricted universe multiverse

deb-src jaunty-backports main restricted universe multiverse

deb-src jaunty-proposed main restricted universe multiverse

 

#厦门大学更新服务器(教育网服务器):

 

deb / jaunty main restricted universe multiverse

deb / jaunty-backports restricted universe multiverse

deb / jaunty-proposed main restricted universe multiverse

deb / jaunty-security main restricted universe multiverse

deb / jaunty-updates main restricted universe multiverse

deb-src / jaunty main restricted universe multiverse

deb-src / jaunty-backports main restricted universe multiverse

deb-src / jaunty-proposed main restricted universe multiverse

deb-src / jaunty-security main restricted universe multiverse

deb-src / jaunty-updates main restricted universe multiverse

 

#成都市 电子科技大学更新服务器(教育网,推荐校园网和网通用户使用):

 

deb / jaunty main multiverse restricted universe

deb / jaunty-backports main multiverse restricted universe

deb / jaunty-proposed main multiverse restricted universe

deb / jaunty-security main multiverse restricted universe

deb / jaunty-updates main multiverse restricted universe

deb-src / jaunty main multiverse restricted universe

deb-src / jaunty-backports main multiverse restricted universe

deb-src / jaunty-proposed main multiverse restricted universe

deb-src / jaunty-security main multiverse restricted universe

deb-src / jaunty-updates main multiverse restricted universe

 

# == 如果无法解析uestc.edu域名,请使用以下地址 ==

 

deb / jaunty main multiverse restricted universe

deb / jaunty-backports main multiverse restricted universe

deb / jaunty-proposed main multiverse restricted universe

deb / jaunty-security main multiverse restricted universe

deb / jaunty-updates main multiverse restricted universe

deb-src / jaunty main multiverse restricted universe

deb-src / jaunty-backports main multiverse restricted universe

deb-src / jaunty-proposed main multiverse restricted universe

deb-src / jaunty-security main multiverse restricted universe

deb-src / jaunty-updates main multiverse restricted universe

 

#上海市上海交通大学更新服务器(教育网,推荐校园网和网通用户使用):

 

deb / jaunty main multiverse restricted universe

deb / jaunty-backports main multiverse restricted universe

deb / jaunty-proposed main multiverse restricted universe

deb / jaunty-security main multiverse restricted universe

deb / jaunty-updates main multiverse restricted universe

deb-src / jaunty main multiverse restricted universe

deb-src / jaunty-backports main multiverse restricted universe

deb-src / jaunty-proposed main multiverse restricted universe

deb-src / jaunty-security main multiverse restricted universe

deb-src / jaunty-updates main multiverse restricted universe

 

#中国科学技术大学更新服务器(教育网,推荐校园网和网通用户使用):

 

deb / jaunty main multiverse restricted universe

deb / jaunty-backports main multiverse restricted universe

deb / jaunty-proposed main multiverse restricted universe

deb / jaunty-security main multiverse restricted universe

deb / jaunty-updates main multiverse restricted universe

deb-src / jaunty main multiverse restricted universe

deb-src / jaunty-backports main multiverse restricted universe

deb-src / jaunty-proposed main multiverse restricted universe

deb-src / jaunty-security main multiverse restricted universe

deb-src / jaunty-updates main multiverse restricted universe

 

#中国台湾 台湾大学更新服务器(推荐网通用户使用,电信PING平均响应速度41MS。强烈推荐此源,比较完整,较少出现同步问题):

 

deb / jaunty main restricted universe multiverse

deb-src / jaunty main restricted universe multiverse

deb / jaunty-updates main restricted universe multiverse

deb-src / jaunty-updates main restricted universe multiverse

deb / jaunty-backports main restricted universe multiverse

deb-src / jaunty-backports main restricted universe multiverse

deb / jaunty-security main restricted universe multiverse

deb-src / jaunty-security main restricted universe multiverse

deb / jaunty-proposed main multiverse restricted universe

deb-src / jaunty-proposed main restricted universe multiverse

 

#mirror.rootguide更新服务器(上海市 电信):

 

deb / jaunty main restricted universe multiverse

deb-src / jaunty main restricted universe multiverse

deb / jaunty-updates main restricted universe multiverse

deb-src / jaunty-updates main restricted universe multiverse

deb / jaunty-backports main restricted universe multiverse

deb-src / jaunty-backports main restricted universe multiverse

deb / jaunty-security main restricted universe multiverse

deb-src / jaunty-security main restricted universe multiverse

deb / jaunty-proposed main multiverse restricted universe

deb-src / jaunty-proposed main restricted universe multiverse

 

#台湾的官方源速度也相当不错,有时甚至快于内地的:

 

deb jaunty main restricted universe multiverse

deb jaunty-security main restricted universe multiverse

deb jaunty-updates main restricted universe multiverse

deb jaunty-backports main restricted universe multiverse

deb jaunty-proposed main restricted universe multiverse

deb-src jaunty main restricted universe multiverse

deb-src jaunty-security main restricted universe multiverse

deb-src jaunty-updates main restricted universe multiverse

deb-src jaunty-backports main restricted universe multiverse

deb-src jaunty-proposed main restricted universe multiverse

 

#安全更新:

#deb jaunty-security main restricted

#deb-src jaunty-security main restricted

#deb jaunty-security universe

#deb-src jaunty-security universe

#deb jaunty-security multiverse

#deb-src jaunty-security multiverse

 

 

#新增青岛大学源

 

#(对于运行9.04的用户 For users that running Ubuntu 9.04)

 

deb jaunty main restricted multiverse universe

deb jaunty-updates main restricted universe multiverse

deb jaunty-security main restricted universe multiverse

deb jaunty-proposed main restricted universe multiverse

 

#(对于运行9.10的用户 For users that running Ubuntu 9.10)

 

deb karmic main restricted multiverse universe

deb karmic-updates main restricted universe multiverse

deb karmic-security main restricted universe multiverse

deb karmic-proposed main restricted universe multiverse

然后再 sudoapt-get update,

然后再执行 sudoapt-get install sun-java5-jdk。

使用安装包手动安装:

将jdk-6u20-linux-i586.bin复制到/usr/lib/jvm/java文件夹下,如果文件夹不存在,刚新建此文件夹:

执行:sudo chmoda+x jdk-1_5_0_22-linux-amd64.bin

执行:sudo ./jdk-1_5_0_22-linux-amd64.bin

连续按回车直到显示要求输入yes/no,此时输入yes并回车,将会得到jdk1.5.0_22目录。

此时JDK安装完毕。

在终端执行代码:sudogedit /etc/environment 或者 gedit ~/.bashrc,添加如下变量:

JAVA_HOME=/usr/lib/jvm/java/jdk1.5.0_22

JRE_HOME=${JAVA_HOME}/jre

export ANDROID_JAVA_HOME=$JAVA_HOME

export CLASSPATH=.:${JAVA_HOME}/lib:$JRE_HOME/lib:$CLASSPATH

export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin

export JAVA_HOME

export JRE_HOME

export CLASSPATH

HOME_BIN=~/bin/

export ANDROID_PRODUCT_OUT=~/android/out/target/product/generic

ANDROID_PRODUCT_OUT_BIN=~/android/android-sdk-linux_86/tools

export PATH=${PATH}:${JAVA_PATH}:${HOME_BIN}:${ANDROID_PRODUCT_OUT_BIN}:${ANDROID_PRODUCT_OUT}

注:ANDROID_PRODUCT_OUT_BIN=~/android/android-sdk-linux_86/tools这一句,是因为我下载了SDK,而不是编译之后生成的,因为初次编译,怕有问题,所以借用了官方的SDK中的emulator来用的。此语句当然也可以忽略。

保存.bashrc文件后,要更新配置文件

         source ~/.bashrc

 

2、 设置默认的JDK

因为系统默认可能存在别的JDK,比如JDK 1.6,所以先在终端执行代码:

           java -version

           javac -version

         如果显示的Java和Javac版本是1.5的,刚无需进行下面的操作,否则要按下面的操作进行:

sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java/jdk1.5.0_22/bin/java300

sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/java/jdk1.5.0_22/bin/javac300

 

或者:

sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java/jdk1.5.0_22/bin/java 50 --slave /usr/share/man/man1/java.1.gz java.1.gz /usr/lib/jvm/java/jdk1.5.0_22/man/man1/java.1

sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/java/jdk1.5.0_22/bin/javac 50 --slave /usr/share/man/man1/javac.1.gz javac.1.gz /usr/lib/jvm/java/jdk1.5.0_22/man/man1/javac.1

 

接着执行:sudoupdate-alternatives --config java  ,选择对应的java

再执行:sudoupdate-alternatives --config javac ,选择对应的javac

 

输入java -version 和 javac –version,看是否分别都是1.5的JDK。如果是,刚成功安装和配置JDK1.5,否则可以先使用sudo update-alternatives --remove java/usr/lib/jvm/java/jdk1.5.0_22/bin/java 和 sudoupdate-alternatives --remove javac /usr/lib/jvm/java/jdk1.5.0_22/jre/bin/javac删除刚刚添加过的,然后再重新配置。

 

五、下载并编译Android源码

1、安装Repo

         创建~/bin目录,主要是用来存放repo程序,如下:

                   cd~

                   mkdirbin

将此路径添加到环境变量PATH中:

         gedit ~/.bashrc

如果有HOME_BIN=~/bin/ ,则不用再添加,否则要加上HOME_BIN=~/bin/,然后保存.bashrc文件后,要更新配置文件

source ~/.bashrc

下载repo脚本并使其可执行:

         curl ;~/bin/repo

chmod a+x ~/bin/repo

2、初始化Repo

         mkdirandroid

         cdandroid

repo init -ugit://android.git.kernel/platform/manifest.git

注:如果主干的源代码编译不成功,可以试试分支的源代码:

repo init -u git://android.git.kernel/platform/manifest.git -bandroid-2.2_r1

在此过程中需要输入名字和email地址。初始化成功后,会显示:

repo initialized in ~/android

在~/android下会有一个.repo的隐藏目录。

如果在此处出现 repo:commandnot found错误,则按如下方法解决:

         在 ~/.bashrc 中,将 export PATH=$PATH:$HOME/bin 添加到其中即可。

3、  同步源代码:

repo sync

4、  编译源代码:

cd ~/android

make –j3

注:这里的使用了-j3这个选项,j是选择电脑CPU的个数,如果是双核,那就是2+1,所以用-j3,具体情况自己来定。

 

在编译过程中,可能会出现如下错误:

l  错误1:

Install: out/host/linux-x86/framework/droiddoc.jar 

target Generated: libclearsilver-jni <= out/host/common/obj/JAVA_LIBRARIES/clearsilver_intermediates/javalib.jar

host C: libclearsilver-jni <= external/clearsilver/java-jni/j_neo_util.c

In file included from /usr/include/features.h:378,

                 from /usr/include/string.h:26,

                 from external/clearsilver/java-jni/j_neo_util.c:1:

/usr/include/gnu/stubs.h:9:27: error: gnu/stubs-64.h: 没有那个文件或目录

make: *** [out/host/linux-x86/obj/SHARED_LIBRARIES/libclearsilver-jni_intermediates/j_neo_util.o] 错误 1

解决办法是执行如下命令:

sudo apt-get install lib64z1-dev libc6-dev-amd64 g++-multiliblib64stdc++6

l  make若提示找不到-lncurses:则需要做以下链接:

ln –s /lib/libncurses.so.5 /lib/libncurses.so

 

l  编译版本错误:

You are attempting to build with the incorrect version of java.

Your version is: java version "1.6.0_17".

The correct version is: 1.5.

Please follow the machine setup instructions at

出现此错误的原因是因为使用了JDK 1.6来编译Android,有两种解决办法,一是按上面介绍的,使用JDK 1.5来编译,另一种解决办法如下:

gedit ~/adroid/build/core/main.mk

修改

java_version := $(shell java -version 2>&1 | head -n 1 | grep'[ "]1\.5[\. "$$]')

javac_version := $(shell javac -version 2>&1 | head -n 1 |grep '[ "]1\.5[\. "$$]')

java_version := $(shell java -version 2>&1 | head -n 1 | grep'[ "]1\.6[\. "$$]')

javac_version := $(shell javac -version 2>&1 | head -n 1 |grep '[ "]1\.6[\. "$$]')

l  提示missing了“run-java-tool”错误:

解决方法:在make前设置环境变量ANDROID_JAVA_HOME到$JAVA_HOME,即在 ~/.bashrc 中添加 export ANDROID_JAVA_HOME=$JAVA_HOME 即可。

5、  在模拟器上运行编译好的Android

编译好android之后,/out/target/product/generic下会出现如下文件

android-info.txt

ramdisk.img

clean_steps.mk

install-files.txt

perivous_build_config.mk

system.img

userdata.img

我们运行emulator只需要ramdisk.img,system.img和userdata.img这三个文件。

由于之前我们已经下载官方的SDK包了,并且把路径添加到配置文件了,所以把三个文件复制到/android-sdk-linux_x86下即可,然后运行如下命令即可:

emulator -system system.img -data userdata.img -ramdisk ramdisk.img

或者:

emulator –image system.img -data userdata.img -ramdisk ramdisk.img

         或者将这三个img文件拷贝到 AndroidSDK 目录下的platforms/android-x(android版本)/images(如果images文件夹不存在则需要新建一个),然后再运行Android SDK目录下的tools/emulator即可,此方法为推荐的方法,在覆盖这三个img文件时,要记得备份原生的三个img

         如果没有下载过官方的SDK包,则按如下步骤进行操作:

                   在工作目录下,即~/android 下设置环境变量:

. build/envsetup.sh

partner_setup

emulator

或者在~/android/out/target/product/generic/ 目录下运行命令(此方法为推荐方法):

emulator -system system.img -data userdata.img -ramdisk ramdisk.img

或者:

emulator –image system.img -data userdata.img -ramdisk ramdisk.img

这时候Android模拟器的界面就出现了。

         如果还有错误,就做如下操作:

export  ANDROID_PRODUCT_OUT=~/android/out/target/product/generic

~/android/out/host/linux-x86/bin/emulator -image system.img -datauserdata.img -ramdisk ramdisk.img

 

6、  编译生成SDK

在工作目录下,即 ~/android 下,运行make sdk即可。

注意事项:

l  安装Java开发包的时候,不要安装sun-java6-jdk,要安装sun-java5-jdk避免出现make doc的错误。

l  直接使用源码中的某些应用作为基于编译后的SDK上的工程时,出现有些符号找不到的问题,按以下方法解决:

拿android.WebAddress类为例,在很多Google自带的应用中使用过,但是要是直接在编译后的SDK上拿来用,就发现此对象在SDK中找不到,解决办法就是,在其包的源码上的前几行的注释有{@hide}这个标识,删掉该行后进行编译所生成的SDK中就包含了android.WebAddress的对象。所以如果下面什么类找不到,就到类所在的源文件中重复以上修改即可。 即便按照以上操作,可能也会出现有的包找不到的情况,这种情况就例如包com.google.android.googleapps.IGoogleLoginService和com.google.android.googlelogin.GoogleLoginServiceConstants,解决方法就是在调用该类的工程程序中,包含以下外部的jar包:framework/opt/com.google.android/frame.jar和framework/opt/com.google.android.googlelogin/client.jar

六、在Eclipse中使用Android源代码

1、将编译好的Andorid源代码中的 .classpath 文件拷贝到Android源文件的根目录下:

         cd ~/android    # Enter the root of the android project

cpdevelopment/ide/eclipse/.classpath .       #Copy the .classpath file to the root of the android project

chmod u+w.classpath  # Make the copy writable

2、修改Eclipse程序的配置文件:

把eclipse.ini(在eclipse软件的安装目录下)的3个值改为下面的值:

-Xms128m

-Xmx512m

-XX:MaxPermSize=256m

3、将Android源代码导入到Eclipse中:

导入前先检查.classpath里的文件在Android源码中是否有相应的文件(文件夹),否则也会破坏Android源码(一般是多添加文件/文件夹),.classpath里多余的路径可删除。

         然后可在Eclipse中新建一个JavaProject,注意,一定要是Java Project而不能是Android Project!!!

         然后选择“Createproject from existing source”来导入Andorid源代码。

在导入代码的过程中,可能会碰到提示有重复项,需要编辑.classpath文件,搜索vpn,会发现有两个是重复的,需要删掉其中一个。

android-formatting.xml、.classpath和android.importorder都放在development/ide/eclipse/下

android-formatting.xml用来配置eclipse编辑器的代码风格;android.importorder用来配置eclipse的import的顺序和结构。

在window->preferences->java->Codestyle->Formatter中导入android-formatting.xml

在window->preferences->java->Codestyle->OrganizeImports中导入android.importorder

 

可选安装anyedit插件:在,以增强Eclipse的功能。

 

4、在Eclipse中编辑源代码:

         此处要注意,如果在将Android源代码导入到Eclipse中后,每次reposync之后,都要在Eclipse中刷新一下相应的文件/文件夹。

         如果要添加应用程序到Android源代码中,则要按以下步骤进行操作,以便新添加的应用程序可以被添加到Android的构建路径以以便编译:

l  Project Properties

l  Select "Java Build Path" from the left-hand menu.

l  Choose the "Source" tab.

l  Click "Add Folder...".

l  Add your app's "src" directory.

l  Click OK.

当按上述步骤完成后,在Eclipse的工程导航窗口中,新添加的应用程序所处的位置应该是:android/packages/apps/YourAppName/src。Depending on whichapp(s) you include, you may also need to include othersrc/main/java directoriesunder android/dalvik/libcore. Do this if you find you cannot build with thedefault set.

5、在Eclipse中调试Android源代码:

         首先启动模拟器:

                  cd ~/android    # enter the root of the android project

. build/envsetup.sh

lunch 1   # to build theemulator

make      # if you didn'talready do this

emulator  # you should see aGUI picture of a phone

         然后再启动DDMS:

                   cd~/android    # enter the root of theandroid project

                   ddms        # you should get a splufty debuggingconsole

注:以上是根据官方文档整理的,但是以我自己的实际经验来看,不用那么麻烦,只要启动Eclipse,然后打开DDMS视图就可以继续下面的操作。

然后在eclipse中配置调试类型和端口:

在 DDMS中选择想要调试的进程,用 phone进程为例,选中com.android.phone,然后在Eclipse的菜单栏中Run->DebugConfigurations->Remote Java Application -> New,设置”Host:”设为 localhost,”Port:”设为8700,”ConnectionType”为Standard(SocketAttach),然后再在代码中设置断点,就可以进行单步跟踪调试了。

7、  编译Android源代码中的程序:

在对源代码进行修改后,可以使用make进行完全编译,如果只是修改了源代码中的某一个应用程序,比如短信,则可以不用完全make整个Android源代码,以下是几种方法:

cd ~/android      #enter the root of the android project

. build/envsetup.sh

此时会多出m/mm/mmm等命令,m 编译整个 android 工程,mm 编译当前目录下的模块,mmmpath 编译指定目录下的模块。比如编译短信,有如下方法:

l  make Mms

l  make clean-Mms Mms

l  mmm packages/apps/Mms

转载于:.html

更多推荐

与Android源代码编辑相关的一切操作介绍

本文发布于:2024-03-06 10:13:46,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1715066.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:源代码   编辑   操作   Android

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!