4

我有一个 iOS 应用程序,有两个不同的版本,基本上一个是在 App Store 上发布(在线版),另一个是内部分发(离线版)。

我正在寻找的是在 GitHub 上发布我的代码的最佳方式,以便我将来可以轻松地更新这两个 Xcode 项目,因为两个版本只有一部分代码不同。

据我了解,分支被合并到“master”,但在我的情况下,两个版本都需要分开,只需要合并一些更改。

我试图为我的 GitHub 存储库创建第二个分支,但我不知道这是否是将两个项目一起更新的最简单方法,还是在 GitHub 上创建两个单独的存储库会更好?

感谢您的反馈意见!

4

2 回答 2

1

有几种方法可以实现您想要的。为不同版本的应用程序使用多个存储库或分支不是一个好的选择。代码库可能会随着时间的推移而出现分歧,并且变得非常难以维护。

为了解决这个问题,我们更喜欢在 XCode 中使用单独的目标配置。

创建应用程序新版本的最简单方法:

  • 复制当前目标
  • 将其重命名为“XXX 内部”而不是“XXX 副本”(可选)
  • 将捆绑标识符更改为与原始目标不同
  • 将“XXX copy-Info.plist”文件重命名为更好的名称,并从目标的构建设置中更改 Info.plist 引用(可选)

现在您可以从目标的配置窗格更改任何配置。

为了区分正在运行的应用程序的版本,您可以在目标的构建设置中定义宏(例如 FREE=1),或者您可以检查代码中的当前标识符、应用程序名称等来设置当前版本。

typedef enum {
    QWEAppStore,
    QWEAppStoreFree,
} QWEAppVersion;

#ifdef FREE
    #define QWECurrentVersion QWEAppStoreFree
#else
    #define QWECurrentVersion QWEAppStore
#endif

然后在您的课程中使用它,例如:

- (IBAction)buttonTapped:(id)sender
{
    if (QWECurrentVersion == QWEAppStore) {
        // Do something
    } else {
        // Do something else
    }
}
于 2013-05-23T15:39:40.180 回答
0

拥有两个 git repo 将很难管理。

典型的工作流程是有 3 个分支

主应用商店内部

当您进行代码更改时,您需要将其推送到 appStore 和内部分支。

这是一个示例项目,它在一个 git repo 中包含许多不同的发布版本

https://github.com/adaptivecomputing/torque

于 2013-05-23T13:47:22.753 回答