zhufucdev

向运动模拟器贡献代码

由Steve Reed发布于昨年8月27日 15:09,不列出

开始编写

克隆项目

从GitHub克隆项目源代码。

git clone https://github.com/zhufucdev/MotionEmulator

shell 代码

main为开发分支,在达到稳定后合并进stable。不接受提交至stable分支的拉取请求。

下载和配置Android Studio

这个项目十分激进。最新的Android Studio Cancary被用来编写和调试这个项目。你可以从Android Developers获得一份它的副本。请安装最新的编译工具和SDK。下表是经过测试的工具版本。

名称版本号
Android StudioAndroid Studio Iguana 2023.2.1 Canary 1
SDK Build Tools34
SDK Platforms34 revision 2
JDKAmazon Corretto 17

配置项目

用Android Studio打开克隆的项目。如果没有自动同步,点击右上角的Sync Project with Gradle Files按钮。

环境变量

在根目录下新建local.properties。所需字段如下表所示。

名称格式说明
sdk.dir文件系统路径
Android SDK文件夹根目录
amap.web.key32位十六进制数高德地图Web API密钥·文档
AMAP_SDK_KEY32位十六进制数高德地图Android SDK密钥·文档
GCP_MAPS_KEY/[a-zA-Z0-9_]*/谷歌地图SDK密钥·文档
我不想申请密钥

将各密钥值留空,可以通过编译。通常不建议这么做,除非你知道自己在做什么。

更新服务(可选)

运动模拟器主程序和模拟位置插件具有自检查更新功能。如果你希望发布自己的运动模拟器发行版,可自建服务器。在app和mock_location_plugin目录下创建server.properties。填入以下字段。

名称格式说明
PRODUCT无空格字符串用于自索引的项目ID
SERVER_URIHTTP URL服务器地址。项目使用的Ktor仅支持HTTP(S)协议。

要自建服务器,就要实现特定的RESTful API。参考我的实现。

zhufucdev/api.zhufucdev

代码规范及注意事项

在提交前,至少在推送前,请留意IDE的警告,特别是对冗余引入(unused import directive)的警告。

请保持提交的代码被正确格式化。统一使用4空格缩进。单行100字符。禁止大量无意义空行。

如果有破坏性更改(breaking changes),例如修改了stub API的参数,请修改或添加文档。

接受大规模重构,当且仅当新的实现更加规范或便于维护。

大规模重构

大规模重构,是指重新实现了应用框架,因为原先的框架不是最佳实践。前端的大规模重构可能是改变了主页面的整理方式。后端的大规模重构可能是重新实现了通讯桥。

单元测试

该项目对单元测试没有强制要求。仅在自动化比手动测试节约时间时编写和运行测试,例如进程间通信。该项目不以单元测试的通过率为标准评价拉取请求的质量。

界面设计

请遵循M3设计指南。尽可能使用Jetpack Compose编写新页面。UI美观,UX流畅、符合直觉。

请使用ViewModel或遵循其设计模式(designing pattern),注意资源回收、作用域和生命周期。

页面相关的文件,整理在.ui包下。一个Activity衍生的不同Fragment或Composable,整理在同一子目录下。

扩展函数

避免使用全局扩展。请使用DSL模式限制作用域。

Do
fun String.toInt(): Int {...}

kotlin 代码

Don't
fun parseInt(str: String): Int {...}

kotlin 代码

将相关的扩展整理在同一个文件。避免Utility.kt。

你的观点

留下你的评论,我是不会读的。

拉取请求

写得不咋样?你可以帮助改进这篇文章。

此网站受reCAPTCHA保护,因而Google的隐私权政策服务条款生效。

Copyright zhufucdev 2024