定制与分发

提醒

建议 Adapter >= 4.7.2, 否则做自定义修改时,可能会遇到一些稳定性问题

Adapter 目前支持用户二次分发, 希望提供给用户更多自由。

一种典型应用场景是开发者/教育者为用户提供定制化的 Adapter(包括Python社区第三方库、自定义 Adapter扩展、数据和内容)。

提醒

目前北京王府国际学校在使用的 codelab-adapter-4_4_1-AI-alpha 基于这个机制, codelab-adapter-4_4_1-AI-alpha 内置了 Cozmo SDK案例数据、Tensorflow、notebooks教程,目前由尚老师维护。

添加 notebooks

  • macOS
    • 将自定义的目录或文件,放置在 codelab-adapter-4_5_0-mac.app/Contents/Resources/app/codelab_adapter/notebooks
  • Windows
    • 将自定义的目录或文件,放置在 CodeLab-Adapter\src\app\codelab_adapter\notebooks

添加 扩展(nodes/extensions)

  • macOS
    • 将自定义插件,放置在 codelab-adapter-4_5_0-mac.app/Contents/Resources/app/codelab_adapter/nodes(或者extensions)
  • Windows
    • 将自定义插件,放置在 CodeLab-Adapter\src\app\codelab_adapter\nodes(或者extensions)

如何开发自己的扩展,可参考最佳实践, 你也可以浏览内置的扩展

添加 Python社区第三方库

参考安装第三方库

修改 UI

Adapter 的 WebUI 也是可以修改的。甚至可以自定义入口地址(通过修改hook文件: app_settings.py)。

UI 相关的文件放在 src 目录。

  • macOS
    • 将自定义插件,放置在 codelab-adapter-4_5_0-mac.app/Contents/Resources/app/codelab_adapter/src(或者extensions)
  • Windows
    • 将自定义插件,放置在 CodeLab-Adapter\src\app\codelab_adapter\src(或者extensions)

Debug技巧

你可以在Adapter运行的时候,打开Adapter 主目录,修改 src 目录(静态资源目录)里的文件,刷新页面即刻生效,修改完之后,再放入到Adapter软件包里

软件更新提醒

配置参数: LATEST_VERSION, 默认值是 https://adapter.codelab.club/about/latest_version.json。 是一个 json api 地址,软件在每次启动时会查询这个接口. 以下是一个例子:

{
    "version": "4.8.0"
}

增量更新

典型的用例是,用户安装过 Adapter 之后,可以动态更新软件和数据包,诸如新发布的 notebooks 课程或新插件,甚至对 UI 的升级,避免重新下载新的 Adapter ,这对于一些网络不便利的用户(学校、落后山区、部分机构)大有帮助。

配置参数: INCREMENTAL_UPDATE_PACKAGE 允许你使用自己的 codelab_adapter_client 发行版。

置于如何放置新的数据,可以参考 codelab_adapter_client 目录结构

FAQ

定制未生效

定制完后需要 更新扩展(下文),或者手动删除 Adapter 主目录

如何分发

Adapter 是绿色软件(免装),拷贝分发即可.

建议加上 自定义版本的哈希值,方便用户做安全校验。 参考Codelab Adapter下载链接

更新扩展

如果用户之前安装过Adapter,需要更新扩展

静态资源

如果你需要使用自定义静态资源(诸如图片),建议将其放到 src 目录里,之后引用它:

codelab_adapter_dir = pathlib.Path.home() / "codelab_adapter"
app_icon = codelab_adapter_dir / 'src' / "app.png"

代码安全

你可能不希望开放源码。

诸如你可能是一家硬件公司,不希望自家的sdk以开放代码分发。

有很多种做法,简单的做法是使用编译型语言(诸如Nim、C、Rust、Go...)写好sdk,放置在Adapter合适的目录里,然后在Adapter插件中调用它(FFI之类的机制)。

如果你希望总是工作在Python技术栈,可以试试 Cython,如果你希望在Adapter Python插件直接import 使用 Cython build后的文件,开发环境的Python版本请尽可能与Adapter宿主环境保持一致。

可以参考 brainCo 插件。

以上方法也适用于与加解密有关的项目,考虑到密钥可能被逆向,建议使用非对称加密。

优化软件包(清理碎片小文件)

进入软件包内部,清理缓存, 使下载和解压缩速度加快

find . | grep -E "(__pycache__|\.pyc$)" | xargs rm -rf