Android系统镜像编译、烧录及调试
编译
Android编译工具链:Jack+ninja
问题:Jack没法多用户同时编译,
Google( Communication error with Jack server ):https://code.google.com/p/android/issues/detail?id=194027
编译失败信息:
No Jack server running. Try 'jack-admin start-server'
ninja: build stopped: subcommand failed.
18:24:23 ninja failed with: exit status 1
make: *** [run_soong_ui] Error 1
#### make failed to build some targets (02:01:51 (hh:mm:ss)) ####
只要有一个人已经编译过Android的code了,其他人就没法编译了,因为编译完了jack的端口也是不会释放的。
如果编译失败 可以通过 jack-admin list-server 看当前是否有人已占用了server的jack端口
这个时候可以要求占有者 通过 jack-admin kill-server来释放这个端口。
解决办法:
jack 默认的 service port是8076,admin port是8077
1. 修改vi ~/.jack-settings 文件中两个端口号
SERVER_PORT_SERVICE=8076
SERVER_PORT_ADMIN=8077
2. 修改 vi ~/.jack-server/config.properties 文件中两个端口号(这个文件在编译一次后会自己生成,如果没有这个文件,先编译一次源码,报错后再修改)(端口号改成的数值不能和其他人一样,否则会有问题)
jack.server.service.port=xxxx
jack.server.admin.port=xxxx
1和2修改的端口号要统一
修改后通过jack-admin list-server,就可以看到同时有多个jack server了。
首先确认编译的java版本,设置环境变量(source build/envsetup.sh),lunch对应的版本(user版本不支持root权限,开发者一般使用user-debug版本),make otapackage -jx(x表示使用多少线程资源编译)
烧录
用两个接头以及一条四根的排线制作一个串口板连接线. 连线时要保证引脚一一对应, 即开发板上的GND连接到串口板的GND, 开发板TX连接到串口板TX, 开发板RX连接到串口板RX, 开发板VCC连接到串口板VCC.
注 : 部分板子焊接/布线等可能存在差异, 必要时可尝试交换TX/RX看是否可以正常使用串口.
开发板重新烧写系统镜像:
安装CP2102串口驱动,
1、“reboot”命令系统重启,使用 “Enter or CTRL+C”中断在U-boot阶段。
2、使用“store scrub 0”擦除Flash(这个指令会擦除nand原厂标识,谨慎使用)或者在U-boot下输入"update"命令,此时在设备管理器中会出现一个名为libusb-win32 Usb Devices
的设备组
3、使用烧写线连接开发板与PC,使用USB烧写工具进行镜像烧录,烧录完成后重启即可。
笔者使用“store scrub 0”擦除Flash后进行第三步出现过USB烧录工具检测不到开发板的问题,并且开发板上电一直是亮红灯,表示当前已经是空板状态。(挺吓人的,意为还要使用JTAG工具重新烧录初始化镜像文件),后面电脑重启,再连接USB烧录线,打开USB烧录工具,结果检测到连接成功,直接烧录系统镜像即可。
调试
使用外接显示器进行系统调试时,即便有遥控器并连接鼠标,仍不便进行编辑框输入,可以使用adb shell指令“input”辅助调试。
input
Usage: input [<source>] <command> [<arg>...]
The sources are:
keyboard
mouse
joystick
touchnavigation
touchpad
trackball
dpad
stylus
gamepad
touchscreen
The commands and default sources are:
text <string> (Default: touchscreen)
keyevent [--longpress] <key code number or name> ... (Default: keyboard)
tap <x> <y> (Default: touchscreen)
swipe <x1> <y1> <x2> <y2> [duration(ms)] (Default: touchscreen)
press (Default: trackball)
roll <dx> <dy> (Default: trackball)
填充编辑框命令示例:input text This is a Test String.
回到主页面可以使用指令“input keyevent 3”
几个最常用的KEYCODE如下:
3 --> "KEYCODE_HOME"主页键
4 --> "KEYCODE_BACK" 返回键
19 --> "KEYCODE_DPAD_UP" 导航键-上
20 --> "KEYCODE_DPAD_DOWN" 导航键-下
21 --> "KEYCODE_DPAD_LEFT" 导航键-左
22 --> "KEYCODE_DPAD_RIGHT"导航键-右
62 --> "KEYCODE_SPACE" 空格键
66 --> "KEYCODE_ENTER" Enter键,确认
67 --> "KEYCODE_DEL" 回退键,删除
82 --> "KEYCODE_MENU"菜单键
更多KEYCODE按键作用可参照https://blog.csdn.net/feizhixuan46789/article/details/16801429
通过input tap命令模拟触摸屏幕:input tap 600 800 在屏幕X坐标600,Y坐标800触发点击事件。
input swipe模拟滑动事件,input swipe <x1> <y1> <x2> <y2> [duration(ms)] (Default: touchscreen),需要将起始的坐标传入。
input swipe 600 800 300 800(向左滑动)input swipe 300 800 600 800 (向右滑动)
adb shell命令“am”也可以做许多操作:
拨打电话:am start -a android.intent.action.CALL -d tel:10086
打开网站:am start -a android.intent.action.VIEW -d http://www.baidu.com
播放音视频:am start -a android.intent.action.VIEW -d "file:///sdcard/Movies/欧若拉-张韶涵.mp4" -t "video/*"
关机指令:poweroff
抓取后台应用运行日志信息:logcat -c;logcat
Android系统镜像编译、烧录及调试相关推荐
- tiny4412开发板Android篇_2基于tiny4412的Android系统的编译
tiny4412开发板使用的android系统版本是android5.0.2,由友善之臂公司提供,下载网址: https://pan.baidu.com/s/1pnn6N8Wpsx8PISLmKT59 ...
- Android系统镜像之4种刷机方法(一键批量刷机)
关注公众号后可以查看更多更详细的文章内容 原文链接 Android系统镜像刷机方法(一) Android系统镜像刷机方法(二) Android系统镜像刷机方法(三) Edxposed研究之Magis ...
- 全志平台Android系统的设备烧录Tina系统失败问题解决方法
全志平台Android系统的设备烧录Tina系统失败问题解决方法 [适用范围] Tina 通用平台 [问题现象] 开发过程中会有开发板Android系统.Tina互刷的问题.实际操作中,经常会碰到烧录 ...
- Android系统反编译FrameWork层虚拟定位方法
首次发帖,如有不规范的地方还望多多包涵 起因是因为需要做模拟定位的功能,最终是过金融类app的定位 ,root.框架分分钟被砍死 迫于无奈,直接从操作系统入手,反正hook也不过是hook那几个系统里 ...
- 关于Android的硬件抽象层添加进Android系统默认编译的问题
这里主要是遇到两个问题:第一个是,自己编写的hal层源码怎么添加进Android的默认编译中去,也就是说在根目录执行make时,自己编写hal源码也会被编译.第二个问题是,编译完成后还要自动安装在指定 ...
- 替换Android系统镜像system.img的方法
之前修改了Android的系统源码的framework层代码,定制ROM.通过make之后会生成三个镜像文件userdata.img.system.img.ramdisk.img三个文件.这个时候我们 ...
- Android系统开发之烧录开发板
一.环境配置: 开发板接上USB线和串口线,打开DNW并配置好串口,给开发板上电后按reset键,紧接着按键盘的空格键,此时可输入如下命令. 1. fdisk -c 0 2. ext3format m ...
- 魅蓝3 官方android系统,魅蓝3 开启USB调试模式
我们要将魅蓝3与电脑进行连接,就必须要打开魅蓝3系统的调试模式,不同的系统版本打开调试模式的方法有所不同,在这里我们就谈谈魅蓝3各种系统版本打开USB调试模式的方法. 1.针对Android 2.1- ...
- mac 编译android系统,mac 编译 Android 系统杂记
挂载android分区 sudo hdiutil attach ~/android_code/android7.dmg.sparseimage -mountpoint /Volumes/android ...
最新文章
- Science:人工智能的发展离不开神经科学,先天结构或是下一个方向
- Redis发布带有“流式”数据类型的5.0版本
- FragmentTabHostUnderLineDemo【FragmentTabHost带下划线】
- 如何把Kubernetes config view里的base64编码过后的secret信息还原
- 【算法学习】整体二分
- jQuery学习笔记之jQuery的DOM操作
- java8 内存设置_Java 8内存分析
- 九章算术卷第一 方田
- Redmi 9将升级双频WiFi:定义2020入门机新标准
- Controller接口控制器(6)
- Quartz.net 定时调度CronTrigger时间配置格式说明
- 嵌入式系统——系统可靠度计算
- outlook客户端 outlook.com邮箱设置方法
- bzoj1627 / P2873 [USACO07DEC]泥水坑Mud Puddles
- 苹果x为什么总黑屏_苹果X突然黑屏重启怎么回事?教你强制重启方法
- 用户画像:标签化就是数据的抽象能力
- 【Visual C++】游戏开发笔记四十二 浅墨DirectX教程之十 游戏输入控制利器:DirectInput专场...
- 桌面上的IE图标不见了——解决方法
- 数学家的这些迷惑行为,最后都成了神操作
- 仿百度搜索框支持拼音 输入联想
热门文章
- MTK芯片技术资料大全,各个型号都有,包括原理图数据表等
- mysql 28000 远程_启用远程MySQL连接:错误1045(28000):拒绝用户访问
- 几何分布的期望公式的推导
- Win10 1809版本多用户远程登陆
- [unityshader]制作能量护盾以及简单互动
- hibernate: 用Disjunction和Conjunction构造复杂的查询条件
- 将Unity地形以Wavefront Obj格式导出
- pyinstaller 生成exe之后不报毒的终极方法(亲测可用)
- 计算机平面设计与工程论文,浅谈计算机平面设计和设计软件相互结合
- 计算机毕业设计 SSM+Vue消防管理系统 智慧消防系统 消防设备管理系统 消防知识宣传网站Java Vue MySQL数据库 远程调试 代码讲解