• 概述
  • 网路拓扑图">网路拓扑图
  • 创建边缘实例">创建边缘实例
  • 获取三元组">获取三元组
  • 环境准备">环境准备
    • 刷入官方Rom包">刷入官方Rom包
    • Root Android">Root Android
    • 安装必备软件">安装必备软件
      • 安装BusyBox">安装BusyBox
      • 安装SSHDroid">安装SSHDroid
      • 安装Termux">安装Termux
    • 修改系统配置">修改系统配置
  • 安装边缘计算软件包">安装边缘计算软件包
  • 远程登录/远程文件管理">远程登录/远程文件管理
  • 远程ADB">远程ADB
    • 修改ADB配置">修改ADB配置
    • 修改LinkEdge配置">修改LinkEdge配置
    • 打开远程访问助手">打开远程访问助手
    • 打开ADB工具">打开ADB工具
  • FAQ">FAQ

    概述

    通常情况下,我们只能通过USB或者在局域网中使用Android设备的ADB服务进行调试。现在我们借助阿里云物联网平台的边缘计算远程运维能力,来实现跨公网访问ADB服务。举例来说,即使Android设备使用4G蜂窝通讯,PC电脑使用有线网路连接,我们仍然可以访问ADB服务。
    本位以普通Android Nexus 5手机(Arm v7)为例,讲述如何在Android设备上集成远程运维服务并演示如何远程运维。本文受众为具备一定Android/Linux开发经验的开发者,需要了解比如ADB用法,了解常见的linux命令等。

    网路拓扑图

    Android 安装方法 - 图1

    创建边缘实例

    登录阿里云物联网平台,选择 边缘计算 -> 边缘实例
    Android 安装方法 - 图2
    选择 新增实例 ,输入实例名称后,可以选择已存在的网关产品或者新建网关产品
    Android 安装方法 - 图3
    如果是新建网关产品,则如下图显示,输入产品名称,选择分类为边缘计算->边缘网关
    Android 安装方法 - 图4
    创建完成后,新增实例页会默认选择已创建的网关产品
    Android 安装方法 - 图5
    接下来,可以选择已存在的网关设备新建网关设备
    Android 安装方法 - 图6Android 安装方法 - 图7
    创建完成后,点击确定,就可能看到刚才已创建的实例。
    Android 安装方法 - 图8
    在操作栏里,选择查看,进入实例信息查看页这个页面无需关闭,稍后会在本页面完成远程访问
    Android 安装方法 - 图9

    获取三元组

    如上图所示,创建边缘实例后,在页面下面网关里的操作栏点击查看
    Android 安装方法 - 图10
    获取三元组,即为: ProductKey, DeviceName, DeviceSecret。这三个值唯一标示了这个设备,在运行时,需要用户指定。

    环境准备

    以下演示基于Nexus 5,主要为了使Android设备获取Root权限,安装SSH服务以支持网络访问,安装BusyBox以支持grep等命令,安装Termux以支持Bash脚本的执行。如果您的设备已经具备这些前置条件,可以直接跳过本章节。

    刷入官方Rom包

    请注意,此操作将会清空设备数据,请谨慎模仿。
    详细步骤请参考LG Nexus 5刷android 5.0教程
    操作成功后,可以看到以下输出:

    Android 安装方法 - 图11

    注意以下几个事项:

    1. 必须参考文档,更新设备管理器里Android驱动
    2. 务必先打开flash-all.bat后,再同时按住手机音量下键和电源键重启进入刷机模式后接入到PC电脑上。
    3. 刷机完成后,务必使设备连入WiFi,保证设备能够访问公网。

    Root Android

    必须使 Android 手机获取Root权限,才能继续使用本功能。
    我们使用Root精灵,软件使用方法,请参考Root精灵使用方法
    Root成功后,将看到以下界面:

    Android 安装方法 - 图12

    注意以下几个事项:

    1. 打开开发者选项的方法: 设置 -> 关于手机 -> 连续点击5次版本号。
    2. 开启USB调试的方法: 设置 -> 开发者选项 -> USB调试。

    安装必备软件

    我们使用ADB完成软件安装,ADB下载及使用方法,请参考: ADB使用手册

    用途 下载链接 是否必须
    BusyBox 用来安装一些必备的linux命令。 下载链接
    Termux 模拟终端,用来安装一些必备的linux软件,比如curl/ssh/vim/tar等。 下载链接
    SSHDroid SSH Server,用来实现远程访问 下载链接

    注意以下几个事项:

    1. 运行安装未知来源的应用: 设置 -> 安全 -> 未知来源。
    2. 弹窗提示”允许Google定期检查设备….” 时,请选择 “接受”。
    3. 可以选择通过adb进行安装: adb install xxx.apk

    安装BusyBox

    通过USB线连接到PC上,执行以下命令完成BusyBox的安装:

    1. 进入到APK所在的目录后,执行下面的命令
    2. $adb install Busybox.apk

    安装完成后,打开软件,安装所有支持的指令到系统目录。

    Android 安装方法 - 图13
    注意,不能装在/system/bin/目录

    安装SSHDroid

    通过USB线连接到PC上,执行以下命令完成SSHDroid的安装:

    1. 进入到APK所在的目录后,执行下面的命令
    2. $adb install SSHDroid.apk

    在手机上打开软件,可以看到以下界面:

    Android 安装方法 - 图14
    这样我们就能在局域网中通过SSH协议登录到Android设备上了,SSH协议相比ADB来说,对开发者更友好些。我们如果想在浏览器上跨公网登录到设备上,也是需要Android开启SSH服务的。如果使用ADB的话,我们需要借助谷歌的adb tools。

    安装Termux

    通过USB线连接到PC上,执行以下命令完成SSHDroid的安装:

    1. 进入到APK所在的目录后,执行下面的命令
    2. $adb install Termux.apk

    在手机上打开软件,可以看到以下界面:
    Android 安装方法 - 图15
    对于Linux开发者来说,这种界面可能比较熟悉亲切些。有了这个虚拟终端后,我们可以使用pkg install命令安装我们所需要的工具,比如vim/openssh/telnet之类的。

    修改系统配置

    以下命令的执行均为通过SSH远程登录到设备上操作的,所以需要PC机和Android设备在同一个局域网中。
    如下图所示,我们在windows系统上,借助ModaXterm,远程执行命令:

    Android 安装方法 - 图16

    注意以下事项:

    1. SSH默认用户名为root,密码为admin。
    2. 所有命令的执行均需要root权限,登录成功后,手动输入 su 命令切换成root权限。
    3. 不建议使用ADB来完成下面的修改,有些环境变量可能不一致导致命令执行失败。
    4. 以下所有操作均具有一定的安全风险,生产环境下,启动完RemoteTerminalDaemon后,切忌关闭root权限。
    • 修改环境变量
      修改环境变量以支持bash脚本和常见的linux命令。

      1. $ export PATH=/data/data/com.termux/files/usr/bin:/data/data/com.termux/files/usr/bin/applets:/system/bin/
      2. $ export LD_LIBRARY_PATH=/data/data/com.termux/files/usr/lib
    • 切换到宽容模式
      款容模式的详细介绍,请参考链接

      1. $ setenforce 0
    • 重新挂载系统分区
      因为我们的软件需要安装到根目录,所以需要修改文件系统的读写权限。注意在实际生产过程中,安装完本软件包后,需要禁止对系统目录的读写。

      1. $ mount -o rw,remount /

      安装边缘计算软件包

      注意接下来的操作,请确保以上准备工作均已完成,否则可能会出现命令无法执行的情况。

    • 拷贝软件包到Android设备上
      可以通过ModaXterm或WinSCP,将最新的软件包iot-edge-lite-armv7-hf.tar.gz拷贝到设备上。

    Android 安装方法 - 图17

    • 软件解压到根目录/

      1. $ tar zxvf iot-edge-lite-armv7-hf.tar.gz -C /

      Android 安装方法 - 图18

    • 运行软件

      1. 进入软件包所在的目录:
      2. $cd /linkedge/gateway/build/script
      3. 赋予可执行权限:
      4. $chmod 777 *
      5. 启动Link IoT Edge Lite版:
      6. $ bash ./iot_gateway_start_lite.sh {创建边缘实例中的网关ProductKey} {创建边缘实例中的网关DeviceName} {创建边缘实例中的网关DeviceSecret}
      7. 注意,后面的ProductKey DeviceName DeviceSecret 需要换成实际在阿里云物联网平台上生成的网关三元组。
      8. 查看是否启动成功:
      9. $ bash ./iot_gateway_status_lite.sh

      Android 安装方法 - 图19

      远程登录/远程文件管理

      刷新阿里云物联网平台的边缘实例详情页(即为开头创建边缘实例的最后页面),此时会发现远程控制台远程文件管理已经是可用的状态了。
      点击 远程控制台,输入Android SSH服务的登录用户名和密码(root/admin)后,即可在云端访问PC电脑。
      Android 安装方法 - 图20
      用户密码输入正确,即可进入终端页面:
      Android 安装方法 - 图21
      点击 远程文件管理,键入系统的用户名和密码,即可进入远程文件管理页面。
      Android 安装方法 - 图22Android 安装方法 - 图23
      在远程文件管理页面里,用户可以自由上传/下载文件。
      Android 安装方法 - 图24

      远程ADB

      跨公网访问Android设备的ADB服务,需要借助远程访问助手,开发者可以在github上根据PC机的类型选择下载安装到电脑上。

      修改ADB配置

      我们可以通过SSH登录到Android设备上,执行以下命令:

      1. 修改ADB服务监听端口
      2. $ setprop service.adb.tcp.port 5555
      3. 停止ADB服务
      4. $ stop adbd
      5. 启动ADB服务
      6. $ start adbd

      修改LinkEdge配置

      当前版本,Link IoT Edge Lite版本默认只支持远程访问本地的某一个端口,所以用户需要手动修改配置文件,以远程访问ADB服务

      1. 进入软件包目录:
      2. $ cd /linkedge/gateway/build/bin/
      3. 修改配置文件中的`listen_port` 5555,即为ADB服务的监听端口。
      4. $ vi remote_terminal.json
      5. 查看内容是否修改完成:
      6. $ cat remote_terminal.json
      7. {
      8. "cloud_ip": "backend-iotx-remote-debug.aliyun.com",
      9. "cloud_port": "443",
      10. "cert_path": "root.pem",
      11. "is_tls_on": 1,
      12. "is_debug_on": 0,
      13. "listen_port": 5555,
      14. "listen_ip": "127.0.0.1"
      15. }
      16. 重启Link IoT Edge服务:
      17. $ bash ./iot_gateway_start_lite.sh {创建边缘实例中的网关ProductKey} {创建边缘实例中的网关DeviceName} {创建边缘实例中的网关DeviceSecret}
      18. 注意,后面的ProductKey DeviceName DeviceSecret 需要换成实际在阿里云物联网平台上生成的网关三元组。
      19. 查看是否启动成功:
      20. $ bash ./iot_gateway_status_lite.sh

      打开远程访问助手

      访问访问助手的详细使用方法,请参考: 远程访问助手使用手册

    • 输入AccessKey和AccessSecret后,可以看到设备列表如下:

    Android 安装方法 - 图25

    • 双击待调试设备,选择远程ADB访问,端口号修改为5555:

    Android 安装方法 - 图26

    • 确认本地服务开启成功:
      如下图,开启成功后,我们可以访问127.0.0.1的3333端口,以访问设备的ADB服务。

    Android 安装方法 - 图27

    打开ADB工具

    此时拔掉设备与PC之间的USB线,确保不再使用有线方式使用设备的ADB服务:

    Android 安装方法 - 图28

    • 使用命令行,adb connect 127.0.0.1:3333 即可。

    Android 安装方法 - 图29

    • 连接成功后,我们可以执行各种我们所需要的命令:

    Android 安装方法 - 图30

    FAQ

    1. 运行命令提示Permission denied

    请确保按照步骤开启了宽容模式

    1. 运行命令提示 No Such File

    请确保使用准备工作中建议的SSH工具,并正确配置了系统环境变量。

    1. Link Edge Lite 网络连接失败cannot resove url

    请确保正确配置了/etc/resolv.conf:

    1. nameserver 8.8.4.4
    2. nameserver 8.8.8.8
    1. 如何开机自启动

    用户修改 /etc/init.d/99SuperSUDaemon 文件,添加一行: bash /linkedge/gateway/build/script/iot_gateway_start_lite.sh {YourProductKey} {YourDeviceName} {YourDeviceSecret} 即可。

    注意,这个修改需要制作image时完成,开机启动后,该文件会被默认置为readonly状态。