android sdk, adt编译问题
android源码中包括了sdk和adt的源码,所有在开发android的应用的时候,可以下载官方的sdk和adt,也可以用自己编译的。
我在编译的时候,遇到很多问题,记下。
我的环境是:ubuntu10.04 LST,android1.6_donut
注:使用一下命令前,记得先执行 envsetup.sh脚本。
1 编译sdk
make sdk
或者:
$make PRODUCT-sdk-sdk
这两个命令的区别请看下文。
2 编译adt
先下载一个Eclispe 3.4 Ganymede jee,版本不对的话,后面会遇到问题了,请小心。
启动一下Eclipse,第一次启动它可能会生成一些文件的。
设置一下环境变量 export ECLIPSE_HOME=XXX, XXX是eclipse的根目录,如果没有这个命令,编译工具会试图从网上给你下一个,很慢。
新建一个文件夹放编译结果 mkdir adt
敲以下命令开始编译:
$ development/tools/eclipse/scripts/build_server.sh /home/peipei/adt
注意目标文件夹一定要写绝对路径,否则会报错。
可能遇到的问题:
1
现象:
用自己的sdk开发应用的时候,在新建android工程的时候报错:“W/ResourceType( 2888): Unable to get buffer of resource asset file ”
原因:
用make sdk能编译,可是当你将这个sdk放到eclipse里,新建Android Project的时候,会遇到以上问题,所以如果你想编一个在eclipse里用的sdk的话,不要用make sdk,应该这样
$make PRODUCT-sdk-sdk
这样编译出来的sdk才能用。
2
现象:
编译adt的时候报错:
Installation Error: Eclipse build file org.eclipse.pde.build_.../scripts/build.xml not detected. Found ''. Aborting.
原因:
是Eclipse版本不对,请参考http://androidn.wokoko.com/bbs/viewthread.php?tid=845。
解决办法:
用Eclipse 3.4 (Ganymede), jee
3
现象::往模拟器sdcard push文件的时候,报错:read only。
原因:
参考:http://blog.chinaunix.net/u3/90973/showart_2178533.html
解决办法:
Android在cupcake和donut分支仿真器启动后一般都会有SD Card Read-Only问题。这个问题并不是说SDCard属性为只读。这种情况实际上是SDCard根本就没有加载成功。在cupcake前的1.0版本中采用mount.conf对SDcard进行mount,cupcake之后就用vold.conf替代了mountd.conf
方法1:使用vold.conf
在~/android/build/core/main.mk文件中加入如下一段话
################################################################################
# Install a vold.conf file is one's not already being installed.
ifeq (,$(filter %:system/etc/vold.conf, $(PRODUCT_COPY_FILES)))
PRODUCT_COPY_FILES += /
development/data/etc/vold.conf:system/etc/vold.conf
ifeq ($(filter eng tests,$(TARGET_BUILD_VARIANT)),)
$(warning implicitly installing vold.conf)
endif
endif
##################################################################################
然后重新
make
make sdk
方法2:使用mountd.conf
编译mountd,并在文件系统中启动这一服务。(cupcakedonut 分支下载时在system/core中并没有mountd目录而在源码树中有,这种情况需自行手动下载)
修改 system/core/mountd/Android.mk文件,开放最后一行
# disabled - we are using vold now instead
# include $(BUILD_EXECUTABLE)
为:
# disabled - we are using vold now instead
include $(BUILD_EXECUTABLE)
然后 makemountd
增加 安装mountd.conf 文件
修改 system/core/rootdir/init.rc文件
释放下两行:
servicemountd/system/bin/mountd
socketmountdstream 0660 root mount
修改 system/core/rootdir/Android.mk 文件, 增加 etc/mountd.conf /,如下:
copy_from := /
etc/dbus.conf /
etc/init.goldfish.sh /
etc/mountd.conf /
etc/hosts
我试过他的方法1,可以的。
更多相关文章
- android Android签名证书的sha1值报错 :不是内部或外部命令,也不是
- Android中如何实现圆形按钮的颜色变化
- 【Android浏览器插件开发准备工作之NPAPI】使用Visual Studio 20
- Ubuntu下搭建Android开发环境
- 破解Xamarin
- Android原生(Native)C开发之一(备份测试代码的编译命令)
- Android中使用PreferenceActivity创建菜单
- Android(安卓)make脚本简记
- Android(安卓)SDK Manager中Google APIs无法显示问题(附SDK Manag