Android之旅-Emulator WinXP下的编译

RK3572-Android16-记录一次OTA升级失败解决方案 这里记录一次解决RK3576 Android16 OTA 用Recovery 升级失败的一次解决案例,将部分经验作为总结。本次OTA升级耗时了几天,最终是RK给出的解决方案,再加上经验来解决了其它部分问题新平台,高一点的Android版本,可能本身有bug,多请教平台来,不要蒙着干,干不出来的。 阅读详情
 Google的开发手机平台Android的发布,可能将改变目前手机开发的模式,提供更多机会给个人,在朋友的鼓动下,决定学习之.
这里要简单描述下Android SDK的基本结构,如图

提供给用户的编程语言是Java,是朋友的强项(这个留给他吧),我只对lib和linux有点兴趣(呵呵,开源的东西学起来才有劲)
从google的android网站dowload最新的sdk(提供给java开发使用的),看了一下,基本是传统的模拟器开发模式(传统是传统,提供这个
还是很方便的),那么我们首先从模拟器emulator开始吧。
1、下载模拟器的源代码:
http://code.google.com/p/android/downloads/list
目前最新的版本是: android-emulator-m3-rc37.tar.bz2
在linux平台下解压,目录结构很简单,一个sdl(知道是什么不?)目录,一个qemu(居然是它!)目录,编译脚本build-emulator.sh,README文件。
在linux下编译很容易,就不说了,只是目前我使用的是windowsxp(想不用都不行,ubuntu还不支持我的声卡。。。),但是找遍了所有的网站,都没有介绍怎么在windows下编译模拟器的文章(汗。。。)
没办法,从头开始,先搞清楚里面是什么东西,step by step
SDL--在baidu上搜索了下,文章挺多的,不多说了,是一个跨平台的库,主要提供做linux上的game开发的,叫Simple DirectMedia Layer,想来估计是DirectX之类的,关键是能跨平台(也是为啥qemu要用它的原因了吧)。
QEMU--不多说了,上网搜索吧,一个超强的模拟器(同样跨平台)。说来google真是爽,那么多开源的东西给它用,它自己居然不开发更多的源文件,批评一下。
在Win32上编译SDL和QEMU的文章倒是一堆一堆的,基本上都不用Cygwin,而是使用MinGW,我看了下sdk下的dll文件,有一个 mgwz.dll,很眼熟啊,事实也证明偶是对的,google提供的sdk中的emulator也是在mingw上编译的(真迟钝。。。)
开始吧,先把MinGW安装好
1、到 http://www.mingw.org下载MinGW-5.1.3.exe以及MSYS-1.0.11.exe,安装好MinGW的环境,强烈建议不要网络安装,那叫一个慢,直接从mingw的网站上下载需要的文件,至于要安装哪些,看看MinGW-5.1.3.exe执行中解开的那个.ini就可以了。
重点说明:必须安装gcc 3.4.5以上的,我最早安装的是3.4.2,编译怎么也过不了,两个夜晚浪费在这个地方了(哭。。。。。)
MSYS是在Win32上的一个unix shell环境,好象执行速度比cygwin要慢。
安装过程不赘述,网上太多介绍了。
最后是要下载两个msys的工具下来,一个bash的最新版,一个是make的最新版,我下的是
make-3.81-MSYS-1.0.11-1.tar.bz2
bash-3.1-MSYS-1.0.11-1.tar.bz2
如果编译出现问题,最好连一个zlib的最新版也下一个吧。又是两个夜晚的血的教训,在win32上用linux的东西就是自己找罪受。。。

2、将emulator的源代码解压到/home/Administrator下,执行./build-emulator.sh,成功。(失败20次后。。。)

编译过程顺利的话,会生成一个local文件夹,这里是放SDL生成库的地方,编译qemu的时候需要使用它,主要是bin/sdl-config文件,提供libs和include文件的路径和版本信息。
sdl的版本是1.2.12,qemu的版本是0.8.2

3、因为我试过直接编译qemu的最新版,发现google改过了qemu的东西,核心没变,新增了一些硬件支持和增加了一些调试用的参数,具体的东西可以去读代码
android_sdl.c,这个是emulator的主函数文件。

4、模拟器编译成功后,直接运行提示没有system.img,这个到sdk的tools/lib/images下面拷贝kernel-qemu,system.img,ramdisk.img,userdata.img到emulator.exe的当前目录就可以了,把console和verbose都开起来,打印了很多启动信息,可以了解一下模拟的硬件配置,居然是ARM9的u,难怪qemu的target是arm-softmmu呢。

