Chinaunix首页 | 论坛 | 博客
  • 博客访问: 608015
  • 博文数量: 107
  • 博客积分: 713
  • 博客等级: 上士
  • 技术积分: 1050
  • 用 户 组: 普通用户
  • 注册时间: 2011-07-05 00:14
个人简介

呵呵

文章分类

全部博文(107)

文章存档

2015年(2)

2014年(17)

2013年(29)

2012年(52)

2011年(7)

分类: LINUX

2012-10-10 16:57:37



下面是我编译的过程:

1,配置环境

1>,需要安装的包

$sudo apt-get install git-core gnupg sun-java5-jdk flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev

这时会提示sun-java5-jdk找不到源

所以修改源文件

$vim /etc/apt/sources.list

在最后一行中加入地址
deb  jaunty multiverse 或者
//deb  hardy-updates main multiverse

更新源文件
$ sudo apt-get update

在重新安装

$sudo apt-get install git-core gnupg sun-java5-jdk flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev

可能还要装以下包,都打上,勤快一点吧,哎

$sudo apt-get install make
$sudo apt-get install gcc
$sudo apt-get install g++
$sudo apt-get install libc6-dev

$sudo apt-get install patch
$sudo apt-get install texinfo

$sudo apt-get install zlib1g-dev
$sudo apt-get install valgrind

2,在make sdk时需要sun-java5-jdk,用sun-java6-jdk会出错,而make的时候可以使用sun-java6-jdk。

所以安装sun-java6-jdk

$ sudo apt-get install sun-java6-jdk
然后做以下修改

$cd /etc/alternatives
$sudo rm javadoc.1.gz
$sudo ln -s /usr/lib/jvm/java-1.5.0-sun/man/man1/javadoc.1.gz javadoc.1.gz
$sudo rm javadoc
$sudo ln -s /usr/lib/jvm/java-1.5.0-sun/bin/javadoc javadoc

3,设置环境变量
$vim ~/.bashrc

在最后一行添加:
JAVA_HOME=/usr/lib/jvm/java-6-sun
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 PATH=${PATH}:${JAVA_PATH}:${HOME_BIN};
保存后,同步更新:
$source ~/.bashrc

4,安装repo(用来更新android源码)
创建~/bin目录,用来存放repo程序,如下:
$cd ~
$mkdir bin
并加到环境变量PATH中,其实第3步骤已经添加了

下载repo脚本并使其可执行:
$curl >~/bin/repo
$chmod a+x ~/bin/repo

4,初始化repo
repo是android对git的一个封装,简化了一些git的操作。
创建工程目录:
$mkdir android
$cd android
repo初始化
$ repo init -u git://android.git.kernel.org/platform/manifest.git -b cupcake

如果没有加-b cupcake,那么下的是最新的源代码,不过在make编译时可能会出现意想不到的错误

如:

在main.mk中会出现"You are attempting to build on a 32-bit system"

binary中会出现build/core/binary.mk:324: 目标“out/target/product/generic/obj/STATIC_LIBRARIES/libc_common_intermediates/arch-arm/syscalls/eventfd.o”在同一个规则中给出了多次。等等。。。

搞的老郁闷了

所以最后还是下了-b cupcake版本。
在此过程中需要输入名字和email地址。初始化成功后,会显示:
repo initialized in /android
在~/android下会有一个.repo的隐藏目录。

5, 同步源代码
$repo sync
这一步要很久很久,我网速很不好,下了一天一夜。

6, 编译android源码,并得到~/android/out目录
$cd ~/andoird
$make
这一过程很久

在make时可能出现的错误:

error: ‘fprintf’ was not declared in this scope

。。。。
因为ubuntu10.04中自带到都是gcc4.4,g++4.4,所以要重新下载gcc4.3,g++4.3.
$sudo apt-get install gcc-4.3 g++-4.3
$cd /usr/bin

