前提

  • 在windows系统中进行软件开发
  • 在windows下使用串口模拟器
  • 在windows下使用x86安卓模拟器进行软件调试
  • 面向arm安卓系统的触屏设备

有两种串口

  • rs232 串口
  • usb 串口

本文仅涉及rs232串口,其访问地址是/dev/ttyS*开头,开发中使用串口模拟器来模拟串口。
未找到模拟usb串口的办法,虽然实际开发中有用到,涉及到此部分时只能远程调试了。

安卓内置模拟器
使用如下两条命令来启用串口,并启用root权限。同时,实际使用中,开启串口通信后,非常容易导致安卓模拟器崩溃假死,更推荐使用genymotion。

  • emulator -avd Book_API_28 -writable-system -qemu -serial COM1
  • adb root && adb shell "setenforce 0"

genymotion
兼容arm端的转换,心智负担更小,编译时只启用arm平台即可正常调试。

  • 自带root
  • vbox分配端口
  • adb shell chmod777 ttyS0

function apiResource($router, $path, $controller, $name = null, $exclude = []) {
    $g = function ($method, $name, $pathExt = '') {
        return ['method' => $method, 'name' => $name, 'pathExt' => $pathExt];
    };

    $restfulMethods = [
        $g('get', 'index'),
        $g('get', 'show', '/{id:\d+}'),
        $g('post', 'store'),
        $g('put', 'update', '/{id}'),
        $g('delete', 'destroy', '/{id}'),
    ];

    foreach ($restfulMethods as $restItem) {
        if (in_array($restItem['name'], $exclude)) {
            continue;
        }

        $router->{$restItem['method']}($path . $restItem['pathExt'], [
            'as' => $name .'.'. $restItem['name'],
            'uses' => $controller .'@'. $restItem['name'],
        ]);
    }
}

修改自此Github Gist

七牛使用base64图片的形式上传,查看七牛原文,对其上传代码使用axios的进行了实现。

function qiniuUploadBase64 (dataUrl, saveKey = '', isFullName = false) {
  let baseStr = dataUrl.split(',')[1]

  const eqTagIndex = baseStr.indexOf('=')
  const baseSizeStr = eqTagIndex !== -1 ? baseStr.substring(0, eqTagIndex) : baseStr
  const strLen = baseSizeStr.length
  const fileSize = parseInt(strLen - (strLen / 8) * 2, 10) // fileSize 可直接写为 -1,省去计算步骤

  return axios
    .post(`https://upload.qiniup.com/putb64/${fileSize}/key/${btoa(makeSaveKey(saveKey, isFullName))}`, baseStr, {
      headers: {
        'Content-Type': 'application/octet-stream',
        Authorization: 'UpToken ' + mkToken(saveKey, isFullName)
      }
    })
}

有两点需要注意

  • fileSize 设置为 -1 其实更为方便
  • post请求的url中,携带了key参数,这样能保证覆盖上传而不返回错误

原配置文件备份

sudo cp /etc/apt/sources.list /etc/apt/sources.list_old

然后 VIM 打开,替换

:%s/security.ubuntu/mirrors.aliyun/g
:%s/archive.ubuntu/mirrors.aliyun/g

更新

sudo apt update