到这里,emulator的概貌搞清楚了,x86 code的emu,arm code的kernel和vm,java code的api接口,真够杂的。Bill最近说,不能惧怕复杂。恩,下一步继续探索kernel的世界。
Flutter蓝牙开发实战:flutter_blue_plus核心功能与实现原理剖析 本文深入剖析了Flutter蓝牙开发插件flutter_blue_plus的核心功能与实现原理。文章从源码解析入手,详细讲解了蓝牙状态管理、设备扫描、GATT连接、服务发现以及数据读写等关键流程的实现机制,并分享了实战中的性能调优与常见问题解决方案,帮助开发者高效构建跨平台蓝牙应用。 阅读详情

相关推荐

从PCIe 3.0到6.0:为什么“阻抗一致性”比“绝对值”更重要?聊聊连接器与板材的选型影响

本文探讨了PCIe从3.0到6.0演进过程中,阻抗一致性相比绝对值的重要性,分析了连接器与板材选型对高速信号完整性的影响。随着速率提升至64GT/s,系统级阻抗控制和验证成为关键,文章提供了选型指南、验证方法论及工程实践建议,帮助工程师应对高速设计挑战。

weixin_42556197的博客 384

Windows XP下 Android开发环境 搭建

一、 Android开发环境搭建需要下载三个工具: 1、JDK下载网址: http://java.sun.com/javase/downloads/index.jsp 2、Eclipse 下载网址:http://www.eclipse.org/downloads/ 3、Android SDK 下载网址: http://developer.android.com 二、 安装

快乐&&平凡 8721

带挂牵引车前向运动模型推导及仿真实现

牵引车-半挂车的车辆结构与普通的车辆相比增加了一个半挂车,它们之间通过鞍座相连接,为了分析半挂牵引车运动过程中的位姿和状态,本文将基于车辆的机械结构建立对应的运动学模型,该模型基于以下假设: 车辆行驶过程中,道路平坦且无凸凹; 车辆低速行驶,且运行过程中车身无侧倾和俯仰运动; 车辆行驶过程中,轮胎无形变,无侧向滑动,且无侧向力; 牵引车和半挂车均满足阿克曼转向几何原理; 牵引车与半挂车不会发现折叠。

jianmo的博客 3182

2019年6月18号 AndroidStudio+夜神模拟器 搭建Xposed环境

前言:最近学习android逆向分析用到了Xposed,这里记录在搭建Xposed的流程以及遇到的一些坑。 准备工具 1.AndroidStudio(版本随意)我这里下载是当前最新的。直接到官网上下。 2.夜神模拟器,模拟器应该都无所谓,逍遥的也行,我的模拟器Adnroid版本是5.1.1 3.Xposed框架(装在模拟器上的)XposedInstaller_3.1.5-release-b...

ymxkybqw的博客 3618

Nifi SNI 问题解决方案

Nifi 在配置 SSL 时,如果没有正确设置主机名(SNI),就会导致。为了解决这个问题,我们需要重新配置 Nifi 的 SSL 证书,并确保所有相关配置项(如服务器地址、证书路径和密码等)正确无误。以下是一个详细的解决步骤,以帮助你正确配置 Nifi 并解决 SNI 错误。文件中的配置项(如服务器地址、端口和证书路径),以及正确设置用户凭证。通过这些配置,你可以确保 Nifi 在支持 HTTPS 的同时,正确处理 SSL/TLS 的 SNI 问题。文件,配置服务器地址、端口以及证书路径和密码。

m0_58786911的博客 2295

从摄像头选型到PCB布线:搞懂MIPI CSI带宽计算,避免你的嵌入式项目翻车

本文详细解析了MIPI CSI带宽计算在嵌入式项目中的关键作用,从摄像头选型到PCB布线提供全流程指导。通过实际案例和计算公式,帮助工程师准确计算带宽需求,避免图像丢帧和系统崩溃问题,同时优化PCB设计确保信号完整性。

weixin_30533109的博客 376

adb 常见错误问题解决

1. 无法识别设备 adb kill-server 然后再adb start-server 2. Segmentation fault, pm install /data… 直接使用adb向模拟器中安装app时报这个错误。 原因很简单,使用豌豆荚下载下来的app很多是用中文命名的,改成英文名重新adb install. 至于为什么,我想设计adb的工程师们根本没有考虑中文支持吧。

mznewfacer的专栏 2万+

Java 实现 MP3 音频合并工具类:摆脱 FFmpeg,高效低 CPU 的纯本地方案【需求已解决】

本方案充分发挥了 Java 音频 SPI 的潜力,实现了轻量、跨平台、低 CPU 消耗的 MP3 音频合并工具类。 对于希望在服务器或桌面应用中集成音频处理功能的开发者而言,这无疑是一个可行且优雅的解决方案。

一键难忘的博客 543

如何在你的安卓手机上运行Windows XP?