$sudo rm gcc 
$sudo ln -s gcc-4.3 gcc
$sudo rm g++

$sudo ln -s g++-4.3 g++
$cd ~/android
$make

7,make成功后,运行
在模拟器上运行编译好的android
编译好android之后,emulator在~/android/out/host/linux-x86/bin 下,ramdisk.img,system.img和userdata.img则在~/android/out/target/product /generic下
$ cd ~/android/out/host/linux-x86/bin
增加环境变量
$vim ~/.bashrc
在.bashrc中新增环境变量,如下
#java 程序开发/运行的一些环境变量
export ANDROID_PRODUCT_OUT=~/android/out/target/product/generic
ANDROID_PRODUCT_OUT_BIN=~/android/out/host/linux-x86/bin
export PATH=${PATH}:${ANDROID_PRODUCT_OUT_BIN}:${ANDROID_PRODUCT_OUT};

最后,同步这些变化:
$source ~/.bashrc
$cd ~/android/out/target/product/generic
$emulator -system system.img -data userdata.img -ramdisk ramdisk.img
最后进入android桌面,就说明成功了。

8,编译sdk

$make PRODUCT-sdk-sdk

用make sdk编译可能会出现以下错误:

就是用eclipse新建android工程是会出现

Unable to get buffer of resource asset file
。。。
等等错误。

编译后生成的SDK存放在out/host/linux-x86/sdk/,此目录下有android-sdk_eng.xxx_linux- x86.zip和android-sdk_eng.xxx_linux-x86目录。android-sdk_eng.xxx_linux-x86就是 SDK目录

9,安装adt

下载eclipcse,如果不使用jee版本eclipse,在编译ADT时会出现如下错误

需要下载开发完全版eclipse, 在ubuntu 10.04上直接apt-get install eclipse安装的为简化版
可以这样操作:
1. sudo apt-get install eclipse
2. 下载jee版本的eclipse

3. sudo rm -rf /usr/lib/eclipse/
4,解压
5,sudo mv eclipse /usr/lib

6,配置环境变量

vim ~/.bashrc
在最后添加:
ECLIPSE_HOME=/usr/lib/eclipse
export ECLIPSE_HOME;

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

如果没有添加会出现以下错误:

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

8,在用户目录下建立一个adt文件夹
7,development/tools/eclipse/scripts/build_server.sh ~/adt
如果没有下载完全版的eclipse就会出现以下错误:

BUILD FAILED
/usr/lib/eclipse/plugins/org.eclipse.pde.build_3.6.0.v20100603/scripts/build.xml:35: The following error occurred while executing this line:
/usr/lib/eclipse/plugins/org.eclipse.pde.build_3.6.0.v20100603/scripts/build.xml:91: The following error occurred while executing this line:
/home/luther.gliethttp/sdk/eclipse/buildConfig/customTargets.xml:14: The following error occurred while executing this line:
/home/luther.gliethttp/sdk/eclipse/buildConfig/allElements.xml:27: The following error occurred while executing this line:
/usr/lib/eclipse/plugins/org.eclipse.pde.build_3.6.0.v20100603/scripts/genericTargets.xml:107: A cycle was detected when generating the classpath com.android.ide.eclipse.adt_0.9.8.v201009041615, org.eclipse.jdt_3.6.0.v201006080911, org.eclipse.ui.intro_3.4.0.v20100427, org.eclipse.help.base_3.5.0.v201006080911, org.eclipse.equinox.http.jetty_2.0.0.v20100503, org.mortbay.jetty.util_6.1.23.v201004211559, org.slf4j.api_1.5.11.v20100519-1910, ch.qos.logback.classic_0.9.19.v20100519-1505, ch.qos.logback.core_0.9.19.v20100419-1216, org.slf4j.api_1.5.11.v20100519-1910.

