为了编译android4.2的系统,昨天把系统替换成了64位的ubuntu12.04,遇到了一些问题,特此记录一下。 1、首先是系统安装好了之后,启动不了了,出现了grub resume的错误 error: invalid arch independent ELF magic 这个错误是grub的问题,估计是32位到64位系统出现了问题,因为之前32位的ubuntu之间替换的时候,没有出现过类似的问题。 首先,利用刚才装系统的U盘,从U盘启动进入系统,记得装系统的时候,系统的根目录是哪个盘,例如我的是/dev/sda7,并且整个系统目录就只挂载在这个sda7上 然后,进入命令行,执行 sudo mount /dev/sda7 /mnt sudo grub-install --root-directory=/mnt /dev/sda 这样,相当于重新安装了grub,会更新你"/"目录下的boot文件里的grub 接着,重新启动,此时应该就能够进入ubuntu经典的选择系统的界面了(我的是双系统),不过可能有点乱码,没关系,等系统起来之后,进入命令行,执行 sudo update-grub 如果再次重启的话就正常了 2、eclipse的问题 之前的android工程,在32位系统上应该是正常的,但是,由于要采用64位的eclipse,于是就找了个版本,因为之前的SDK版本只到API15,而找的eclipse因为是拷贝的别人的,报ADT版本过旧,于是下载了最新的ADT-22,顺便也下了一个最新的eclipse 64位,配置好之后,警告SDK应该升级到API17以匹配ADT-22,刚开始我没有理会,于是出了一些找不到R文件的错误。 查了一些资料,说要手动命令行ant编译一下,然后eclipse就找到R了,刚好学习一下 首先,利用android命令,更新一下工程 android update project -p . -t android-15 会修复build.xml和local.properties等文件 然后,执行 ant debug 如果不出错的话,就可以生成xxx-debug.apk包 此时,eclipse中应该就不会有R文件报错了 但是,如果这时候运行了eclipse的clean命令的话,又会被删掉了,这个用的实在不方便,于是怀疑是ADT和SDK以及SDK tools等不对应,索性全部升级吧。官网下载了android-sdk_r22-linux.tgz,这只是SDK_r22的工具而已,你可以合并到你原来的SDK目录,然后eclipse打开SDK Manager对话框,对应着升级SDK吧。 果然,等升级完成之后,你clean时,就不会删掉gen目录下的R.java文件了,也就跟之前32位版本一样了。 3、virtualbox的USB功能 之前安装的是ubuntu软件中心里面的版本,完成之后还需要在命令行安装virtualbox-guest-additions包,然后在虚拟机XP里面点安装增强工具,然后在虚拟机的设置选项里面打开USB功能,不过之前就遇到过,这样做,有的时候能识别USB,有的时候又不能识别了,就像这次64位的系统,又识别不了了。 由于ubuntu软件中心只是安装开源版的软件,像virtualbox有两个版本据说,一个开源一个不开源的,不开源的版本里面自带了USB功能了,好像也有那个增强包,也就不用在ubuntu上命令行另外安装了。从下面的网站下载对应的virtualbox版本 http://www.virtualbox.org/wiki/Linux_Downloads 把自己加入到vboxusers组。也就是在终端中输入:
sudo adduser 你的用户名vboxusers
然后退出,重新登录一次。
这样,USB就能够稳定的被识别了。 4、导入的eclipse工程,显示包名而不是工程名的解决方法 不用File -> Import -> Android -> Existing Android Code into Workspace,而是用 File -> Import -> General -> Existing Projects into Workspace。这个方案是可行的。 出现这个现象可能是eclipse的版本和adt的匹配有问题。如果是匹配的话,就没问题。 (责任编辑:IT) |