ubuntu 运行android模拟器(emulator)零星笔记、心得

来源:互联网 发布:linux c程序杀死进程 编辑:程序博客网 时间:2024/05/17 21:40


android 2.3.3
export ANDROID_PRODUCT_OUT=/home/android_source/android-2.3.3_r1/out/target/product/generic
export PATH=$PATH:/home/android_source/android-2.3.3_r1/out/host/linux-x86/bin
emulator
adb shell


android 4.2
export ANDROID_PRODUCT_OUT=/home/android_source/android-4.2_r1/out/target/product/generic
export PATH=$PATH:/home/android_source/android-4.2_r1/out/host/linux-x86/bin
emulator



///export ANDROID_SWT=/home/android_source/android-4.2_r1/out/host/linux-x86/framework


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

android create avd -n myemulator -f -p /home/android_source/android-4.2_r1 -t 1



make kernal
export PATH=$PATH:/home/android_source/android-4.2_r1/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin

#make goldfish_defconfig  会造成不能启动模拟器的情况

make goldfish_armv7_defconfig

make

编译结果:

then arch/arm/boot/zImage  is created


编译环境的安装:
http://blog.csdn.net/yf210yf/article/details/9206269


源码的编译:

source build/envsetup.sh
lunch full-eng
make


运行模拟器
在终端中执行:emulator


在  ~/.bashrc
添加环境变量:
export ANDROID_PRODUCT_OUT=~/code/android-4.2/out/target/product/generic
export ANDROID_SWT=~/code/android-4.2/out/host/linux-x86/framework/


备注:

重启系统后:
执行emulator,出现如下错误:
emulator: ERROR: You did not specify a virtual device name, and the system
directory could not be found.
If you are an Android SDK user, please use '@<name>' or '-avd <name>'
to start a given virtual device (see -help-avd for details).
Otherwise, follow the instructions in -help-disk-images to start the emulator

解决:
source build/envsetup.sh 
lunch sdk-eng

然后再执行
emulator
可以启动模拟器



emulator: WARNING: system partition size adjusted to match image file (216 MB > 200 MB)
解决:   emulator -partition-size 300


我按你所描述的步骤编译了goldfish2.6.29,生成了zImage,emulator -kernel xxxx/zImage 后可以启动模拟器,但是看不到Android画面,一直是黑乎乎的。    自己发现了原因:原来要$ make goldfish_armv7_defconfig



模拟器运行需要四个文件,分别是Linux Kernel镜像zImage和Android镜像文件system.img、userdata.img和ramdisk.img。执行emulator命令时,如果不带任何参数,则Linux Kernel镜像默认使用~/Android/prebuilt/android-arm/kernel目录下的kernel-qemu文件,而Android镜像文件则默认使用ANDROID_PRODUCT_OUT目录下的system.img、userdata.img和ramdisk.img,也就是我们刚刚编译出来的镜像问题。
    当然,我们也可以以指定的镜像文件来运行模拟器,即运行emulator时,即:

    USER-NAME@MACHINE-NAME:~/Android$ emulator -kernel ./prebuilt/android-arm/kernel/kernel-qemu -sysdir ./out/target/product/generic -system system.img -data userdata.img -ramdisk ramdisk.img






资源描述:

 frameworks/base/libs/utils/RefBase.cpp: In member function 'void android::RefBase::weakref_type::trackMe(bool, bool)':
frameworks/base/libs/utils/RefBase.cpp:507:67: error: passing 'const android::RefBase::weakref_impl' as 'this' argument of 'void android::RefBase::weakref_impl::trackMe(bool, bool)' discards qualifiers [-fpermissive]
解决办法:
编辑frameworks/base/libs/utils/Android.mk文件,修改
LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS)

LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS) –fpermissive


修改之后出现错误:

   g++: 错误: –fpermissive:没有那个文件或目录




Ubuntu 11.04升级到12.04 后发现编译Android出现错误(之前是OK的),具体错误和解决办法如下:

问题1:

frameworks/base/libs/utils/RefBase.cpp: 在成员函数‘void android::RefBase::weakref_type::trackMe(bool, bool)’中:

frameworks/base/libs/utils/RefBase.cpp:483:67: 错误: 将‘const android::RefBase::weakref_impl’作为‘void android::RefBase::weakref_impl::trackMe(bool, bool)’的‘this’实参时丢弃了类型限定 [-fpermissive]

make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libutils_intermediates/RefBase.o] 错误 1

原因:Ubuntu 11.10的gcc 4.6版本太高了,android编译需要gcc 4.4

解决办法:更换gcc、g++版本4.6为4.4

sudo apt-get install gcc-4.4

sudo apt-get install g++-4.4

sudo rm -rf /usr/bin/gcc /usr/bin/g++

sudo ln -s /usr/bin/gcc-4.4 /usr/bin/gcc

sudo ln -s /usr/bin/g++-4.4 /usr/bin/g++

问题2:

g++: 错误: –fpermissive:没有那个文件或目录

make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libutils_intermediates/RefBase.o] 错误 1

解决办法:sudo apt-get install g++-4.4-multilib

经过此操作编译可顺利进行。



原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 刘海的碎发怎么办 车牌号全是单数怎么办 品正通保车险超市怎么办营业执照 车辆咨询服务门市怎么办营业执照 被互盾科技骗了怎么办 家具生意不好怎么办啊 今年家具店生意不好怎么办 奶茶店位置不好怎么办 早餐店位置不好怎么办 木工做的不好怎么办 淘宝昵称改不了怎么办 淘宝店关门售后怎么办 店里生意不好怎么办?解决方案 淘宝店铺没有生意怎么办 淘宝店做大了应该怎么办 汽车维修没生意怎么办 淘宝买家具安装怎么办 投标时未记主材费结算时怎么办 不敢买自慰棒怎么办 车被扎了个洞怎么办 企业欠税交不起怎么办 组织代码查不到怎么办 u盾电量不足怎么办 对公账户拍照怎么办 个人怎么办对公账户 车辆超过年检日期怎么办 手机cpu负载过高怎么办 移动数据上网慢怎么办 服务器密码忘记了怎么办 网吧电脑卡死了怎么办 局域网连接不上怎么办 电脑没有dns地址怎么办 无法连接版本服务器怎么办 登录游戏就死机怎么办 亿企薪税保没有绑定企业怎么办 众筹如果不成功怎么办 淘宝被投诉商标权怎么办 茅台贴标褶皱怎么办 ins取不了名字怎么办 ins密码忘了怎么办 ins不记得密码怎么办