BUILD FAILED
/usr/lib/eclipse/plugins/org.eclipse.pde.build_3.5.2.R35x_20100114/scripts/build.xml:35: The following error occurred while executing this line:
/usr/lib/eclipse/plugins/org.eclipse.pde.build_3.5.2.R35x_20100114/scripts/build.xml:91: The following error occurred while executing this line:
/home/luther.gliethttp/sdk/eclipse/buildConfig/customTargets.xml:14: The following error occurred while executing this line:
/home/luther.gliethttp/sdk/eclipse/buildConfig/allElements.xml:27: The following error occurred while executing this line:
/usr/lib/eclipse/plugins/org.eclipse.pde.build_3.5.2.R35x_20100114/scripts/genericTargets.xml:106: Bundle com.android.ide.eclipse.adt_0.0.0 failed to resolve.:
Missing required plug-in org.eclipse.gef_0.0.0.
Missing required plug-in org.eclipse.wst.sse.core_0.0.0.
Missing required plug-in org.eclipse.wst.sse.ui_0.0.0.
Missing required plug-in org.eclipse.wst.xml.core_0.0.0.
Missing required plug-in org.eclipse.wst.xml.ui_0.0.0.


10,安装adt

打开eclipse
1,Help->Install New Software->Add.. -> archive...
添加编译好~/adt下的android-eclipse-v201012222013.zip文件
2,安装。

11,安装sdk

1,打开eclipes,
2,菜单栏选择window->Preferences->Android->SDK Location->

添加编译好文件夹

/home/maxwell/android/out/host/linux-x86/sdk/android-sdk_eng.maxwell_linux-x86

3,配置环境变量

把第7步配置的环境变量去掉,添加以下变量

export PATH=${PATH}:~/android/out/host/linux-x86/sdk/android-sdk_eng.maxwell_linux-x86/tools
最后我的环境变量是:

JAVA_HOME=/usr/lib/jvm/java-6-sun
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 PATH=${PATH}:${JAVA_PATH}:${HOME_BIN};
#NDK=~/android-ndk-r4b
#export NDK
#java 程序开发/运行的一些环境变量
ECLIPSE_HOME=/usr/lib/eclipse
export ECLIPSE_HOME;
export PATH=${PATH}:${ECLIPSE_HOME}
#export ANDROID_PRODUCT_OUT=~/android/out/target/product/generic
#ANDROID_PRODUCT_OUT_BIN=~/android/out/host/linux-x86/bin
#export PATH=${PATH}:${ANDROID_PRODUCT_OUT_BIN}:${ANDROID_PRODUCT_OUT}:${ECLIPSE_HOME}
export PATH=${PATH}:~/android/out/host/linux-x86/sdk/android-sdk_eng.maxwell_linux-x86/tools;

12,可以用eclipes来helloworld了

13,run时出现以下错误 
Failed to find an AVD compatible with target 'Android 1.5'. Launch aborted.
提示没有安装avd

14,安装avd
创建avd用的工具是android
android
出现问题:
Error: Error parsing the sdk.
Error: /home/maxwell/android/out/host/linux-x86/platforms is missing.
Error: Unable to parse SDK content.
解决:
在out/host/linux-x86/sdk/android-sdk_eng.lawrencekang_linux-x86/tools目录下 ./android 则可以
原来在out/host/linux-x86/sdk/android-sdk_eng.lawrencekang_linux-x86/下面有 platforms目录,可见android会查找
上一级目录下的platforms目录
将platforms 和add-ons copy到 out/host/linux-x86下面
然后运行 android就可以了
创建的avd放在 ~/.android/avd下面

编译出来的SDK是没有AVD(Android Virtual Device)的,我们可以通过android工具查看:
$ android list
$ android create avd -t 1 -n myavd
可以android –help来查看上面命令选项的用法。创建中有一些选项,默认就行了
再执行android list,可以看到AVD存放的位置
以后每次运行emulator都要加-avd myavd或@myavd选项:
$ emulator -avd myavd

15,eclipes中run 成功。

16,结束辛苦的旅程。

阅读(1816) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~