如何在Xcode中创建iOS应用的多个版本

您要创建同一iOS应用程序的多个版本,但会有些微差异吗?

对于我们的语言学习应用,我们确实遇到了这个问题。 我们有一个应用程序可以学习泰语,而我们希望使用同一应用程序的另一版本来学习汉语。

因此,这两个应用应具有以下差异:

  • 不同的应用名称
  • 不同的捆绑ID
  • 加载了不同的数据库(中文和泰语)
  • 不同的应用程序图标
  • 应用程序中的不同资产,例如图标和音频文件

让我们逐步解决这些问题。

1.为每个应用程序创建新的配置

首先,您需要为应用程序的调试版本创建一个新的配置,为应用程序的发行版本创建一个新的配置。

在Xcode中,通过在项目导航器中单击项目根文件夹来打开项目信息。 在左侧,选择您的项目。 确保在顶部选择“信息”。 在“配置”下,按“ +”以复制您现有的调试配置。 然后再次按“ +”以复制您现有的发行版配置。

对于我们的示例,我们将配置命名为“ Thai Debug”,“ Thai Release”,“ Chinese Debug”和“ Chinese Release”。

2.调整配置设置

现在,我们需要调整每个配置的设置,以反映两个应用程序之间的差异。

为了简单起见,我们直接在Xcode中更改设置。 (如果您想改用.xcconfig文件,强烈建议您先阅读本教程。)

更改捆绑ID:确保在项目导航器中选择了根文件夹。 在左侧,选择您的项目目标。 选择顶部的“ Build Settings”,并确保选择“ All”(相对于“ Basic”)。 搜索“产品包”。 在“产品捆绑包标识符”部分中,为不同的配置提供以下标识符:“ com.example.thai”(用于“泰国发行”),“ com.example.thai.debug”(用于“泰国调试”),“ com.example”。 “中文”表示“中文发行版”,“ com.example.chinese.debug”表示“中文调试”。

更改应用程序名称:再次,选择顶部的“构建设置”,然后搜索“产品名称”。 在“产品名称”部分,将名称更改为“ Learn Thai”,“ Learn Thai Debug”,“ Learn Chinese”和“ Learn Chinese Debug”。

创建用户定义的值:因为我们要将不同的数据加载到每个应用程序中,所以我们需要定义一个自定义变量,稍后我们将在Swift代码中访问该变量。

在“构建设置”中,单击“ +”,然后单击“添加用户定义的设置”。 我们将为新设置命名LANGUAGE_CODE,并为泰国配置命名为th,为两个中文配置命名为zh。

创建Swift标志:但这还不够。 为了使Swift能够读取我们的变量,我们需要定义Swift标志。 在“构建设置”中,搜索“快速标记”。 在“其他Swift标志”下,为您的所有配置提供以下值:-D $ {LANGUAGE_CODE}

现在,您应该可以在代码中为两种语言使用标记th和zh了。

3.阅读您在Swift代码中的设置

创建一个名为BuildConfig的新Swift类,如下所示:

 导入基础类BuildConfig { 
static var currentCulture:文化{
得到{
#if zh
回归文化
#elseif th
返回泰国文化
#万一
}
}
}

文化是一个包含构建参数的枚举。 从现在开始,您可以轻松地在代码中检查您的构建变体。 例如,您可以检查BuildConfig.Culture ==中文,然后从数据库中加载相应的数据。

4.完成-差不多了!

到目前为止,您的应用程序具有不同的捆绑软件名称和应用程序名称。 另外,您可以使用BuildConfig类直接在Swift代码中实现应用之间的差异。

现在,最好将不同的资源(例如启动图标,应用程序图标或音频文件中的资源)加载到每个应用程序中。

这有点棘手,我将在以后的教程中介绍。