如何在你的安卓手机上运行Windows XP? 原理很简单:用虚拟机运行在安卓手机中,然后把Windows XP运行在虚拟机里面。这个虚拟机怎么做呢,用“BOCHS”的电脑版XP安装好之后再把影像文件放到安卓上,使用安卓版BOCHS运行XP。 详细步骤可以参考: http://www.techulator.com/resources/7523-How-Run-Windows-XP-Android.aspx 或者 http://www.androidgyan.com/how-to-run-install-

每一天都有新的希望 7990

uniapp(微信小程序):实现PDF在线预览+在线预览pdf文件完整示例源码,支持文件来源:服务器pdf外链URL预览、调用后端API接口获取PDF文件流二进制下载及解析打开、上传本地PDF文件预览

uni-app实现PDF预览功能,uniapp微信小程序预览PDF,uniapp开发微信小程序在线预览pdf等文件,uniApp微信小程序实现PDF在线预览,Uniapp app在线预览pdf文件流,微信小程序实现pdf预览(苹果安卓兼容),uniapp-微信小程序 实现pdf外链在线预览,uniapp小程序如何做在线预览pdf功能,uniapp小程序端 实现pdf文件预览,微信小程序(uniapp)PDF预览完整实现方案示例demo源码,uni-app预览PDF,小程序pdf预览插件插件,Uniapp微信

✅ 精选推荐文章 4704

Qt实现思维导图功能1『核心树』

利用Qt的QGraphicsView框架实现思维导图功能 百度网盘体验地址: 链接:https://pan.baidu.com/s/15x9F48agCDOQbsyH3VwVXA 提取码:8svh 注:UI风格参考博主:前行中的小猪,博文地址:https://blog.youkuaiyun.com/GoForwardToStep/article/details/124692790?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_u

浮生流年的博客 6163

一行代码检测XP/调试/多开/模拟器/root的android库

github地址 https://github.com/lamster2018/EasyProtector 使用 public boolean isLimit(){ boolean bLimit = false; bLimit = bLimit || EasyProtectorLib.checkIsRoot() ...

手指乐 1330

20.Labview使用子vi进行VI间的数据传递详解(模块化)

子VI(模块化)题主在题注中也提到, 子VI的建立只是为了减少程序的负担,那么我们当使用子VI的时候首先就要明确什么是子VI?什么样的程序可以作为子VI?首先我们来看NI官方给的定义,具体说明如下图所示:题主已经将重点画出来了,在官方的解释中将子VI定义为了模块化,大家可以看到创建模块化子VI的特点在于减少代码重复工作优化了程序的框架结构。把一个代码打包,需要的时候就拎出来让他处理处理,不需要的时候就让它躺在我的列表里就行了也不占用运行空间。那么创建子VI需要需要注意以下几点:①任何一个程序。

关注我,更多技术问题欢迎私聊~ 3516

纯命令行界面下安装并运行官方Android emulator

纯命令行界面指没有安装Android studio。 下载sdk-tools 可以根据实际需要下载,不需要FQ(2018-04-07) 下载后只有一个tools目录。 平台SDK 工具包大小SHA-256 校验和 Windows sdk-tools-windows-3859397.zip 132 MB(138,449,982 bytes) 7f6037d3a7d6...

weixin_30664051的博客 372

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Android emulator 不能使用的问题

Possible Solution: Android emulator 不能使用Bug出现在Android Studio中初次运行模拟器(Android emulator),使用默认的AVD设置也就是 报错,代码确认没有问题(之前一直按照Google的帮助文档做): emulator: ERROR: x86 emulation currently requires hardware accel

I_am_lmq的专栏 1万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Android 开发入门实践(二):Kotlin 空安全,从可空类型到安全访问

延续 NewsApp 项目中的新闻标题练习,记录 Kotlin 安全调用。

Easyhood的博客 286

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Android 模块化收口:能力组合框架、手写 LifecycleOwner 与热修复共存

二十多个模块业务高度相似却各有差异,核心矛盾在于“统一与灵活”的平衡。通过角色接口组合(如IProjectAware、IVoiceAware)实现能力按需注入,新增功能零侵入;用模板方法锁定生命周期流程,确保顺序一致;结合@CallSuper与工厂方法,既约束关键逻辑,又保留子类自由。最终实现:骨架统一、填空自由,管得住业务,又不侵入业务。

mmsx990的博客 397

Android 开发入门实践(十三):用 Intent、UiState 和 Reducer 理解 MVI 的状态更新

本文记录第141—145课对MVI架构的入门实践,通过“返回列表”功能逐步构建意图(NewsIntent)、状态(NewsUiState)与状态转换(reduce)机制。基于单向数据流,用户操作生成意图,ViewModel通过Reducer根据旧状态计算新状态,并通过StateFlow更新Compose界面。代码实现清晰分离关注点,强化了对状态管理、事件驱动与数据流的理解。

