3 分•作者: hal-eisen•6 天前
大家好,我是 Hal,App Dev for All 的首席技术官。我想分享一下我们过去一年解决的一个技术问题以及我们是如何处理的。<p>我们一直在构建 Code on the Go,这是一个功能齐全的 IDE,完全运行在 Android 手机上。不需要笔记本电脑,不需要 ADB 连接,也不需要云构建服务器。它使用 Gradle 在设备上本地编译项目,通过 LSP 支持 Java 和 Kotlin,并包含一个调试器,该调试器与正在测试的应用程序运行在同一部手机上。<p>最有趣和最具挑战性的部分最终是调试器。Android 操作系统具有严格的安全模型,这可能会妨碍传统的进程间通信。Android 调试假定 ADB,而 ADB 假定两台机器。我们完全绕过了 ADB,在启动时将 JDWP 代理附加到目标进程,并通过本地套接字将其输出路由到我们的调试器。我们使用了 Shizuku 项目的范围限定适配,以获得必要的系统访问权限,而无需 root 权限。<p>我们在 Code on the Go 上还遇到了一些其他技术挑战:草图到 UI(从手绘布局的照片生成 Android XML,使用 Yolo 完全离线运行),可选的 Gemini 驱动的编码代理(选择加入,需要您自己的 API 密钥),以及具有隔离类加载器的插件系统。<p>我们的一位预发布社区成员使用它在 Play 商店上构建并发布了一个僧伽罗语/英语键盘应用程序,完全在他的手机上构建。这成为了我们 Play 商店兼容性的测试案例。<p>我们是一个慈善项目。没有广告,没有跟踪,没有订阅。许可证是 GPLv3。<p>APK:<a href="http://appdevforall.org/codeonthego" rel="nofollow">http://appdevforall.org/codeonthego</a>
源代码:<a href="http://github.com/appdevforall/CodeOnTheGo" rel="nofollow">http://github.com/appdevforall/CodeOnTheGo</a><p>很乐意回答有关实施方面的问题。