Android(安卓)模拟器运行编译后的源码
16lz
2021-01-26
下载Android源码以及如何编译,这里就不多介绍了,照着www.android.com给的步骤进行,主要介绍一下使用make命令编译好了源码之后,如何使用模拟器来运行生成的镜像之类的文件。
方式应该有很多,接下来介绍两种方式:
1.源码编译完成,在目录/home/archermind/source/source/out/host/linux-x86/bin 下有很多工具,使用emulator工具可以创建一个模拟器,emulator -memory 1024 \
-partition-size 512 -sdcard /home/archermind/source/source/sd.img
(注意路径)
会自动将系统生成的镜像数据之类的文件烧进这个模拟器,为了方便,可以写个脚本文件,脚本文件命名start.sh ,放在源码文件的根路径下,我的是/home/archermind/source/source/ 路径,start.sh的内容:
#!/bin/bash
ANDROID_PRODUCT_OUT=/home/archermind/source/source/out/target/product/generic \
/home/archermind/source/source/out/host/linux-x86/bin/emulator -memory 1024 \
-partition-size 512 -sdcard /home/archermind/source/source/sd.img -wipe-data &
最后,编译好了源码之后,只要在根目录下运行 source start.sh 就可以运行模拟器了。大部分会选择这种方式启动模拟器。
2. 编译源码中的SDK ,在SDK中创建模拟器,将源码生成的镜像之类的文件,替换掉SDK相应下的文件。
源码中SDK所在路径为:/home/archermind/source/source/out/host/linux-x86/sdk,编译源码,也就是使用make命令编译的时候,默认不编译SDK,编译SKD使用命令lunch sdk-eng 和 make sdk。
编译好了SDK之后,创建avd,进入到tools路径下,/source/source/out/host/linux-x86/sdk/android-sdk_eng.archermind_linux-x86/tools,使用android工具创建avd,
命令: ./android create avd -n name -t 1
查看当前avd :./android list avd
启动模拟器: ./emulator @name 在前面的创建命令中,模拟器命名name
这时候启动的模拟器没有SD卡,可以再创建个SD卡,
命令:mksdcard 256M sdcard.img 还是在tools路径下执行此命令,
启动带有SD 卡的模拟器:
./emulator @name -sdcard sdcard.img
到这一步,启动起来的模拟器是SDK生成的镜像,如果想用源码编译出来的镜像,要替换掉SDK路径下的镜像文件,在SDK的路径/source/source/out/host/linux-x86/sdk/android-sdk_eng.archermind_linux-x86/system-images/android-4.1.1/armeabi-v7a$ 路径下,存放这些镜像文件:
build.prop kernel-qemu NOTICE.txt ramdisk.img source.properties system.img userdata.img
需要替换的文件有 kernel-qemu ramdisk.img system.img userdata.img
在编译好的源码中寻找这些文件:
kernel-qemu 所在路径:
/home/archermind/source/source/prebuilts/qemu-kernel/arm
ramdisk.img system.img userdata.img 所在路径:
/home/archermind/source/source/out/target/product/generic
最后,启动模拟器。
PS:1. 将/source/source/out/host/linux-x86/sdk/android-sdk_eng.archermind_linux-x86/tools 加入环境变量,可以方便打开模拟器。
2. 或者写一个脚本文件,将替换镜像文件和启动模拟器写入脚本文件,方便启动。
方式应该有很多,接下来介绍两种方式:
1.源码编译完成,在目录/home/archermind/source/source/out/host/linux-x86/bin 下有很多工具,使用emulator工具可以创建一个模拟器,emulator -memory 1024 \
-partition-size 512 -sdcard /home/archermind/source/source/sd.img
(注意路径)
会自动将系统生成的镜像数据之类的文件烧进这个模拟器,为了方便,可以写个脚本文件,脚本文件命名start.sh ,放在源码文件的根路径下,我的是/home/archermind/source/source/ 路径,start.sh的内容:
#!/bin/bash
ANDROID_PRODUCT_OUT=/home/archermind/source/source/out/target/product/generic \
/home/archermind/source/source/out/host/linux-x86/bin/emulator -memory 1024 \
-partition-size 512 -sdcard /home/archermind/source/source/sd.img -wipe-data &
最后,编译好了源码之后,只要在根目录下运行 source start.sh 就可以运行模拟器了。大部分会选择这种方式启动模拟器。
2. 编译源码中的SDK ,在SDK中创建模拟器,将源码生成的镜像之类的文件,替换掉SDK相应下的文件。
源码中SDK所在路径为:/home/archermind/source/source/out/host/linux-x86/sdk,编译源码,也就是使用make命令编译的时候,默认不编译SDK,编译SKD使用命令lunch sdk-eng 和 make sdk。
编译好了SDK之后,创建avd,进入到tools路径下,/source/source/out/host/linux-x86/sdk/android-sdk_eng.archermind_linux-x86/tools,使用android工具创建avd,
命令: ./android create avd -n name -t 1
查看当前avd :./android list avd
启动模拟器: ./emulator @name 在前面的创建命令中,模拟器命名name
这时候启动的模拟器没有SD卡,可以再创建个SD卡,
命令:mksdcard 256M sdcard.img 还是在tools路径下执行此命令,
启动带有SD 卡的模拟器:
./emulator @name -sdcard sdcard.img
到这一步,启动起来的模拟器是SDK生成的镜像,如果想用源码编译出来的镜像,要替换掉SDK路径下的镜像文件,在SDK的路径/source/source/out/host/linux-x86/sdk/android-sdk_eng.archermind_linux-x86/system-images/android-4.1.1/armeabi-v7a$ 路径下,存放这些镜像文件:
build.prop kernel-qemu NOTICE.txt ramdisk.img source.properties system.img userdata.img
需要替换的文件有 kernel-qemu ramdisk.img system.img userdata.img
在编译好的源码中寻找这些文件:
kernel-qemu 所在路径:
/home/archermind/source/source/prebuilts/qemu-kernel/arm
ramdisk.img system.img userdata.img 所在路径:
/home/archermind/source/source/out/target/product/generic
最后,启动模拟器。
PS:1. 将/source/source/out/host/linux-x86/sdk/android-sdk_eng.archermind_linux-x86/tools 加入环境变量,可以方便打开模拟器。
2. 或者写一个脚本文件,将替换镜像文件和启动模拟器写入脚本文件,方便启动。
更多相关文章
- android编译源码+在源码中build工程方法(紧支持jdk1.5)
- 编译可在Nexus5上运行的CyanogenMod13.0 ROM(基于Android6.0)
- Android项目集成Jenkins(JUnit test & Coverage)
- android eclipse 报error loading /system/media/audio/ xxx 错
- Android下可用的wide char 函数库
- Android(安卓)Studio常见问题——模拟器中关于VT-x is disabled
- Jenkins + Unity + Android构建基于Unity的自动编译环境
- 快速反编译APK
- Android(安卓)数据存储——上