Easyhood的博客 316

Android Message源码阅读

本文梳理了Android Handler机制中Message的核心设计:链表结构、消息复用池(sPool)及回收机制,重点解析了异步消息与同步屏障(SyncBarrier)的协同机制。当主线程需优先处理UI绘制等高优先级任务时,系统通过postSyncBarrier插入屏障,使Looper跳过普通同步消息,优先执行标记为异步的UI渲染任务,确保帧率流畅。该机制是保障Android界面响应性的关键技术之一。

u012116089的博客 199

安卓部署Linux性能实测:一颗移动处理器,能否胜任日常 Linux 开发?

本文通过在一加Ace5上部署NimoteCode的ARM64 Linux环境,测试了其在CoreMark、SQLite编译及并行构建中的表现。结果显示,尽管单核性能约2.34GHz,多核扩展比达6.15×,但优化编译耗时仍高达35秒,反映移动处理器虽具备一定开发能力,却受限于文件系统开销与运行环境(如PRoot)。实际开发中,非优化构建效率较高,而并行编译可显著提速。结论:安卓手机可作为轻量级开发辅助工具,但无法替代桌面环境,真正价值在于便携性与即时响应,而非全功能替代。

一个不知名码农的专栏 321

CTF 命令执行题学习笔记:终端特殊字符 $IFS 与 %09 的用法(HelloCTF RCE-labs)

空格被过滤时:用%09(TAB)或$IFS代替空格关键词被过滤时:用通配符?或字符类[f]拼出被禁的词,让 WAF 在原始字符串里看不到它,shell 在执行时再展开这类技巧在后续的命令执行题里会反复用到,建议亲手在靶机上敲一遍感受一下。

YY888888_的博客 542

云手机私有化部署完整方案:基于ARM服务器搭建私有安卓云集群

ARM 服务器是私有化安卓云集群最优硬件底座,原生架构匹配 Android,高密度、低损耗,非常适合企业内网场景。整套私有化方案的核心,从来不是 “跑起来安卓”,而是隔离可控、可审计、可运维、可扩容。两条路线各有取舍:开源自建灵活、门槛高;商用私有化交付开箱即用、安全能力完备,是当前企业生产环境主流方案。六边云手机私有化方案,补齐了自建方案在驱动适配、管控平台、审计合规、信创适配上的短板,适合对数据主权、内网隔离有强需求的政企、自研 App、垂直行业客户。

a598652的博客 330

Android 开发入门实践(九):把新闻数据与页面状态交给 ViewModel

本文记录第110—117课学习成果:将页面标题、新闻列表及选中编号逐步迁移至NewsViewModel,通过ViewModelProvider获取实例并读取数据。页面调用ViewModel方法处理选择与返回,实现状态管理解耦。过程中纠正了对Activity重建机制的误解,并厘清mutableStateOf的可观察性与ViewModel对象生命周期的区别,深化了对Compose状态更新机制的理解。

Easyhood的博客 219

Android 17 全栈性能分析关键字与源码手册

FrameTimeline 找异常帧,ATrace 找阶段,thread_state 找等待类型,ftrace 找内核原因,Simpleperf 找 CPU 热点,驱动源码找最终触发条件;任何根因结论都必须回到同一对象、同一时间窗口和同一条依赖链。

weixin_43228946的博客 371

Android 顶点上传:Heap 到 Direct 的零拷贝,省的是 JNI 次数

一帧数十万次putFloat的性能瓶颈源于频繁跨JNI边界,每次开销远超传输字节数。通过将写入与上传解耦:用堆内ByteBuffer高速写入,最后一次性put(writeBuf)批量传至堆外DirectByteBuffer,将数百万次边界调用压缩为一次,实现近10倍性能提升。关键在于复用堆外缓冲区、统一端序,并结合“更新-绘制”分离,仅在数据变更时上传顶点,平移缩放时零开销重绘,彻底释放CPU瓶颈。

mmsx990的博客 476

谷歌相机9.2下载(GCam 安卓通用版 安装与使用说明)

谷歌相机9.2版移植自Pixel原生相机,支持Camera2 API的Android 10+设备安装,凭借多帧合成技术在夜景、HDR+与人像模式表现优异。可提升暗光画质、优化动态范围与背景虚化效果,支持视频防抖及配置文件自定义。安装需确认机型兼容性,建议备份原相机,避免冲突。资源可通过kuake链接获取,仅限学习测试使用。

2611_96675819的博客 134
上一篇: Android平台内核编译
下一篇: 偶然戒烟!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值