首页 > 解决方案 > 如何在开源我的应用程序的同时仍然保持对这个应用程序正式版本发布过程的完全控制?

问题描述

我创建了一个新的 Flutter 移动应用项目,我想在 GitHub 上开源,但有一些敏感信息我不会公开,因为虽然代码本身会公开,但我仍然需要负责发布应用官方版本。

公开的代码当然会允许人们为开发做出贡献,但我不想冒险让任何人用我的密钥签署他们的应用程序的非官方版本并将其发送到商店,就好像它是我一样发布应用程序。另外,我想使用错误报告服务来跟踪应用程序错误,但我不想让访问令牌在应用程序的源代码上可见,否则任何人都可以复制此访问令牌并开始发送错误将被报告为从我的官方应用程序发送。

解决这个问题的最佳方法是什么?

我认为可以将敏感信息存储在一个私有存储库中,然后设置一个构建过程来查找私有存储库中的文件(只有我可以访问)。如果私有存储库在当前构建机器上不可用,则将使用一些占位符文本构建代码,这将阻止人们使用我的访问令牌对该服务进行身份验证。然后,贡献的开发人员将负责提供他/她自己的访问令牌或注释掉代码,只要在使用应用程序源代码时最适合他/她。

以上仍然只是一个想法,我不知道这是否是最好的方法,但我肯定需要一些方法来开源我的代码,同时仍然完全控制发布应用程序的官方版本。

有人有这方面的经验或想法来帮助我吗?

标签: githubversion-controlcredentialsrelease-management

解决方案


最简单的方法是在构建过程中使用某种配置文件或环境变量进行发布,默认为一些示例值。理想情况下,如果没有指定令牌,应用程序仍然可以正常工作而不会报告错误;这是通常的开发方法。

如果您使用 CI 系统,则可以将这些凭据存储在 CI 系统的机密存储中,并在您进行生产发布时使用它们进行构建和签名。


推荐阅读