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

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值