估计和编donut差不多,参照donut的编译步骤,由于我之前编译过donut,所以环境基本都有了(环境配置参照我的blog),直接开始编译就行了。
1 执行envsetup.sh
切到froyo的目录
. build/envsetup.sh
2 开始编译
在froyo目录
make
提示出错,说需要java1.6
要安装java1.6并修改配置文件.bashrc, 由于我现在要维护donut和froyo两个版本,编译的时候需要的环境变量不一样,所以把以前写在.bashrc中的相关内容剪切出来,作成两个脚本,一个编donut的时候用,一个给froyo用,脚本都放在他们源码的顶级目录。
修改一下froyo的envsetup_mayq文件,使用java1.6,我没有java1.6,所以要先装一个,用新立得软件管理工具装,可以搜到sun-java6-sdk。
编译之前既要执行我的envsetup_mayq,又要执行froyo自带的envsetup.sh,干脆让我的调用它的,以后只要执行我的就行了。
envsetup_mayq的内容如下:
. build/envsetup.sh
export JAVA_HOME=/usr/lib/jvm/java-6-sun
export CLASSPATH=$JAVA_HOME/lib
export ANDROID_JAVA_HOME=$JAVA_HOME
export PATH=$PATH:$JAVA_HOME/bin
再make,没遇到什么问题,编译成功。
3 启动emulator
先设置PATH,指向emulator的位置,
添加/home/peipei/froyo/out/host/linux-x86/bin到envsetup_mayq的PATH中,
敲命令emulator, 提示没有avd
$android create avd --target 8 --name avd_mayq
提示没有设置ANDROID_SWT,添加如下环境变量:
export ANDROID_SWT=~/froyo/out/host/linux-x86/framework
再尝试创建avd
peipei@ubuntu:~/froyo$ android create avd --target 8 --name avd_froyo
Error: Error parsing the sdk.
Error: /home/peipei/froyo/out/host/linux-x86/platforms is missing.
Error: Unable to parse SDK content.
peipei@ubuntu:~/froyo$
提示没有sdk,难道要编sdk?
4 编译sdk
$make sdk
前面一直都很正常,到生成doc的时候报错:
Docs droiddoc: out/target/common/docs/services
javadoc: error - In doclet class DroidDoc, method start has thrown an exception java.lang.reflect.InvocationTargetException
com.sun.tools.javac.code.Symbol$CompletionFailure: class file for sun.util.resources.OpenListResourceBundle not found
1 error
make: *** [out/target/common/docs/services-timestamp] Error 45
解决办法:在/home/peipei/froyo/build/core/droiddoc.mk:line158加 -XDignore.symbol.file /
我本来在改动的地方加了注释# mayq,重新编译的时候居然出现语法错误,看来是我写错了,于是我把注释去了,就好了。
参考:http://code.google.com/p/android/issues/detail?id=1261
重新编译,成功了,编译结果:
Docs droiddoc: out/target/common/docs/dexdeps
DroidDoc took 0 sec. to write docs to out/target/common/docs/dexdeps
Package SDK Stubs: out/target/common/obj/PACKAGING/android_jar_intermediates/android.jar
Package SDK: out/host/linux-x86/sdk/android-sdk_eng.peipei_linux-x86.zip
和android-sdk_eng.peipei_linux-x86.zip同级目录下还有一个同名的未压缩的文件夹,我们用它就可以了。
5 回到第3步,重新尝试创建avd,启动emulator
peipei@ubuntu:~/froyo$ android create avd --target 8 --name avd_froyo
Error: Error parsing the sdk.
Error: /home/peipei/froyo/out/host/linux-x86/platforms is missing.
Error: Unable to parse SDK content.
还是一样的错,上面提到的路径是哪儿来的?另外,我还没有做什么设置,编出来的sdk应该没有用到,所以还报一样的错也是合理的。
换个办法,不用命令行创建avd了,编个adt,Eclipse+adt+sdk,创建avd。
6 编译adt
编译adt的时候,之前编出来的sdk会被清除,最好做个备份。
编donut adt的时候,我们用的是$ development/tools/eclipse/scripts/build_server.sh ~/adt/
所以我们找一下froyo有没有build_server.sh,找到了,在/home/peipei/froyo/sdk/eclipse/scripts
在envsetup_mayq中添加环境变量 export ECLISPE_HOME=~/Downloads/eclipse_ganymede_jee
别忘了在修改之后执行一下envsetup_mayq
顺便说一句,发现一篇编译android的好文章http://www.netmite.com/android/mydroid/cupcake/development/docs/howto_build_SDK.txt
建个文件夹,放编译出来的结果,我新建的是froyo/adt文件夹
peipei@ubuntu:~/froyo$ ./sdk/eclipse/scripts/build_server.sh ~/froyo/adt
注意adt要写绝对路径,否则将报错:
**** Package in adt
Error: Build failed to produce adt/android-eclipse
Aborting
编译成功,结果:
ZIP of Update site available at /home/peipei/froyo/adt/android-eclipse-v201008111535.zip
7 Eclipse+adt+sdk
把这三个东西拼起来
注意Eclipse的版本有讲究,我用的是Eclispe3.4 ganymede jee
为了同时维护donut和froyo的Eclipse开发环境,我拷贝了一份Eclipse,把原来的donut的adt卸掉,装上froyo的adt,再将sdk的路径改掉。
把eclipse的workspace路径也改掉,在ui上没找到选项,直接改配置文件/home/peipei/Downloads/eclipse_ganymede_jee_froyo/configuration/.settings/org.eclipse.ui.ide.prefs中有这么一句:SHOW_WORKSPACE_SELECTION_DIALOG=fale,false改成true,重启就出现对话框了,让你选workspace路径。
无法启动,只有一个小对话框,这个问题以前碰到过,改/home/peipei/Downloads/eclipse_ganymede_jee_froyo/eclipse.ini文件,在末尾加这么一句:
-Dorg.eclipse.swt.browser.XULRunnerPath=/usr/lib/xulrunner
重启eclipse,ok。
通过Help->Software Updates-> Installed Software 把Android DDM和Adnroid Development Tools卸掉。
卸载过程中,问你是否信任某个东东,打勾,ok。
把froyo的adt装上,具体过程就不写了,设置好sdk的路径,由于编译adt的时候把sdk给清除了,所以再编个sdk出来,参考步骤4,这次别忘了做好备份。
启动Eclipse,新建avd,启动模拟器,ok。
我们已经借助elcipse+adt+sdk创建了一个avd,虽然不知道放到哪儿了,现在在Terminla敲emulator也可以启动模拟器了,太好了。