定制与分发¶
提醒
建议 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