如何开源我的应用程序,同时仍然保持对该应用程序正式版本发布过程的完全控制?

How to open source my app while still maintaining full control over this app official version releasing process?

我创建了一个新的 flutter 移动应用程序项目,我想在 GitHub 上打开它,但是有一些敏感信息我不会 public 公开,因为虽然代码本身会开放,我还是要负责发布app的正式版。

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

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

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

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

有人对此有经验或想法可以帮助我吗?

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

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